feat(review-loop): add ask-first soft stops between full-CLEAN and budget exhaustion - #225
Merged
Merged
Conversation
…dget exhaustion The loop previously only stopped on unanimous CLEAN across all four lenses or on exhausting the round budget (default 5) — nothing in between was ever a reason to pause. Running the loop on a small status --legend/converged-fold PR (#222 in this same repo) burned the full 5-round budget: round 1 earned its keep (a real flag-validation bug, caught by all four lenses), but every round after found progressively smaller things while the loop kept auto-continuing because neither hard-stop condition ever fired. Adds two soft stops to Step 5, both ask-don't-assume rather than silent: - A NIT-only round (no BLOCKER/ISSUE from any lens) surfaces "stop here, or one more round?" instead of continuing unasked. - A worst-severity trend that has strictly declined for two rounds straight (and neither other stop has fired) prompts the user once — deliberately capped at one ask per run so the check-in doesn't become a slower version of the problem it fixes. Both weigh the user's stated mandate ("fix everything" may still want the full budget off a NIT-only round) and, when no mandate was given, double as the moment to get one. Added a "Lessons from the field" entry citing the #222 run by name/shape, matching the doc's existing convention of grounding rules in concrete incidents.
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
review-loopskill previously only stopped on unanimousCLEAN — ship itacross all four reviewer lenses, or on exhausting the round budget (default 5) — nothing in between was ever a reason to pause and check in.status --legend/converged-fold change) burned the full 5-round budget: round 1 earned its keep (all four lenses independently caught a real flag-validation bug), but every round after found progressively smaller things while the loop kept auto-continuing, since neither hard-stop condition ever fired..agentsync/skills/review-loop/SKILL.md, the canonical source —.claude//.agents/are its rendered copies):descriptionso the soft stops surface wherever the skill's summary is shown.Type of change
Test plan
This is a markdown skill-definition change with no Go code touched, so the usual Go test/lint gates don't apply here.
.claude/skills/review-loop/SKILL.mdand.agents/skills/review-loop/SKILL.mdfrom the canonical source viaagentsync apply --scope project(built from this repo) and diffed all three: only YAML frontmatter re-wrapping differs between the canonical file and its two rendered copies; the body content is byte-identical.just test-releaseis green — N/A, no Go code changedjust lintis clean — N/A, no Go code changedChecklist
feat(review-loop): …).internal/secrets,internal/capture, orsource.Write*.agentsync apply --scope project).Generated by Claude Code