Skip to content

v0.97.0

Choose a tag to compare

@github-actions github-actions released this 04 Jul 16:50
· 1077 commits to main since this release

Added

  • SynapsePersistentDeadLetters Prometheus alert — fires when
    synapse_dead_letter_targets stays above zero for an hour, catching a name
    left blackholed and undrained where SynapseDeadLettersGrowing catches only
    the passing miss. Meaningful now that the ledger ages quiet names out: a
    still-counted target is a genuine persistent gap. The honest live-path answer
    to "alert on dead letters" — the ledger is not journalled, so this rides the
    exported gauge, not the log-derived causal-health surface.
  • Session telemetry can name the coordination task it advanced — orchestrate_session,
    BusOrchestration.run, and emit_session_metric gained an optional task_id
    that rides each durable session_metric snapshot's body (the note's own
    task-id slot carries the session id, so the coordination task rides the body,
    omitted when empty). synapse participant costs and the report reader surface
    it, so a session's turns/tokens/spend can be read against the claim or board
    task it was working, not only its session. Backward compatible: empty leaves
    the body and every reader unchanged.
  • /health-anomalies.json dashboard feed — the honest hub-side alert surface:
    the orphaned, dangling, and stale coordination anomalies the causality graph
    makes visible (core.causality_health.run_causal_health), in the same JSON
    shape synapse causality --health emits, with an anomaly_count a cockpit
    alerts badge can show. Fired alerts stay collector-side off /metrics
    (Prometheus/Alertmanager); this is only what the durable log can prove —
    store-derived, deterministic (ages measured against the log's own final
    timestamp), available with the hub down; same --feeds-db posture as the
    other store feeds.
  • synapse dead-letters — a terminal view of the hub's dead-letter ledger
    (directed messages delivered to no live connection), worst blackhole first,
    with the exact syn inbox --as NAME drain remedy the doctor's addressee
    check emits. The ledger already rode in the state snapshot for the dashboard
    and cockpit; this brings it to a terminal operator too. Read-only, reuses the
    state request.
  • Dead-letter ledger age bound — DeadLetterLedger gained an optional
    max_age_seconds, and the hub applies a seven-day default: a target that has
    gone quiet past the bound is forgotten (expired on both record and
    snapshot) so a stale slot no longer shows as a live blackhole. A target
    that keeps drawing directed traffic refreshes and never ages out; the library
    default stays unbounded so existing callers are unchanged.
  • /merkle-proof.json?seq=N dashboard feed — serves an RFC 6962 Merkle
    inclusion proof for one event so a cockpit row's verify button can
    confirm the row is committed to the attested log's tree root, in the same
    JSON shape synapse debug merkle emits. Store-derived, deterministic, and
    available with the hub down; a seq the committed log does not hold returns
    {"present": false} with a note rather than a fabricated proof; same
    --feeds-db posture as the other store feeds.
  • /state-at.json?seq=N dashboard feed — reconstructs coordination state
    (claims + board) as of any event sequence by bounded replay of the
    durable log (core.journal.replay(up_to_seq=)), in the live-snapshot
    shape plus as_of_seq and log_end_seq. Store-derived and
    deterministic (judged against the bounded event's own timestamp, never
    the wall clock), so a cockpit can time-travel the whole fleet, not just
    the event log. Honest scope: presence/roster is not journalled and is
    omitted; seq is clamped into range; same --feeds-db posture as the
    other store feeds.
  • The dashboard's --cockpit-dist static server now serves
    .webmanifest (application/manifest+json) and .webp, so the
    cockpit can ship a web-app manifest and modern icons — the server-side
    enabler for an installable, mobile-responsive cockpit PWA.

Changed

  • Commercial pricing documentation reconciled to a single value-ladder
    (Community, Commercial Licence, Pro, Team, Business / Enterprise) priced in
    USD; the retired pay-what-you-want tier is dropped from docs/commercial.md,
    COMMERCIAL-LICENSE.md, and the README.