Skip to content

Catalyst Dev — Change Log

Version 12.54.1

Aug 14, 2026

Event Pipeline Integrity Fixes

This release addresses a cluster of reliability issues in the event pipeline: torn lines from concurrent bash appends, degenerate records destroyed in transit to Loki, double-counted drop metrics, and terminal events that went invisible to the worker-state projection when the primary emit path failed. Dependency installs that silently no-op’d after a transitive resolution change — leaving daemons running stale code — now detect the skew and force a relink. The commits-behind gauge is also fixed to measure the roots daemons actually run from rather than always reporting zero.

PRs

  • dev: CTL-1659 — a dependency fix that lands on main must reach the running cloud-sync writer (#3344) (1ce1c5a)
  • dev: CTL-1795 — dual-emit the v2 envelope from every v1 site, so a consumer filtering on event.name stops seeing a smaller universe (#3343) (b724db9)
  • dev: CTL-1809 — make a bash event append exactly one write(2), so a concurrent producer cannot splice two events into one line (#3350) (388edf4)
  • dev: CTL-1814 — stamp the orchestrator on fallback terminals, so worker state is not blind exactly when the primary path failed (#3342) (a834c9a)
  • dev: CTL-1817 — carry every envelope shape off-machine, so a rescue escalation is not destroyed in transit (#3325) (d14e477)
  • dev: CTL-1818 — count the events the forwarder throws away, on a surface that survives the throwing-away (#3341) (e60321f)
  • dev: CTL-1823 — count degenerate RECORDS at batch accept, so the detector cannot inflate during the outage that makes someone read it (#3347) (2e6cc71)
  • dev: CTL-1825 — measure code currency at every executing root, so a 24-behind node cannot report zero (#3345) (e4401a6)
  • dev: CTL-1831 — prove the install RELINKED, so a merged lockfile is not installed in name only (#3349) (3f60190)
  • dev: CTL-1832 — a triage escalation must carry its question, not an empty object (#3340) (0e92516)
  • dev: CTL-1835 — close the four residual gaps from #3349, and prove each closure (#3353) (725922a)