fix(review): a review with a control that did not run stops a merge
Operator decision 2026-10-06. Before, a WARN that existed only because a reviewer or engine never reported (e.g. /security-review without an origin remote) mapped to verdict-gate exit 0, so a review nobody performed in full was green. Now `missing-reviewer:` / `unattributable-payload` in the JSON block's allow_blocked_by is exit 2 (could not decide, never green); a WARN for a MAJOR or a set-aside finding still passes with its reasons. A 1.1 review must carry allow_blocked_by. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
40f6ae1177
commit
22e792ce19
7 changed files with 72 additions and 14 deletions
|
|
@ -421,10 +421,14 @@ node lib/review/verdict-gate.mjs <dir>/review.md
|
|||
# 0 = ALLOW or WARN · 1 = BLOCK · 2 = could not decide (never green)
|
||||
```
|
||||
|
||||
A WARN that exists only because a check did not run is a 2, not a 0: a
|
||||
review that was not performed in full stops a merge.
|
||||
|
||||
No finding is struck for length: only MINOR/SUGGESTION text is trimmed, and
|
||||
counted; what the coordinator set aside is listed under `## Declined to
|
||||
Judge`. An engine that could not run (older Claude Code, no `origin` remote)
|
||||
keeps the review from coming back `ALLOW`, and the summary says why.
|
||||
keeps the review from coming back `ALLOW` — and from passing the gate — and
|
||||
the summary says why.
|
||||
|
||||
### Modes
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue