Skip to content

0.20.0 — fleet-wide liveness: supervised + wake-path watchdogs, remote receiver/agent health, mesh fleet

Choose a tag to compare

@husker husker released this 01 Aug 23:20
· 16 commits to main since this release

Fleet-wide liveness truth: every stall mode of a receiver is now detectable, most are auto-recovered, and each node's health is visible from every other node — plus two receive-path crash-class fixes. All new presence fields (recv/agent/wake) are additive, advisory, and display-only; older peers ignore them and read as "unknown" (mixed-version-safe).

  • #158/#164watch --supervised stall-watchdog: a supervised receiver with a stale heartbeat recovers itself (close-response, then os._exit under a KeepAlive restarter).
  • #166/#167 — presence carries receiver-health: pong/ack frames stamp the sender's own recv: healthy|stalled.
  • #169mesh fleet: read-only fleet health table (last-seen, posture/status, RECEIVER/AGENT columns).
  • #170/#171 — agent-liveness heartbeat: distinguishes a live agent from a bare watcher; propagated as a raw agent: active|idle column.
  • #173/#175 — receive-path type-gating: crafted authenticated frames carrying non-strings where state strings are expected can no longer crash the receive loop.
  • #158/#176 — wake-path watchdog: detects deliveries buffered while no agent drains them; SIGTERMs a positively-identified wedged defer-mode hook (relay/unknown-mode holders never touched, pid-reuse guarded) so the wake path re-arms; surfaces the unarmed case via classification logs, mesh status, and a wake: ok|stalled presence key.
  • #168 — no session URLs in the public record (repo attribution kill-switch + CLAUDE.md hard constraint).

See CHANGELOG.md for detail. Upgrade nodes with pipx install --force a2acast (or your install method) and restart long-lived mesh processes to cycle onto the new code.