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:
2026-07-13 11:45:47 +02:00
parent cf708632c2
commit 5606ca0213
3 changed files with 68 additions and 6 deletions
+11
View File
@@ -187,6 +187,17 @@ to the task footprint). The loop compares it across re-review
rounds to detect a no-op repair and stop oscillating; compute
it from the same full diff you reviewed, every round.
The workflow schema also structures `issues`: each entry is
`{severity, text}` with severity `important` or `minor`
(Nits are not reported there — they never gate). Classify
severity honestly against the definitions above. After the
first repair round the loop stops gating on a minor-only
report — the findings surface as concerns instead of
forcing another round or a BLOCKED. That valve only works
if a `Minor` is never inflated to `Important` to force
another round; report what you see, the loop decides what
gates.
## Common Rationalisations
| Excuse | Reality |