Catalyst Dev — Change Log
Version 10.4.0 (2026-05-31)
Deterministic Worker Lifecycle Engine
The revive-storm guard stack — roughly 14 heuristic dampers that tried to guess whether a worker was dead — is replaced by three deterministic primitives: an atomic single-flight claim with fencing tokens, a state.json death trigger that reads local lifecycle state instead of the eventually-consistent claude agents snapshot, and a progress probe that stops futile respawns by checking whether a worker actually made commits or produced output before deciding to revive it. Separately, per-step model, effort, and preamble overrides are now live in dispatch via a small rules engine in the workflow descriptor, so large or epic tickets can launch the plan worker with max effort and a different model while every other case stays byte-identical to before. The board real-time client also shifts to a SharedWorker with an IndexedDB cache, cutting upstream SSE connections to one per browser instead of one per tab.
Features
- dev: atomic single-flight worker claim + fencing token (CTL-736 Phase 1) (#1235) (d09fb2b)
- dev: board SharedWorker + IndexedDB real-time client (CTL-733 PR-2b) (#1242) (4a76d27)
- dev: CTL-736 Phase 2-3 — state.json death trigger + progress probe (retire the revive-storm guard stack) (#1245) (0a0624a)
- dev: per-step conditional levers — model/effort/preamble in dispatch (descriptor v1.1) (#1239) (673bdc1)