fix(implement-loop): minor-only quality rounds surface as concerns, not BLOCKED
A quality changes_requested verdict whose findings are all Minor,
arriving after at least one repair dispatch, now breaks the loop with
the findings surfaced as concerns instead of consuming the retry budget
toward a hard BLOCKED.
Grounding (aura runs, 2026-07-12/13): each quality round reads the diff
fresh, so late rounds keep surfacing NEW polish with severity trending
down (Important -> Minor -> comment-only Minor). Run sab-246-t56
(wf_643ee9fa) fixed its one Important finding in round 1, then hard-
BLOCKed an 85-minute green task in round 3 over two stale comment
cross-references; the sibling task was never attempted and the
re-dispatch cost another 32 minutes. Three of 14 runs across the last
three cycles ended review-loop-exhausted with no commit-blocking
residue.
Mechanically, the QUAL_SCHEMA issues array is now structured as
{severity: 'important'|'minor', text} so the valve keys on a declared
classification instead of parsing free-text prefixes; the fingerprint
backstop and the repair-brief prompt render the new shape, and the
quality-reviewer persona documents the honest-severity requirement.
Important findings still consume the full retry budget and BLOCK.
This commit is contained in:
+4
-1
@@ -117,7 +117,10 @@ The script runs, per task: implementer phase, then spec-compliance,
|
||||
then quality — gated in that order. Each is a separate `agent()` call
|
||||
with a structured-output schema, so the script branches on a real
|
||||
verdict. The re-loop limit is **2 repair retries per failure-mode per
|
||||
task; the 3rd unresolved attempt escalates to `BLOCKED`**. A
|
||||
task; the 3rd unresolved attempt escalates to `BLOCKED`** — except that
|
||||
a quality round whose findings are all `Minor`, arriving after at least
|
||||
one repair dispatch, surfaces them as concerns and closes the task
|
||||
instead of gating (cosmetic residue must not discard a green task). A
|
||||
`non_compliant` / `changes_requested` verdict re-dispatches the
|
||||
`implementer` with the review findings as the repair brief; `unclear`
|
||||
task text → `spec-ambiguous` BLOCKED; a tooling failure → `infra`
|
||||
|
||||
Reference in New Issue
Block a user