You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.