Make the round cap productive: scope-down + follow-up, not a dead-end - #52
Conversation
…ad-end) At ~3 rounds without full convergence the cap was a dead-end: coder hits round-3, applies needs-human, stops. In practice the right resolution is usually to scope down to the converged core, land that, and open a follow-up issue for the contested remainder — escalating to the human only on a genuine standoff / safety-rail / north-star decision. Encode "scope-down + follow-up" as the cap resolution across the loop: - manager/CLAUDE.md: step 4 now asks "can this scope down...?" → yes: one scoped-down final change → clean review → merge the core + open & log a follow-up issue; no: needs-human (reserved for genuine standoff/safety/ north-star). needs-human re-entry note updated to match. - routines/coder-revision.md: rounds-cap step keeps "no unsolicited changes at round-3" but allows ONE Faber-directed scoped-down final change. - templates/faber-command.md: mirrors the scope-down + follow-up behavior. - README.md (loop diagram + rounds-counter design note) and reviewer/codex-review.md (in-session loop diagram): cap resolves via scope-down + follow-up; needs-human reserved for standoff/safety/north-star. The ~3-round cap count and all other rails are unchanged — only how the cap resolves. Docs/prompt-only; structure check passes, no scripts touched. Closes #50 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Codex reviewer (cross-vendor, read-only)Reviewed-head: 70633b5 Posted verbatim by The new scoped-down round-cap path can instruct the coder to stop before pushing or recording the final change, which can stall the intended review-and-merge flow. Review comment:
|
Address Codex [P2]: the scoped-down exception at the round-3 cap said 'make exactly that change and stop' inside step 2, before the push/label/ comment steps — so the scoped core would stay in the coder's local worktree and Faber could not re-review or merge it. The exception now explicitly continues through the normal push/label/comment steps (4–7), so the scoped core lands on the branch for re-review and merge. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Round-1: addressed Codex [P2]. The scoped-down round-cap exception in Cap behavior otherwise intact: no unsolicited changes at round-3, scope-down only when Faber directs it, Commit: 2d903dc |
Codex reviewer (cross-vendor, read-only)Reviewed-head: 2d903dc Posted verbatim by The new scoped-down round-cap path can drive the coder into adding a non-existent Review comment:
|
Round-2: addressed Codex [P2]. The scoped-down round-cap exception in routines/coder-revision.md sent the coder through steps 4-7, including step 5's round-(N+1) bump. At round-3 that would add a nonexistent round-4 label (only round-0..3 exist). The exception is now explicit that the scoped-down change is TERMINAL: make the change, push it (step 4), SKIP step 5's bump (PR stays at round-3, no round-4), post the summary (step 6), stop (step 7). Normal (non-cap) rounds still bump round-N -> round-(N+1) via step 5 unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Round-2: addressed Codex [P2]. The scoped-down round-cap exception in The exception is now explicit that the scoped-down change is terminal: make the change, push it (step 4) so the scoped core lands for re-review/merge, then SKIP step 5's bump — the PR stays at The round-1 push+report fix is preserved (the scoped core still reaches the branch). Normal (non-cap) rounds still bump Commit: 3a2a038 |
Codex reviewer (cross-vendor, read-only)Reviewed-head: 3a2a038 Posted verbatim by The changes are documentation/workflow updates, and I did not identify a discrete, actionable defect introduced by the patch. |
Closes #50
What
Make the ~3-round cap productive: instead of dead-ending at
round-3withneeds-human, Faber first asks "can this scope down to the part the reviewer is satisfied with, with the contested remainder split into a follow-up issue?" If yes (the usual case): direct one scoped-down final change → clean review → merge the converged core, and open + log a follow-up issue for the contested remainder.needs-humanis now reserved for when even the scoped-down core is contested, a genuine coder↔reviewer standoff, or a safety-rail / north-star decision.Why
Today the cap is a dead-end (coder hits
round-3, appliesneeds-human, stops). In practice (e.g. PRs #45/#47/#48 this cycle) the right resolution is to land the converged core and defer the contested part to a follow-up — escalating to the human only on a genuine standoff / safety / north-star call. This encodes that so the cap ships value rather than stalling.Changes (per file)
manager/CLAUDE.md— step 4 rewritten to the scope-down + follow-up branch (yes → scoped-down change → clean review → merge core + open/log follow-up; no →needs-human, reserved).needs-humanre-entry note updated to reflect that most round-cap cases resolve in-loop.routines/coder-revision.md— rounds-cap step keeps "no further unsolicited changes atround-3," with an explicit exception: Faber may direct one scoped-down final change (agreed core); the remainder goes to a follow-up, not more rounds.templates/faber-command.md— mirrors the scope-down + follow-up behavior at the cap.README.md— loop diagram + "One rounds counter" design note now describe scope-down + follow-up;needs-humanreserved for standoff/safety/north-star.reviewer/codex-review.md— in-session loop diagram reflects the productive cap resolution.Preserved
The ~3-round cap count itself,
needs-humanfor real escalations, the consensus front gate, auto-merge safety, manager-reviewer, and all other rails. The change is how the cap resolves, not the count — no gate logic touched.Verification
needs-humanreserved for genuine standoffs / safety / north-star; cap count unchanged.Self-modification call-out
Prompt-doc change — does not change live behavior until synced:
/faber(templates/faber-command.md) needsscripts/install.shre-run to regenerate the command.manager/CLAUDE.mdtakes effect on Faber's next read.🤖 Generated with Claude Code