Skip to content

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)

Bug Fixes

  • dev: clear verify/remediate claim tombstones on cycle reset (CTL-736 GATE-0) (#1237) (5c50ded)