Repository navigation
v0.3.0 - Chat-driven patch apply, overlord autonomy, registry-authoritative routing
What's new in 0.3.0
Added
Chat-driven worktree patch apply (WAP)
- Chat can now propose and apply a patch directly against a stuck story's
worktree: origin-gated propose/apply routes distinguishing chat from UI
callers, unified-diff parsing with size/path/whole-file-replacement limits,
an in-memory patch-record store with a TTL and an HMAC token bound to the
patch id and diff hash, a plan-locked atomic apply engine restricted to
stuck stories, and every propose/apply journaled and notified with a
correlation id (never diff content). A dashboard UI renders the stored
diff and requests apply with a UI-origin header, and an end-to-end test
suite covers the full propose/review/apply path (#750, #752, #753,
#756-#761, #766, #768-#770, #772, #773).
Overlord parked-story autonomy
- The overlord can now rule on parked stories under a documented decision
matrix and autonomy-mode ladder, informed by a live git-state probe and a
fail-closed SPLIT payload parser. It executes its own rulings directly -
split_storycreates child stories in the manifest,mark_donecorrects
the story record from live evidence,patch_acceptancerewrites a
diagnosed-broken fixture through validation - and adjudicates high-risk
merges itself in full-autonomy mode, with every executed action recorded
in the decisions log alongside its prior state (#736-#738, #740,
#742-#745, #747).
Registry-authoritative provider/model routing
- An interactive picker (
scripts/choose_providers.py) lets an operator
choose each role's provider from the command line, and the
getting-started smoke now announces and runs on the actually-resolved
dispatch provider instead of refusing everything butclaude(#795-#800). resolve_roleis now the single source of truth for dispatch and
escalation backend resolution: registry roles outrank
PIPELINE_BACKEND_<ROLE>, which becomes an empty-state fallback rather
than an override, preflight reports the registry-aware resolution, and
the launchd templates stopped shipping routing env vars now that the
registry is authoritative (#801-#807).
Dashboard & Comms chat
- The Comms chat panel renders markdown (bold, lists, code) while keeping
the raw transcript export (#731, #734, #735), and dashboard plan lists
can be filtered to the active repository with an all-repos toggle,
backed byrepo_rooton plan summaries (#732, #733). A plan-ingest panel
was added to Comms so a plan can be ingested from the dashboard UI
without a chat-origin route, sinceingest_planis unreachable from
chat by design (#782-#784, #787, #788).
One-line install & public-readiness
scripts/remote-install.sh(curl -fsSL ... | bash) clones or updates a
fixed local checkout and runsinstall.sh; README/CLAUDE.md gained the
community-health files and fixes needed for public visibility; and the
launchd plist/template files and generator were renamed from
com.claude.pipeline.*tocom.fagan.pipeline.*end to end, including
runtime label references (#779-#781, #785, #786).
Fixed
Merge-park & CI-evidence correctness
- A story parked by the merge gate is no longer offered to triage as a
candidate, an unreadable or in-flight CI status is never presented to the
overlord as "no PR checks," a parked high-risk merge hold is
re-adjudicated when its recorded evidence changes, CI evidence gathering
now probes the story's real branch instead of a stale one, and high-risk
merge adjudication records name the story instead of leaving it implicit
(#751, #754, #755, #762-#765, #767, #771).
Scheduler reconcile resilience
- The scheduler process's per-call model budget is now clamped inside the
reconcile join deadline, and the abandon-restart escape hatch is driven
by whether the abandoned worker is actually still alive rather than a
resettable streak counter (#739, #741, #746).
Chat streaming
- Fixed a duplicate reply bubble on the server's reply+result frame pair,
stopped dropping the user's message and prior turns from the prompt
across tool round-trips, and widened stall detection to catch
attribute-style[TOOL_CALL name=...]openers (#774, #777, #778).
Getting-started smoke hardening
- The smoke now drives through the real
ingest_planpath against a
scratch repo with a real origin and a success bar scoped to
tests_passed, rejects a malformed acceptance entry at ingest instead of
crashing, resolves its announced dispatch backend throughresolve_role,
and its subprocess-spawning tests no longer leak the developer's real
.pipeline.envinto the child process (#791-#794, #808, #809).
Local dispatch reliability
- An in-flight local-backend story is no longer interrupted on local memory
pressure (#790).
Test infrastructure