Catalyst Dev — Change Log
Version 12.49.0
Aug 08, 2026
Escalation Durability & Premature Done Guards
Escalations now survive GC via a durable per-ticket store, so Needs-You cards no longer vanish when a ticket goes terminal. Three independent guards close the false-Done/false-advance family: a dispatch freshness gate, a live GitHub merged check in teardown, and a PR-merged gate in the scheduler’s terminal Done writer. Worker nodes can also now set CATALYST_DRAIN_DISABLED=1 to permanently ignore drain requests, emitting a node.drain.ignored tripwire event instead of silently halting new-work admission.
PRs
- dev: CTL-1473 — codify four laptop-audit failure modes (#2638) (0783e71)
- dev: CTL-1494 — wire coordination-publish into catalyst-stack lifecycle (#3066) (6f3f5df)
- dev: CTL-1502 — stuck-but-alive daemon watchdog (detect + auto-restart wedged otel-forward) (#2703) (5c6c02f)
- dev: CTL-1552 Phase 1 — parked-by-human label + isParkedByHuman reader (#2791) (0b561cd)
- dev: CTL-1606 — persist PR status from webhooks; fix board-health phantom/orphan detection (#2878) (43f6ee0)
- dev: CTL-1643 escalation durability — verified-or-loud labels + GC-surviving attention store (#3009) (13e06a2)
- dev: CTL-1645 add canonical onboarding planner (#3001) (28f9092)
- dev: CTL-1667 — root fix for premature Done / monitor-deploy false-advance family (#3061) (c27dedd)
- dev: CTL-1668 coordination-publish cloud endpoint wiring + ADR-023 parity harness (#3105) (2640720)
- dev: CTL-1678 — worker nodes can permanently ignore drain requests (#3073) (d9bd6c6)
- dev: CTL-1081 make match_thoughts_artifact shell-agnostic (zsh/shopt bug) (#3108) (bcafa4f)
- dev: CTL-1415 — age-gate and auto-clear a stale plugin-source .git/index.lock (#2530) (2740458)
- dev: CTL-1660 defer P2+ automated-review findings after round one (#3035) (b5592bb)
- dev: CTL-1680 Phases 2+3 — confirm merge SHA + reviewer-arrival window (#3079) (3850648)
- dev: fenceGuard fails OPEN on a missing generation at the terminal-sweep needs-human escalation site (#3048) (522e178)
- dev: isTicketInFlight supersede guard for stale phase signals (#3081) (6accd27)
- dev: remove hardcoded org name from provision-thoughts convention (#3080) (9cea441)
- execution-core: close two remaining codex-exec thoughts-symlink escape gaps (#3098) (00374f1)
- execution-core: codex-exec thoughts symlink resolution + no-progress escalation count (#3082) (4d672d5)
- execution-core: preserve 0600 on Layer-2 config across autotune write-back (supersedes #3074) (#3106) (5369b6f)