Skip to content

v0.89.0

Choose a tag to compare

@github-actions github-actions released this 02 Jul 13:17
· 1186 commits to main since this release

Added

  • synapse benchmark measures the installed package on the operator's
    machine: probes for durable event-store appends, journal replay, lite
    relay encoding, and who plus claim-to-grant round-trips over a real
    loopback WebSocket hub, each reporting throughput and p50/p95 latency.
    The scorecard carries the host context — package version, interpreter,
    CPU model and governor, load averages before and after — and an explicit
    shared-workstation isolation label, so the numbers read as regression
    evidence, not as isolated-core production claims. --probe selects a
    subset, --iterations overrides defaults, --json emits data, and
    --results FILE writes the scorecard to disk.
  • synapse cross-repo widens coordination from one repository to a whole
    checkout tree: it scans every repository under a root directory for
    dependency manifests (pyproject.toml, Cargo.toml, package.json,
    go.mod) and CODEOWNERS files, composes them into a graph of dependency
    and shared_owner edges, and joins the live claims of a hub event log onto
    it (a claim's worktree is its repository). With --repo the exit code
    becomes a coordination signal — 1 when a live claim exists in a
    repository connected to the focus by a dependency edge — and --json and
    --dot emit the graph as data or a Graphviz digraph. Manifests that exist
    but cannot be parsed are reported as problems rather than silently
    skipped. Declaration-level, advisory evidence only.
  • synapse trust-graph queries the durable event log as an evidence graph,
    realising the agent-trust-graph design's read-only projection: typed edges
    between agent and task nodes — positive release receipts, stale claims,
    declared failed checks, broken handoff candidates, and one agent-to-agent
    edge per reconstructed conflict pair — each carrying the event-log sequence,
    timestamp, and evidence fields that created it. --agent, --task, and
    --since (a decay window) focus a review; --json emits the graph as data
    and --dot as a Graphviz digraph. Evidence with provenance, not scores: no
    ranking, no grades, no authorisation.
  • HubConfig groups the forty-odd SynapseHub keyword parameters into typed,
    frozen family records — HubLimits (every enforced ceiling),
    TakeoverDamping, HubAuthConfig (connection, per-message, and ACL
    enforcement), HubMetricsConfig, MultiHubConfig, and FederationConfig
    and SynapseHub.from_config(config) builds a hub from the record.
    Behaviour is identical by construction: every field name and default
    mirrors its keyword parameter, contract tests pin the flattened record
    against the live signature so the two surfaces cannot drift, and the flat
    keyword surface and every CLI flag remain unchanged.

Changed

  • import synapse_channel now resolves its public names lazily (PEP 562):
    the submodule behind a name is imported on first attribute access, cutting
    the bare package import from roughly one second to under ten milliseconds
    while keeping __all__, every re-exported object, and type-checker
    visibility identical.
  • The synapse CLI registers subcommands lazily: main reads the requested
    command off argv and imports only the module family that owns it, so a
    short call such as synapse who or synapse merkle root no longer pays
    the import cost of the whole surface (local commands start in roughly a
    quarter of the previous time). --help, --version, and unknown commands
    still build the full parser, and contract tests pin every registration
    unit to the exact commands it provides and to help output identical to the
    full build.

Added

  • synapse status --watch refreshes the one-line hub summary every
    --interval seconds (default 2) as an operator dashboard. Each refresh
    opens its own probe connection, so a hub restart shows as an honest offline
    line; a TTY rewrites the line in place while piped output appends one line
    per refresh, and --json --watch streams one JSON object per line (NDJSON).
    --count N bounds the refreshes; Ctrl-C stops an unbounded watch cleanly
    with exit 0, and the bounded form exits with the last observed state.
  • synapse workflow contention joins a declarative workflow to the durable
    log: it compiles the workflow to its task ids, runs the same offline
    yield-advice analysis as synapse causality contention, and keeps only the
    overlapping live-claim pairs a workflow task is party to — whether it keeps
    or yields. Pairs outside the workflow are counted in a trailing note; the
    exit code signals scoped collisions only (0 none, 1 at least one, 2 on
    an invalid workflow, a missing store, or the node ceiling).
  • synapse participant convene --dry-run prints the convocation plan without
    taking a single turn: the resolved mode, its round count, and each seat's
    identity, readiness, planned turns, and estimated cost from an
    operator-supplied --pricing table under printed per-turn token assumptions
    (--est-input-tokens/--est-output-tokens). Seats without a price line are
    reported unpriced and excluded from the total; with --budget-usd the report
    states whether the estimate fits. Exit 0 when every seat is ready, 1 when
    any is unavailable, 2 for a refused configuration.
  • The repository root now ships a composite GitHub Action (action.yml)
    wrapping synapse policy-check, so a repository can gate CI on a release
    receipt — optionally recomputing the Merkle commitment and requiring a
    trusted hub signature — with a single uses: step. Inputs reach the shell
    through environment variables, never script interpolation; the decision
    report is exposed as the report step output.
  • The synapse causality contention documentation gained a worked two-agent
    example with real command output, showing how downstream weight picks the
    yielder and how a tie falls back to first-come precedence.
  • synapse participant costs reads opt-in session telemetry back from a hub
    SQLite event store — offline, like synapse accounting report — and prints
    the latest cumulative snapshot per (agent, session) (turns, errors,
    abstentions, token pressure, metered spend, mean latency, highest rate-limit
    utilisation seen) plus fleet totals, or the machine-readable report with
    --json. Where the accounting report answers what models cost, this answers
    how participant sessions are going and what they spent; a missing store
    refuses with exit 2.