Loop Level ZFC
Overview
This is the task-specific evolve loop for the level-up ZFC migration in this repo.
It is not a generic observer. It must drive the cleanup-first roadmap, steer AO workers, record interventions, and keep the PR stack aligned with the canonical design.
Run this loop on a 30-minute cadence by default unless the roadmap or operator explicitly requires a shorter interval.
When #6420 or #6404 is active and not yet demonstrably on-track, treat them as fast-watch lanes and re-check their worker tmux panes and PR state every 5 minutes until they are either truly on-track or explicitly escalated out of AO.
Use this with the canonical design and nextsteps docs:
roadmap/zfc-level-up-model-computes-2026-04-19.md
roadmap/evolve-loop-findings.md
Operator-specific overrides (only if present):
~/roadmap/zfc-level-up-model-computes-2026-04-19.md
~/roadmap/nextsteps-2026-04-19-level-up-zfc.md
Non-Negotiable Goals
- Keep the work aligned to the actual roadmap.
- Start every cycle by re-reading the official roadmap docs and a memory source; do not rely on stale conversational recall.
- Cleanup/deletion is the highest priority.
- Do not let side-lanes count as core ZFC progress.
- Use at most 5 parallel workers total across core lanes and valid support lanes.
- Record every manual intervention and why it was needed.
- Never end a cycle with roadmap work unowned. A cycle must explicitly decide what happens next.
- No roadmap lane counts as complete until it is truly 7-green under
~/.claude/skills/pr-green-definition.md.
- Production-code PRs require full evidence discipline; only non-production PRs may skip video evidence.
- Prefer parallel subagents/workers whenever the work is genuinely independent and materially useful.
- Every worker must be driving its assigned lane or PR to an explicit finish bar, not merely classifying the state.
- For production PRs, conflicts and serious GitHub review blockers come before everything else.
- After conflicts/serious blockers are cleared, evidence comes before polish. Do not spend cycles polishing comments or green-loop churn on a PR that still lacks a solid evidence bundle.
- For production PRs, generate video evidence first, then get a skeptic-style verdict on the evidence/gate story before spending time on polish.
- Every cycle must inspect open PR reality, not just remembered queue state; if the roadmap needs a new PR-shaped lane, create or assign it in the same cycle.
- Do not treat a worker as active just because its tmux pane exists; a pane stuck in repeated
Continue working... prompts is a waiting-state failure until explicitly corrected.
- Do not treat stale review summaries as truth; always verify fresh current-head review state, unresolved threads, and evidence comments before declaring a lane done or review-only.
- Every related open ZFC PR must carry the GitHub label
zfc_level; audit and repair missing labels in the same cycle.
- Do not call a PR 7-green or merge-ready from check runs alone; verify current-head issue comments for fresh
/smoke, /er, evidence-required, or bot-reported failures that can invalidate the green story.
- Trust hierarchy for cycle decisions is: current-head PR state first, tmux conversation second, AO status last.
- Do not let a worker spend more than one cycle in pure bot-rereview or stale-review argument loops without fresh branch movement.
- A waiting pane must be repurposed, explicitly parked, or closed in the same or next cycle; do not carry it as fake active capacity.
Queue Source Of Truth
Do not treat this skill as the queue authority.
Rebuild the active queue every cycle from:
~/roadmap/zfc-level-up-model-computes-2026-04-19.md
~/roadmap/nextsteps-2026-04-19-level-up-zfc.md
- current open related PR state
If the roadmap docs and live PR reality disagree, record the mismatch and make an explicit ownership decision in the same cycle.
Parallelization Model
Do not confuse:
- active merge lane: the roadmap item currently allowed to advance toward landing
- support lanes: parallel work that helps the active merge lane without violating sequencing
- execution mode: whether a lane should run as an AO worker or as a parallel subagent task
Execution-mode rule:
- PR-shaped work defaults to AO:
- code changes
- test fixes
- CI/review follow-up
- conflict resolution
- evidence generation that must land on a branch/PR
- non-PR cognition work defaults to parallel subagents:
- roadmap synthesis
- skeptic/audit review
- supersede/park planning
- keep/drop analysis
- postmortem / harness diagnosis
- artifact drafting that does not yet need branch state
Do not force AO workers onto pure cognition/planning tasks when a subagent can produce the artifact faster and with less workflow drift.
Promote a non-PR subagent result into an AO worker only when it becomes a real branch/PR task.
For this project, parallel support work is allowed when it is independent and materially helps the active merge lane. Valid examples:
- upstream blocker root-cause/fix work
- true 7-green / evidence audit work
- supersede/split planning for a parked lane
- architecture prework that does not violate M0-first sequencing
Finish bars by lane type:
- production merge lane: true 7-green, or explicit justified-wait when only non-branch-owned blockers remain
- production support PR: green enough to unblock the active merge lane, then explicit stop/park
- non-production PR: CodeRabbit approval plus the repo-appropriate evidence bar
- planning/support artifact lane: promised artifact or PR/body/note delivered, then stop
Execution order within a production lane:
- clear merge conflicts and any serious GitHub review blockers that make the current PR mechanically or conceptually wrong
- get or refresh solid evidence for the current head
- if UI/interactive or otherwise evidence-bearing, generate or refresh video evidence tied to the current head SHA
- get skeptic approval or equivalent reviewer-subagent approval on the evidence/gate story for the current head
- close remaining branch-owned code/test blockers
- run final green/polish loop only after 1-5 are satisfied
Do not invert that order.
Default cap:
- at most 1 active merge lane
- at most 4 additional support workers
- never exceed 5 total live workers
Default split:
- at most 1 active production AO merge lane
- use parallel subagents first for non-PR/support cognition work
- only spend additional AO slots on support work when the support task is itself PR-shaped or must mutate branch/PR state
Preference rule:
- if two or more useful tasks can proceed independently, do not serialize them by default
- spawn parallel support workers instead, as long as they do not mutate roadmap order or overload the lane with noise
- when the support task is non-PR analysis/planning/review, prefer parallel subagents over AO workers
AO fallback rule:
- if AO workers are not making enough progress, the loop must stop treating AO as mandatory
- evidence of insufficient AO progress includes:
- 2+ cycles with no remote movement on a PR-shaped lane
- repeated prompt drift into unrelated work
- repeated environment/setup friction (missing venv, broken auth, worktree creation errors)
- session materialization failures or missing tmux/session identity
- once AO is judged insufficient for a non-PR task, reassign that task to a parallel subagent in the same or next cycle
- once AO is judged insufficient for a PR-shaped support task, either:
- respawn one more time with a narrower instruction, or
- execute it locally / with a worker only if it truly needs branch mutation
Upstream-blocker rule:
upstream-owned is a provisional classification, not a terminal state
- within 1-2 cycles, the loop must force one of these outcomes:
- reproduce the blocker on a fresh
origin/main worktree and assign an upstream fix lane, or
- fail to reproduce it on fresh
origin/main and immediately reclassify it as branch-owned divergence on the active PR
- do not allow a production merge lane to sit in repeated justified-wait on an alleged upstream blocker without a fresh
main repro
- after a failed fresh-
main repro, the loop must send a direct fix-order to the active merge-lane worker in the same cycle
Loop Body
Phase 1: Memory First
Before making decisions, always:
- Re-read the official roadmap docs:
~/roadmap/zfc-level-up-model-computes-2026-04-19.md
~/roadmap/nextsteps-2026-04-19-level-up-zfc.md
- Run a memory search source before any steering:
- current
~/roadmap/nextsteps-2026-04-19-level-up-zfc.md
- current repo-local findings log
- a sparse history search from
~/.codex/sessions and ~/.claude/projects
Run memory search before making decisions:
/ms "level up zfc open tasks"
/ms "level up zfc stuck tasks"
/ms "level up zfc roadmap drift"
/ms "level up zfc AO friction"
If memory conflicts with the canonical roadmap files, prefer the roadmap files and note the conflict in findings.
Do not skip sparse history just because roadmap docs exist; each cycle must sample enough history to detect worker/session drift.
Phase 2: Observe
Inspect:
- official roadmap queue vs current open related PRs
- whether every related open PR carries the
zfc_level label
- active AO sessions for
your-project.com
- last 20-30 lines from each worker tmux pane
- if a pane is ambiguous, capture 60-80 lines rather than trusting a short tail
- current worker conversation state from sparse
~/.codex/sessions / ~/.claude/projects history where available
- open related PRs and current head SHAs
- whether any worker is on stale, merged, or side-lane work
- GitHub/AO auth mode for this shell
- all active ZFC PRs for recurring G6/G7 drift, not just the current merge lane
Kill zombie sessions working on merged/closed/stale lanes.
Treat AO branch/PR mapping as advisory only; if AO status disagrees with tmux or current-head PR state, record the mismatch and follow tmux/PR truth.
Auth probe:
- explicitly check whether
gh works through hosts.yml, env token, or neither
- do not blindly
unset GITHUB_TOKEN if the loop still needs env-backed auth for gh or ao
- record the auth mode in the cycle when it affects worker spawning or PR actions
- if
gh auth status shows GITHUB_TOKEN invalid but hosts.yml is valid, clear only the env override for the loop subprocess and continue; this is not a stop condition
- if GitHub CLI still fails after clearing an invalid env override, fall back to GitHub connector data or AO/tmux/local git evidence in the same cycle
Phase 3: Measure
For each related PR:
- does it have a live worker?
- has the branch moved remotely since the last cycle?
- is it blocked on code, review, CI, or harness?
- is it core roadmap work or side-lane noise?
- what is the latest current-head review event, not just
reviewDecision?
- are unresolved threads counted on the current head?
- does current-head evidence actually exist as a posted gist/comment/video, not just as local temp files?
- do current-head issue comments show fresh
/smoke, /er, or bot-reported failures that still need action?
- what is the exact next step for this PR?
- what is the shortest path from the current state to either true 7-green or, for non-production lanes, CodeRabbit-approved with the proper evidence bar?
For each active worker:
- is the worker truly executing or just sitting in repeated
Continue working... prompts?
- what did the latest tmux conversation actually do?
- what do sparse codex / Claude session samples say the worker believes it is doing?
- does the worker's understanding match the real PR state?
- classify the worker as
on-track, partly-on-track, waiting, drifting, or done
- if the worker is in a rereview loop, did the branch move this cycle?
- if the worker is
waiting or done, should the slot be repurposed immediately?
For all active ZFC PRs, also measure:
- G6 evidence status
- G7 skeptic status
- unresolved thread state
- whether the same gate gap is repeating across multiple PRs
Evidence-first status:
- if a production PR lacks a credible evidence bundle, mark it as evidence-blocked before calling it review-blocked or polish-ready
- unresolved comments without evidence are secondary until the evidence bar is satisfied
- if video evidence is required but missing or stale for the current head SHA, mark the PR as evidence-blocked
- if skeptic has not approved the evidence/gate story for the current head, mark the PR as evidence-review-blocked rather than polish-ready
Correctness-first status:
- if
mergeStateStatus is DIRTY, mergeable is false/CONFLICTING, or a serious review comment indicates the PR is wrong in scope/design/correctness, mark it as correctness-blocked
- correctness-blocked outranks evidence-blocked, evidence-review-blocked, and polish-ready
Health signal:
- healthy if core PRs have live workers and at least one core lane is making real remote progress
- unhealthy if workers are only classifying/analyzing, or if no core lane moved for 2+ cycles
- unhealthy if a worker pane repeats generic
Continue working on the task prompts for a full cycle without fresh commands or branch movement
- unhealthy if AO inventory still reports sessions as active after tmux shows they are effectively parked or irrelevant
Also compute an ownership signal:
- owned if each active core roadmap item is either:
- being executed by a live worker, or
- intentionally waiting on fresh CI/review state with a recorded re-check plan
- unowned if the roadmap is incomplete and there is no explicit next executor or wait state
Also compute a support-lane signal:
- healthy if the active merge lane has the support workers it needs for its current bottlenecks
- unhealthy if a lane is waiting on upstream, review, or evidence questions that could be advanced in parallel but no support worker owns them
Also compute a label-hygiene signal:
- healthy if all related open PRs carry
zfc_level
- unhealthy if any related open PR lacks
zfc_level
Also compute an execution-fit signal:
- AO fit when the task is PR-shaped and branch mutation/evidence posting is required
- subagent fit when the task is mainly analysis, review, planning, or artifact drafting
- mark the cycle unhealthy if a subagent-fit task is still being burned through AO worker boilerplate
Phase 4: Diagnose
Run /harness on each new recurring friction point.
Classify each blocker as:
- harness gap
- code bug
- external
- roadmap drift
If the same class of failure happens twice, fix the harness and record it.
If a cycle only fixes code without improving the harness that caused the repeat failure, treat the cycle as incomplete.
Special case: AO / GitHub auth degradation
- if
gh auth status fails because ~/.config/gh/hosts.yml is stale/invalid, treat that as harness degradation
- if env-backed auth still works, preserve it for spawn/comment actions instead of clearing it reflexively
- if neither hosts auth nor env auth works, do not keep retrying identical AO spawns; switch to fallback execution and record the auth blocker
- if env auth is invalid but
hosts.yml auth is valid, the loop must switch to env -u GITHUB_TOKEN gh ... immediately and continue the cycle
- a GitHub fetch failure is never sufficient reason to stop the cycle if AO/tmux/local evidence still exists
Special case: recurring G6/G7 drift across multiple ZFC PRs
- if two or more active ZFC PRs are missing evidence bundles or skeptic verdicts, classify that as a harness/system gap first
- do not treat each PR as an isolated failure until you have ruled out shared automation or process drift
- assign one worker to the cross-PR gate problem if it is recurring
Special case: comment churn without evidence
- if a production PR is missing evidence, do not let the loop burn cycles on comment-polish-only work
- comments can still be triaged for severity, but the primary owner must first build enough evidence to prove the PR works
- unless comments show the whole PR is conceptually wrong, comment churn does not outrank evidence generation and skeptic review
- once evidence is posted, verify the evidence exists on the PR itself (comment/gist/video link) before downgrading the lane to review-only
Special case: fresh current-head issue-comment failures
- if
/smoke, /er, or bot-generated issue comments report failure on the current head SHA, the PR is not merge-ready even if all standard checks are green
- treat that as active gate debt until the failure is investigated, rebutted with proof, or superseded by a newer successful run on the same head
Special case: repeated continue? prompts / waiting panes
- if a worker has already delivered its bounded finish bar and the pane falls into repeated
Continue working on the task prompts, hard-park it in the same cycle
- if a worker has not delivered its finish bar and the pane falls into repeated
Continue working on the task prompts, send one direct autonomy steer in the same cycle
- if the same worker is still in repeated
Continue working on the task prompts next cycle, reassign or respawn it; do not keep counting it as active
Special case: fresh current-head review churn
- when a PR receives a new
CHANGES_REQUESTED or fresh actionable review comment on the current head SHA, that lane is not review-only
- assign or keep a worker on the new current-head review items until they are fixed, explicitly rebutted, or intentionally deferred with proof
- do not rely on an older green summary if fresh current-head review state disagrees
Special case: merge conflicts and serious GitHub comments
- merge conflicts are not polish work; they are correctness blockers and must be assigned immediately
- serious GitHub comments that question correctness, scope, or merge vehicle also block evidence/polish work until triaged
- low/nit comments do not outrank evidence once correctness blockers are cleared
Special case: #6420 / #6404 AO fallback
#6420 and #6404 are not allowed to sit in repeated nominal-ownership states without real execution
- if either PR still lacks a truly on-track AO worker after one full loop cycle of direct steering or respawn, the next cycle must stop waiting on AO quality
- for
#6420, spawn parallel subagents to directly drive the branch to true 7-green
- for
#6404, spawn parallel subagents to directly drive the branch to the non-production finish bar: current-head CI green, CodeRabbit approved, proper evidence
- record the failed AO attempt, the specific reason AO was judged insufficient, and the subagent takeover decision in both roadmap logs and the cycle bead
Special case: long-lived upstream claims
- if a blocker has been labeled upstream-owned for 2+ cycles, treat that label as stale until re-proven
- require a fresh repro on
origin/main; do not reuse an old note as sufficient evidence
- if the fresh repro shows green on
main, record the reclassification and move the active lane out of wait immediately
Phase 5: Plan
Run /nextsteps and keep all updates aligned with:
- cleanup-first M0
- supersede current
#6418
- architecture work only after M0
Do not invent a new queue unless the roadmap docs are updated.
Also read .claude/skills/level-up-zfc/SKILL.md as the phase-checklist source, especially for:
- M0 checklist
- M0 anti-patterns
- M1/M2 sequencing constraints
Before treating any PR as ready to advance the roadmap, verify it against the real 7-green policy, not
gh pr checks alone.
Review workflow adaptation:
- adapt
/copilot logic first for serious comment triage to determine whether the PR is fundamentally wrong, then later for cleanup once correctness is restored
- adapt
/polish logic only as a terminal tightening loop after evidence exists; do not use its default "iterate toward green" structure as a substitute for evidence-first discipline
- because
/polish is 6-green-oriented, the loop must retain the repo's 7-green standard instead of inheriting /polish as-is
- adapt skeptic-agent logic before polish: skeptic should first assess whether the current-head evidence bundle and gate story are sufficient and truthful
- if skeptic or major PR comments indicate the whole PR direction is wrong, stop polish work and route the lane back to design/scope correction
Phase 6: Act
Allowed actions:
- steer AO workers
- kill or respawn stuck workers
- spawn parallel subagents for non-PR work items
- update PR descriptions to reflect roadmap truth
- open a new PR only when needed by the roadmap, and keep core open lanes <= 5
- if dispatch fails twice, fix directly
- if AO spawn is blocked by auth but the task is still roadmap-valid, use the next-best execution path rather than leaving the slot empty
Specific rules:
- if a production PR has a merge conflict or serious GitHub correctness blocker, assign that before evidence or polish work
- if a production PR lacks evidence, assign evidence work before polish work
- if a production PR needs video evidence under repo policy, assign video evidence work before polish work
- after evidence is refreshed, assign skeptic or reviewer-subagent review of the current-head evidence/gate story before assigning polish
- if a primary GitHub query fails, retry once with the corrected auth path and then continue with fallback evidence sources in the same cycle
- if a worker is stuck for 2+ cycles with no remote movement, interrupt it
- if a worker has completed a planning artifact, require it to stage/push/comment and stop
- if a side-lane is distracting from M0, park it
- if M0 cleanup requires a new narrow PR, create it; do not overload
#6404
- if work is claimed as M0 cleanup, verify it against the M0 checklist from
.claude/skills/level-up-zfc/SKILL.md
- if a supposed M0 change increases production LOC or adds formatter behavior on top of live legacy paths, flag roadmap drift immediately
- if a core worker is stopped, immediately decide whether to:
- respawn a worker on the same core lane,
- move a worker to the next roadmap lane, or
- intentionally wait on fresh CI/review state
- if the decision is "wait", record:
- which PR is waiting,
- what exact signal is being waited on,
- when the loop should re-check,
- why no other roadmap lane should start first
- do not leave the queue with zero live workers unless the cycle explicitly concludes that waiting is the highest-value next action
- if no core lane is actively executing and no justified wait state exists, spawn the next roadmap-appropriate worker before ending the cycle
- if an active merge lane is blocked on independent subproblems, spawn support workers rather than forcing one worker to serialize all work
- if the independent support problem is non-PR cognition work, spawn a parallel subagent rather than an AO worker
- only keep a non-PR task in AO when the output must be committed/pushed/commented from a dedicated worktree
Roadmap execution split for the current queue:
#6420 active merge lane: AO worker
#6418 supersede/park analysis: parallel subagent first, promote to AO only if a real branch/PR artifact update is required
#6404 post-M0 keep/drop and activation analysis: parallel subagent first, promote to AO only if the artifact must be landed in branch state
- support workers must not mutate roadmap order; they exist to unblock or verify the active lane
- when choosing between one overloaded worker and multiple bounded independent workers, prefer the bounded parallel split
- if AO spawn fails because of auth:
- first determine whether env-backed
GITHUB_TOKEN still works
- if env-backed auth works, retry with that auth path intact
- if env-backed auth does not work, repurpose an existing dormant worker or start a manual Codex tmux worker
- do not silently reduce worker count when valid parallel work still exists
- every worker instruction must include its finish bar explicitly:
- production lane: true 7-green if branch-owned work remains, otherwise explicit justified-wait
- support PR: keep going until the PR is actually unblocked or proven external-only
- non-production PR: CodeRabbit approval and required evidence state
- planning lane: promised artifact, PR body update, or PR note delivered
- if the same G6/G7 gap is affecting multiple ZFC PRs, repurpose or spawn one worker to own that shared gate problem rather than letting every PR stall on the same missing automation/evidence condition
- if a worker reports an upstream-owned blocker, the loop must either:
- assign a support worker to reproduce/fix it on fresh
main, or
- if such a support lane already ran and
main is green, treat the blocker as branch-owned and push the active lane worker back into execute mode
- do not let an active production lane remain in justified-wait on an upstream label that has not been freshly revalidated
- for production PRs, a review worker may run
/copilot-style triage immediately to determine whether serious comments block correctness
- only after conflicts and serious blockers are cleared may the lane move to evidence work
- only after evidence exists, skeptic/reviewer approval is in place, and branch-owned blockers are closed may a worker run a
/polish-style iterative green loop
- do not run polish as the first response to a red PR
- if PR comments indicate the whole PR is wrong in scope, design, or merge vehicle, do not polish; redirect to scope correction instead
- for
#6420 and #6404, if AO ownership is still stale, dead-shell, non-materialized, or obviously not addressing the current blocker after one cycle, skip further AO waiting and move the execution to parallel subagents in that same cycle
Phase 6.5: Decide Next Work
Before ending the cycle, explicitly answer:
- What is the highest-priority roadmap item right now?
- Is it blocked on code, CI, review, or harness?
- Who owns the next action?
- If nobody owns it yet, spawn or assign that owner now.
Default decision order:
- Keep
#6420 as the active lane until M0 is honestly green or explicitly blocked on fresh external state.
- Do not resume current
#6418 except to preserve supersede/park status.
- Only move to
#6404 if M0 is in a justified wait state or complete.
- If either
#6420 or #6404 is still off-track from AO execution when revisited next cycle, bypass AO for that PR and assign direct parallel subagents to carry it to the finish bar.
When the active lane is in wait, ask:
- Is the wait caused by an upstream issue that can be root-caused/fixed in parallel?
- Is there unresolved 7-green/evidence audit work that can be done in parallel?
- Is there a parked-lane prep task that can be advanced without violating sequencing?
If yes, spawn support workers up to the total cap instead of leaving only one worker alive.
Comment/polish worker selection:
- Conflict/serious-comment worker if the PR is correctness-blocked
- Evidence worker if G6 is missing or stale
- Video-evidence worker if video is required and missing/stale
- Skeptic/reviewer-subagent for the current-head evidence/gate story
- Code/test closure worker if a branch-owned blocker exists
- Final polish/green-loop worker using adapted
/polish logic only after 1-5 are satisfied
Auth-aware parallelization rule:
- Prefer normal AO spawn when GitHub/AO auth is healthy.
- If AO spawn is blocked only by invalid
hosts.yml, try the env-backed auth path before giving up.
- If fresh AO spawn remains blocked, fill the slot with a repurposed dormant worker or manual Codex tmux worker and record that this is a fallback lane.
- If
GITHUB_TOKEN is invalid but gh hosts auth is valid, use env -u GITHUB_TOKEN for the GitHub CLI calls inside the loop rather than treating the cycle as blocked.
Phase 6.6: Green and Evidence Gate
Before declaring a lane complete or moving the roadmap forward:
- verify against
~/.claude/skills/pr-green-definition.md
- do a deep review of:
- mergeability
- evidence bundle integrity
- unresolved review/comment state
- skeptic/G7 state
Evidence-first guardrail:
- "needs polish" is never the top diagnosis for a production PR that still lacks proof it works
- if there is no evidence bundle or the evidence is stale relative to the current head SHA, the next worker should be assigned to rebuild/refresh evidence, not to polish comments
- if the current-head evidence has not received a skeptic-style approval, the next worker should close that evidence-review gap before polish
- if major PR comments show the whole PR is wrong, skip polish entirely and reopen scope/design correction
- if the PR is merge-conflicting or has serious correctness comments, skip evidence/polish reassignment and fix those blockers first
- if a GitHub API read path is degraded, the loop must still complete an ownership decision using tmux output, AO state, local worktree state, or other available evidence rather than ending as an incomplete cycle
- latest non-commented CodeRabbit state
- Bugbot state
- unresolved review comments/threads
- skeptic verdict
- evidence state
Evidence rule:
- if the PR touches production code, require full evidence discipline and do not treat screenshots or log snippets as enough
- only non-production PRs may skip video evidence
- if evidence is missing, the lane is not done even if CI is green
Worker completion rule:
- a worker is not done merely because it identified the blocker class
- if its assigned PR still has branch-owned work toward the lane's finish bar, it must keep going
- only when the lane reaches its finish bar, or reaches explicit justified-wait, may the worker stop or be repurposed
- if the only remaining activity is repeated bot rereview nudges without branch movement, demote the lane from active execution to review-state waiting or repurpose the slot
Cross-PR audit rule:
- every cycle, do a compact 7-green sweep across all active ZFC PRs
- if the same missing gate appears repeatedly (for example G6 evidence or G7 skeptic), record it once as a shared harness problem and route one worker to address that system gap
Phase 6.7: M0 Integrity Gate
For any active M0 lane, explicitly verify:
- the work does not violate the M0 anti-patterns from
.claude/skills/level-up-zfc/SKILL.md
- production cleanup claims are backed by the actual M0 checklist, not narrative
- test-first / deletion-second ordering is being respected where applicable
- net production LOC is not drifting positive while calling the work “cleanup”
Phase 7: Record
Always update:
~/roadmap/nextsteps-2026-04-19-level-up-zfc.md
When the cycle changes roadmap truth, also update:
~/roadmap/nextsteps-2026-04-19-level-up-zfc.md
~/roadmap/learnings-2026-04.md
- relevant beads
Each intervention record must include:
- what worker/PR was touched
- why intervention was needed
- what action was taken
- whether it was a harness gap
Each cycle record must also include:
- a worker-by-worker evaluation grounded in tmux conversation plus sparse codex/Claude history
- a PR-by-PR status block for all active or roadmap-related open PRs
- a PR-by-PR next-step block
- a PR-by-PR finish path to either true 7-green or, for non-production lanes, CodeRabbit-approved plus proper evidence
- the chosen next work item
- whether the next state is
execute or wait
- the owning worker/session if any
- if
wait, the exact condition that will cause the next cycle to resume execution
Completion Condition
Stop only if one of these is true:
- user explicitly says stop/pause
- the full level-up ZFC roadmap is truly complete
- context pressure requires handoff
Do not stop merely because a single PR went green.
Do not stop merely because the current worker finished a subtask; re-evaluate the roadmap and assign the next action.
Anti-Drift Rules
- Do not optimize for PR-local green if it conflicts with roadmap sequencing.
- Do not let current
#6418 absorb more work.
- Do not count
#6386 or #6413 as core roadmap progress.
- Do not claim M0 complete unless cleanup/deletion is actually leading.
- If production code addition exceeds deletion on a cleanup milestone, flag drift immediately.