v0.88.0
Added
-
The Participant Fabric gained its operator surface:
synapse participant list
reports each registered provider driver's readiness (claude, codex, kimi, ollama,
ollama-api, grok) without taking a turn, andsynapse participant askruns exactly
one turn against one provider and prints the answer — or the full typed turn result
with--json. Grok turns are refused while its stream schema remains unverified
against a real binary. -
The participant surface gained the Fabric's deliberation layers:
synapse participant exchangeruns an opener turn and a reactor turn that sees the
opener's result only as fenced peer data, andsynapse participant convenefans a
question out to a panel named asPROVIDER[:MODEL]seats, runs the conversation
mode's cross-critique rounds (--mode autoselects colloquy, roundtable, or
symposium from the panel shape), and in a symposium ends with the moderator's
synthesis. Both print each turn as it is produced — or the full typed transcript
with--json— and honour a cumulative--budget-usdceiling. -
Release receipts' coordination-log commitments can now carry hub-key provenance:
synapse merkle keygengenerates the hub deployment's Ed25519 receipt-signing
keypair (owner-only private key, distributable.pubwhosekey_idis derived
from the key material),synapse verify-release --signing-keysigns the Merkle
commitment intoverification.merkle_signature, andsynapse policy-check --trusted-signing-keyadds amerkle_signaturedecision so a verifier holding
only the receipt and the.pubfile learns which hub attested that exact log
state — no access to the live log required. Verification is deny-by-default: a
tampered root, an untrusted or transplanted key, a malformed envelope, and a
signature with no commitment to cover all fail; only an unsigned receipt reads
not_applicable. -
synapse causality contentionweighs every pair of overlapping live claims —
different owners, same worktree, intersecting path scopes — by what each
contender's task gates downstream (causal descendants of its recorded events
plus pending declared dependents, transitively) and recommends which agent
yields; on an equal count the later claim yields. Advisory only: no claim is
preempted, and the exit code doubles as a collision signal (0no overlap,
1at least one pair). -
synapse status --jsonandsynapse doctor --jsonemit their counts and
verdicts as machine-readable JSON for monitoring scripts and CI health gates;
doctor --jsonis a plain diagnostic and refuses the mutating and checklist
flags so stdout stays one document. The install guide now surfaces
synapse completionsandsynapse install-shell-hook.
Fixed
- Both multi-hub transports now decode peer-hub replies with the same
depth-bounded JSON loader the hub applies to its own inbound frames, so a
deeply nested reply from a malicious or compromised peer fails the poll (or
refuses the forwarded claim) instead of recursing through an unbounded parse. - The federation gate no longer downgrades a frame signed with a peered key to
local processing when the connection presents no pinnable certificate — a
plaintext socket or a certificate read that fails now denies such a frame
outright, because the cross-domain authority its key claims can only be bound
by a live pin. Frames signed with purely local keys are unaffected.