The gap
merge-clearance.sh's reviewed-head dimension is satisfied only by a CodeRabbit review object whose commit oid == HEAD, or (as of #53) a CodeRabbit success commit status on HEAD. CodeRabbit's incremental review model provides neither when the latest commit is a trivial follow-up it has "already reviewed" incrementally and has nothing to say about.
Concrete incident (PR #53)
- CodeRabbit reviewed the PR up to commit
8a85356 (review object there), passed pre-merge checks 5/5, left one Minor nitpick.
- The nitpick was addressed in a follow-up commit
8a12034 (a test-comment tweak).
@coderabbitai review returned: "Review finished. Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits."
- Result: no CR review object on
8a12034, no CR commit status (missing), no rate-limit marker. The reviewed-head blocker "CodeRabbit has not reviewed the current head yet" fires with no auto-satisfy path (not *.pen, not rate-limited). The PR wedges even though CodeRabbit considers it reviewed.
This is the same family as the #118 bug #53 fixes, but a case #53's fix does not cover: #53 trusts a present CR success status; here CR posts no status at all.
Proposed direction (needs design + adversarial review; it relaxes a hard gate)
Satisfy reviewed-head when CodeRabbit has a review object on an ancestor of HEAD AND the incremental delta from that reviewed ancestor to HEAD is entirely CR-unreviewable-or-trivial. Candidate signals for "trivial/covered":
- the delta matches
cr_unreviewable_globs / git-binary (existing mc_head_cr_unreviewable, but extended across the ancestor..HEAD range, not just HEAD^..HEAD), OR
- CodeRabbit's own "Review finished / does not re-review already reviewed commits" acknowledgement is present as its latest action for the current push.
Keep the hard blockers intact: unresolved current CR threads and CHANGES_REQUESTED still block; a non-trivial unreviewed delta still blocks. Surface any waiver in the checklist + posted status for audit, like the other bypasses.
Workaround used for #53
Merged via admin override (human-authorized), since CodeRabbit reviewed the substance and the only commit past its review object is a test-comment tweak covered by a current /eng:cr review.
The gap
merge-clearance.sh'sreviewed-headdimension is satisfied only by a CodeRabbit review object whose commit oid == HEAD, or (as of #53) a CodeRabbit success commit status on HEAD. CodeRabbit's incremental review model provides neither when the latest commit is a trivial follow-up it has "already reviewed" incrementally and has nothing to say about.Concrete incident (PR #53)
8a85356(review object there), passed pre-merge checks 5/5, left one Minor nitpick.8a12034(a test-comment tweak).@coderabbitai reviewreturned: "Review finished. Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits."8a12034, no CR commit status (missing), no rate-limit marker. Thereviewed-headblocker "CodeRabbit has not reviewed the current head yet" fires with no auto-satisfy path (not*.pen, not rate-limited). The PR wedges even though CodeRabbit considers it reviewed.This is the same family as the
#118bug #53 fixes, but a case #53's fix does not cover: #53 trusts a present CR success status; here CR posts no status at all.Proposed direction (needs design + adversarial review; it relaxes a hard gate)
Satisfy
reviewed-headwhen CodeRabbit has a review object on an ancestor of HEAD AND the incremental delta from that reviewed ancestor to HEAD is entirely CR-unreviewable-or-trivial. Candidate signals for "trivial/covered":cr_unreviewable_globs/ git-binary (existingmc_head_cr_unreviewable, but extended across the ancestor..HEAD range, not just HEAD^..HEAD), ORKeep the hard blockers intact: unresolved current CR threads and
CHANGES_REQUESTEDstill block; a non-trivial unreviewed delta still blocks. Surface any waiver in the checklist + posted status for audit, like the other bypasses.Workaround used for #53
Merged via admin override (human-authorized), since CodeRabbit reviewed the substance and the only commit past its review object is a test-comment tweak covered by a current
/eng:crreview.