fix(chief-loop): author follow-up tickets instead of routing to chief-plan Phase 3 - #20
Open
mildronize wants to merge 2 commits into
Open
mildronize wants to merge 2 commits into
mildronize wants to merge 2 commits into
Conversation
mildronize
force-pushed
the
design/v5-ai-workflow
branch
from
September 13, 2026 17:39
3767baa to
2c304f4
Compare
…-plan Phase 3 chief-loop's own rule says it never stops for human input, but its documented fallback for "frontier empty, goal not yet met" sent it to chief-plan Phase 3 — which has a hard approval gate. That silently violated the never-stop rule the moment planning turned out to be incomplete (confirmed against a real run: tickets 6-13 resolved, ticket 14 blocked in spirit by two undocumented-until-now gaps tickets 7/11 had already flagged, and the loop paused to ask instead of continuing). chief-loop now authors the missing ticket(s) itself in that case, same shape chief-plan Phase 3 already uses, and keeps going — no cap, no other in-loop check, since whether a story is well-specified enough to run unattended is loop-readiness's job before the loop starts, not chief-loop's job mid-run. Handling Ambiguity (mid-ticket decisions) is unchanged. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0114nFLVGyyskAhCZEQV5BrH
Found while designing the chief-loop fix (this same PR): loop-readiness had no dimension asking whether a plan has a step that needs a human present or deciding, independent of environment-safety. Its closest existing check (real-environment write-scoping under Feedback) wouldn't catch a step that only writes to a copy of real state but still needs a human watching it. Kept fully generic — no chief/ticket-specific vocabulary in this file. The recommendation is domain-agnostic: keep the step outside whatever mechanism the loop uses to select its own work, since flagging it alone has no effect once the loop is actually running unattended. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0114nFLVGyyskAhCZEQV5BrH
mildronize
force-pushed
the
fix/chief-loop-self-author-tickets
branch
from
September 14, 2026 03:07
525dc1d to
e8c2933
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
chief-loop's own rule says it never stops for human input, but its documented fallback for"frontier empty, goal not yet met" sent it to
chief-planPhase 3 — which has a hard**STOP.** Wait for explicit approval before delegating to /chief-build. That silentlyviolated the never-stop rule the moment planning turned out incomplete.
Confirmed against a real run: tickets 6-13 resolved and verified, ticket 14 technically
unblocked, but two gaps tickets 7/11 had already flagged in their own reports meant attempting
it would fail — and the loop paused to ask instead of continuing.
Change 1: chief-loop authors its own follow-up tickets
chief-loopStep 3 ("Check for story completion"): when the goal isn't met after thefrontier empties, it now authors the missing ticket(s) itself — same shape
chief-planPhase 3 already uses (vertical-slice,
Blocked bywiring, numbered continuing from theexisting sequence) — instead of routing back to Phase 3's approval gate.
chief-loopstill doesn't originate a story's first ticket batch from nothing —only follow-up tickets once real execution reveals a gap in an existing batch.
no other in-loop convergence check on self-authored tickets — whether a story is
well-specified enough to run this way unattended is
loop-readiness's question to answerbefore starting, not something this skill re-litigates mid-run.
Handling Ambiguity(mid-ticket decisions) is unchanged — evidence from the same real runshows a ticket that hits a gap but can still finish its own scope should just finish and note
the gap in its report, not trigger this new path itself.
Change 2: loop-readiness checks for human-required steps
Designing change 1 surfaced a gap:
loop-readiness(generic, no chief-specific knowledge bydesign) had no dimension asking whether a plan has a step that needs a human present/deciding,
independent of environment-safety. Its closest existing check (real-environment write-scoping
under Feedback) wouldn't catch a step like ticket 14 — human-supervised by contract, but only
ever writing to a copy of real state, so it could pass that check anyway.
Added to DoR (2.1) and Step 3's recommendation examples, kept fully generic (no
chief/ticket-specific vocabulary in the file itself): if such a step exists, recommend keeping
it outside whatever mechanism the loop uses to select its own work automatically — a note that
"a human should be involved" has no effect once the loop is running unattended unless the step
is structurally excluded from what the loop can pick up on its own. (Chief's own concrete
application of this — not converting that step into a
Type: implementationticket — isdeliberately not written into this generic skill.)
🤖 Generated with Claude Code
https://claude.ai/code/session_0114nFLVGyyskAhCZEQV5BrH