Skip to content

bot_review_coverage is blind to a clean CodeRabbit review — it arrives as a comment, not a review #44

Description

@topij

Found while watching PR #43 through the loop.

The bug

bot_review_coverage(reviews, head, *, bots) reads the reviews list. CodeRabbit delivers a clean verdict as an issue comment, not as a review submission:

No actionable comments were generated in the recent review. 🎉

So on a PR the bot reviewed and passed:

statusCheckRollup  CodeRabbit: SUCCESS
comments           1 (coderabbitai — walkthrough + the verdict line above)
reviews            []
--------------------------------------------------
review_bots.signal    "ok"
review_bots.coverage  []
merge_blockers        ["independent review evidence is missing for current head"]

A PR that was independently reviewed and found clean is indistinguishable from one that was never reviewed.

Observed on this repo's PR #43 (CodeRabbit plan: Pro Plus, profile CHILL, Configuration used: defaults — nothing exotic).

Why it matters

This is the mirror of #19. #19 stopped a receipt binding to a review that had not happened. This makes a review that did happen invisible — and the consequence is worse than cosmetic: the merge gate reports missing review evidence, which pushes the operator toward recording a fallback receipt they did not need, for a review that already exists.

That is a receipt claiming coverage from a pass that never ran, arrived at by following the gate's own instruction. fallback-review-panel.md says "A receipt should never claim more coverage than the review it stands for" — the gate is currently steering people into violating it.

It also silently inflates the cost of every clean PR: a full two-lens panel gets run to satisfy a gate that a real reviewer had already satisfied.

Suggested fix

bot_review_coverage should treat a configured bot's comment-borne verdict as review evidence, the same way review_unavailable_reason already treats a comment-borne outage as an outage. The precedent is exact and already in the codebase — #23's whole lesson was that the same bot says the same thing on different surfaces, and matching only one surface makes detection depend on which one it happened to use.

Concretely: a configured-bot comment matching a verdict marker (no actionable comments were generated, actionable comments posted: N) is a completed review for the commit it references, and should populate coverage with that commit.

Note noise_markers already carries "actionable comments posted: 0" — the kit is currently filtering out the very signal it needs, on one of the two wordings. The other wording ("No actionable comments were generated in the recent review") matches no marker at all.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions