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
The CLI no longer aborts with UnicodeEncodeError on a non-UTF-8
console (Windows cp1250 and friends): the entry point reconfigures
stdout/stderr to UTF-8, so the arrows, bullets, and sparkline glyphs
the commands print survive a legacy code page instead of crashing the
whole command. Found on the first Windows run of synapse doctor;
harmless where the streams are already UTF-8.
Added
synapse causality health --since TS — bound the scan to recent
events on a large log, mirroring the trust graph's --since; a task
whose entire recorded lifecycle predates the window is not assessed,
and a window-straddling task is judged on the window's evidence only.
synapse benchmark --trend --export-csv FILE — the stored history as
long-format CSV (one row per metric value, context columns on every
row) for spreadsheets and external monitors.
The README now points at the cockpit build instructions and documents
the state snapshot's dead_letters section.
Log-derived signals reach Prometheus through the node_exporter
textfile collector: synapse reliability --textfile FILE and synapse causality health --textfile FILE write the reliability
findings and causal-health anomalies as valid labelled exposition
(synapse_reliability_findings{kind}, synapse_causal_health_anomalies {shape}), deterministic over a given log and parsed back by the
Prometheus client in the suite so node_exporter never rejects one.
Two alert rules ship with the observability bundle, and docs/observability.md documents the analytics plane landing beside
the live counters — evidence gauges, not grades.
The WASM sandbox gained an adversarial proof battery and run
attestation. tests/test_wasm_sandbox_escapes.py drives a hostile
module past every limit — memory bomb, fuel bomb, wall-clock runaway,
a reach for a host syscall, a reach for the network — and asserts each
is contained by a mechanism (an undefined import cannot link; a grow
past the cap is refused; the epoch timer interrupts a fuel-free loop),
not by the tool's good behaviour. synapse sandbox run --attest DB
appends the run receipt to a durable event store as a sandbox_run
event, auditable through synapse event-query and replay without the
tool's bytes ever entering the log. docs/sandbox-threat-model.md
states what is denied by what mechanism and what is out of scope.
An observability provisioning bundle under integrations/observability/: a Prometheus scrape job, six alerting
rules over the decision counters (hub down, dead letters growing,
denials outpacing grants, auth failures, takeover quarantine,
federation denials), and a committed Grafana dashboard — import,
pick the datasource, done. A drift-guard test pins every metric name
the bundle references to the registry, so a renamed metric fails the
suite instead of silently emptying a panel. docs/observability.md
walks the five-minute setup and states the plane boundary: /metrics
is the live process deciding, the store feeds are log analytics.
The hub's /metrics endpoint grew from 8 to 21 metrics: decision
counters wired at the decision sites — claims granted/denied, releases,
directed and broadcast chat, per-message auth failures, rate-limit
rejections, federation-gate denials, waiter takeovers and their
quarantines — plus live gauges for connected -rx waiters and the
dead-letter ledger (targets and letters). Each increment is one integer
addition in the message path and a scrape stays I/O-free, so an alert
rule can now see the hub deciding, not just existing.
/metrics.json dashboard feed — store-attested log metrics for the
cockpit's metrics panel (total and per-kind event counts, plus the same
split over trailing hour/day windows), measured against the log's own
final timestamp so the document is deterministic and replayable; same --feeds-db posture as the other store feeds (available with the hub
down, 404 unconfigured, 503 fail-visible), and the document itself
states that the live process registry remains the hub's own /metrics
endpoint.
synapse doctor --notify-cmd CMD — pipe any warn/fail findings to an
operator sink command (one line per finding with the remedy attached,
hub URI in SYNAPSE_DOCTOR_URI), turning diagnostics into proactive
alerts; a healthy run sends nothing, --fix pages the post-repair
state, --json composes (stdout stays one document), and the sink is
best-effort under the same no-shell contract as cross-repo --notify-cmd.
synapse lock --release-timeout SECONDS — tune how long the exit is
held for the hub's release confirmation on slower links; the wait
stays bounded either way and the lease TTL remains the backstop.
Distinct from --wait-timeout, which bounds acquiring the lease.