Problem
When a pass loses the AI-review lock race it returns the ai_review_inconclusive ("AI review already in progress") hold — a transient infrastructure artifact whose own text promises "it re-evaluates once the in-flight review completes or on the next update". But the disposition that processes this hold applies the sticky manual-review label, and that label is designed to be liftable only by a human (#regate-churn freeze + the executor's live-label guard). Net effect: a transient hiccup silently converts into a mandatory human intervention, the exact opposite of what the product promises.
Verified live 2026-07-26 on #8972 (in-flight review killed by a deploy):
- 14:55:29Z — the racing pass publishes the contended placeholder and the disposition applies
manual-review.
- The label then (a) freezes all fresh AI review for the contributor PR (
isFrozenForManualReview — plain sweeps may only replay), and (b) the executor denies approve/merge on every later pass: 15:08:21Z and 15:20:50Z both show agent.action.approve/agent.action.merge denied with "manual-review label present".
- Because the contended placeholder is deliberately never persisted (
persistable: false), the frozen reuse path has nothing to reuse — the PR loops on the placeholder indefinitely. Deadlock until a human removes the label.
The sticky-label design is correct for substantive holds (guardrail hits, migration collisions, protected-author red CI). It is wrong for transient infra holds, which by their own contract are supposed to self-resolve.
Fix
- Don't label on transient holds: holds whose reason code is
ai_review_inconclusive/lock-contended (and any other "retry will fix this" class) must not apply the sticky manual-review label. The hold itself (no terminal action this pass) is enough.
- Provenance + auto-clear: record which hold reason applied the label; when a later pass produces a real review verdict + disposition for the same head, auto-remove a label whose provenance was transient. A human-applied or substantive-hold label stays sticky exactly as today.
- The freeze should not engage off a label whose provenance is transient (follows from 1/2).
Acceptance
- Reproduce the lock-contended hold → no
manual-review label is applied; once the real review lands, approve/merge/close execute normally with zero human action.
- A guardrail/protected-author hold still applies the sticky label exactly as today (regression-covered).
Related: #8972 (evidence), the orphaned-lock sibling issue (the trigger), #7994 (the original sticky-label rationale — unchanged for substantive holds).
Problem
When a pass loses the AI-review lock race it returns the
ai_review_inconclusive("AI review already in progress") hold — a transient infrastructure artifact whose own text promises "it re-evaluates once the in-flight review completes or on the next update". But the disposition that processes this hold applies the stickymanual-reviewlabel, and that label is designed to be liftable only by a human (#regate-churnfreeze + the executor's live-label guard). Net effect: a transient hiccup silently converts into a mandatory human intervention, the exact opposite of what the product promises.Verified live 2026-07-26 on #8972 (in-flight review killed by a deploy):
manual-review.isFrozenForManualReview— plain sweeps may only replay), and (b) the executor denies approve/merge on every later pass: 15:08:21Z and 15:20:50Z both showagent.action.approve/agent.action.mergedenied with "manual-review label present".persistable: false), the frozen reuse path has nothing to reuse — the PR loops on the placeholder indefinitely. Deadlock until a human removes the label.The sticky-label design is correct for substantive holds (guardrail hits, migration collisions, protected-author red CI). It is wrong for transient infra holds, which by their own contract are supposed to self-resolve.
Fix
ai_review_inconclusive/lock-contended (and any other "retry will fix this" class) must not apply the sticky manual-review label. The hold itself (no terminal action this pass) is enough.Acceptance
manual-reviewlabel is applied; once the real review lands, approve/merge/close execute normally with zero human action.Related: #8972 (evidence), the orphaned-lock sibling issue (the trigger), #7994 (the original sticky-label rationale — unchanged for substantive holds).