You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(gate): guardrailEscalation.onCleanReview — release the guardrail hold when the escalated review is clean
The second half of #9808, as an explicit MODE rather than a policy flip.
#9821 shipped the escalation knobs, so a guarded PR now gets a high-effort
review -- but the disposition still held it unconditionally: guardrailHit sat
in heldForManualReview regardless of what the escalated review found. The 74
held PRs / 14 days kept landing on the maintainer, just with better reviews
attached.
gate.guardrailEscalation.onCleanReview:
hold (default) today's behavior exactly -- human-in-the-loop
proceed a clean escalated review releases the guardrail hold and the normal
approve/merge path continues -- full-autonomy mode
Because it is a manifest field it layers global -> per-repo like everything
else, so repos can be flipped one at a time and the mode is reversible without
a deploy.
Fail-closed on every axis:
- `proceed` is inert unless at least one escalation knob is actually SET: the
release is justified by extra scrutiny, so absent scrutiny nothing vouches.
- the release requires reviewGood -- gate success (which folds in the AI
verdict's blockers) AND green CI -- and the disposition re-checks that
independently of the caller's flag.
- only the guardrail term is released: migration collisions, unlinked-issue
holds, advisory-check holds, and unstable merge states all still hold.
- the manual-hold reason no longer claims "guarded path -> manual review" for
a cleared PR.
0 commit comments