Skip to content

FF #2900: bot-review-gate ack fix — real-body fixtures, replay guard, fenced red, trailer - #2901

Merged
jaylfc merged 2 commits into
devfrom
exec/tsk-evhwml
Sep 8, 2026
Merged

jaylfc merged 2 commits into
devfrom
exec/tsk-evhwml

Conversation

@jaylfc

@jaylfc jaylfc commented Sep 7, 2026 •

Copy link
Copy Markdown
Owner

CARD TITLE (intent, not commit subject): FF #2900: bot-review-gate ack fix — real-body fixtures, replay guard, fenced red, trailer

Autonomous build of board card tsk-evhwml.

REVISION: built on exec/tsk-qhqkdh (cut at b2cc40e9b87797cff491b687329a8d7edeb60681), not on dev. That branch's
commits are ancestors of this one. Verified by git merge-base --is-ancestor
before the PR was opened.

Replace synthesized walkthrough fixtures with genuine CodeRabbit comment
bodies pulled from merged PRs (#2482, #2870, #2871, #2873, #2890).
Add a replay guard test that loads every fixture and asserts the expected
verdict per PR (PASS for zero-finding walkthroughs, FAIL for rate-limit stubs).
Add is_coderabbit_walkthrough regression guard that fails on origin/dev.

RED proof (dev):

FAILED tests/scripts/test_check_bot_review_dev.py::TestReplayGuardDev::test_walkthrough_detector_recognises_real_bodies
...
E           AttributeError: module 'check_bot_review_dev' has no attribute 'is_coderabbit_walkthrough'

Removes-Intentionally: CODERABBIT_SCAFFOLDING_RE auto-summary alternation, classify() zero-finding loop

Files:
scripts/check_bot_review.py | 213 ++++++-----
tests/scripts/fixtures/coderabbit/2482.md | 414 +++++++++++++++++++++
tests/scripts/fixtures/coderabbit/2870.md | 105 ++++++
tests/scripts/fixtures/coderabbit/2871.md | 105 ++++++
tests/scripts/fixtures/coderabbit/2873.md | 208 +++++++++++
tests/scripts/fixtures/coderabbit/2890.md | 105 ++++++
tests/scripts/test_check_bot_review.py | 293 ++++++++++++---
9 files changed, 1298 insertions(+), 150 deletions(-)

Summary by CodeRabbit

  • Bug Fixes

    • Improved the bot-review gate to recognize qualifying CodeRabbit walkthrough reviews as completed reviews.
    • Prevented acknowledgment replies and rate-limit or failure notices from being mistaken for completed reviews.
    • Improved handling of replayed review content and review-status validation.
  • Tests

    • Added coverage using representative review, walkthrough, and rate-limit scenarios to verify accurate gate decisions.

The six test symbols below exercised the classification path this PR replaces; the dev-vs-PR replay over 20 merged PRs (with GH_TOKEN) showed 0 verdict flips, so their removal is intentional.

Removes-Intentionally: tests/scripts/test_check_bot_review.py:TestClassify.test_rate_limit_only_message_does_not_mention_scaffolding, tests/scripts/test_check_bot_review.py:TestClassify.test_scaffolding_only_message_does_not_mention_rate_limit, tests/scripts/test_check_bot_review.py:TestClassifyZeroFindingControls.test_findings_shape_alone_is_not_a_zero_finding_pass, tests/scripts/test_check_bot_review.py:TestDetectorIsolation.test_auto_summary_body_rejected, tests/scripts/test_check_bot_review.py:TestDetectorIsolation.test_neutering_auto_summary_loses_only_its_protection, tests/scripts/test_check_bot_review.py:TestIsRealItem.test_scaffolding_bodied_review_is_not_real_whatever_the_state

…, blacklist acks and failure notices only

- add is_coderabbit_walkthrough() that classifies an auto-summary issue
  comment as a real review iff it carries a Run ID and at least one signal
  (quota-decrement line, no-actionable phrase, or Files-processed list)
- remove auto-summary marker from is_coderabbit_scaffolding blacklist
- add is_coderabbit_failure_notice() and blacklist only ack + failure notice
- keep rate-limit stub detection unchanged
- run scaffolding check after APPROVED/CHANGES_REQUESTED in is_real_item()
- fold the two stub branches into one accurate message
- red-proof with real-body fixtures: walkthrough control, ack-only, and
  failure-notice-only tests; replay guard from merged-PR shapes
Replace synthesized walkthrough fixtures with genuine CodeRabbit comment
bodies pulled from merged PRs (#2482, #2870, #2871, #2873, #2890).
Add a replay guard test that loads every fixture and asserts the expected
verdict per PR (PASS for zero-finding walkthroughs, FAIL for rate-limit stubs).
Add is_coderabbit_walkthrough regression guard that fails on origin/dev.

RED proof (dev):
```text
FAILED tests/scripts/test_check_bot_review_dev.py::TestReplayGuardDev::test_walkthrough_detector_recognises_real_bodies
...
E           AttributeError: module 'check_bot_review_dev' has no attribute 'is_coderabbit_walkthrough'
```

Removes-Intentionally: CODERABBIT_SCAFFOLDING_RE auto-summary alternation, classify() zero-finding loop
@qodo-code-review

Copy link
Copy Markdown

ⓘ Qodo reviews are paused because your trial has ended. Ask your workspace admin to add credits to resume reviews. Manage billing

@gitar-bot

gitar-bot Bot commented Sep 7, 2026

Copy link
Copy Markdown

Important

You are using the Gitar free plan. Upgrade to unlock code review, CI analysis, auto-apply, custom automations, and more.

Gitar

@coderabbitai

coderabbitai Bot commented Sep 7, 2026 •

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Team

Run ID: 5efb92ac-ef26-4f01-94c3-beca01e0880b

📥 Commits

Reviewing files that changed from the base of the PR and between 3dff958 and 99fa02f.

📒 Files selected for processing (9)
  • changelog.d/tsk-evhwml-bot-review-replay-guard.md
  • changelog.d/tsk-qhqkdh-bot-review-gate-ack-fix-take2.md
  • scripts/check_bot_review.py
  • tests/scripts/fixtures/coderabbit/2482.md
  • tests/scripts/fixtures/coderabbit/2870.md
  • tests/scripts/fixtures/coderabbit/2871.md
  • tests/scripts/fixtures/coderabbit/2873.md
  • tests/scripts/fixtures/coderabbit/2890.md
  • tests/scripts/test_check_bot_review.py

Included review availability: Your plan provides up to 4 included reviews per hour; 3 remain after this review.


📝 Walkthrough

Walkthrough

The bot-review gate now classifies qualifying CodeRabbit walkthrough comments as real reviews. It detects failure notices separately, consolidates stub handling, and validates verdicts against live CodeRabbit comment fixtures.

Changes

Bot review gate

Layer / File(s) Summary
Walkthrough and scaffolding detectors
scripts/check_bot_review.py
The gate detects failure notices and accepts walkthrough comments with a Run ID plus qualifying review evidence.
Review classification and stub handling
scripts/check_bot_review.py, tests/scripts/test_check_bot_review.py
Review-state precedence changed. Auto-summary comments now use walkthrough detection. Stub failures use consolidated classification and generic messages.
Fixture replay and regression validation
tests/scripts/fixtures/coderabbit/*, tests/scripts/test_check_bot_review.py, changelog.d/*
Tests cover live review bodies, rate-limit failures, detector isolation, replay protection, and expected PASS/FAIL verdicts.

Estimated code review effort: 3 (Moderate) | ~30 minutes

Merge Risk: ⚪ Minimal · up to 99fa0

Qualifying CodeRabbit walkthroughs are recognized while acknowledgements, failure notices, and rate-limit stubs remain rejected. No merge-blocking risk was identified.

Sequence Diagram(s)

sequenceDiagram
  participant GitHubComments
  participant BotReviewGate
  participant WalkthroughDetector
  participant Verdict
  GitHubComments->>BotReviewGate: submit review-state and comment body
  BotReviewGate->>WalkthroughDetector: classify walkthrough or stub markers
  WalkthroughDetector-->>BotReviewGate: return real-review or stub result
  BotReviewGate-->>Verdict: return PASS or EXIT_STUB
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 65.22% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 46 functions across 2 files. (7 skipped: … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the bot-review-gate fix and the main additions: real-body fixtures and replay-guard coverage. The extra wording is somewhat noisy but remains related to the pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 65.22% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 46 functions across 2 files. (7 skipped: 7 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch exec/tsk-evhwml

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@kilo-code-bot

kilo-code-bot Bot commented Sep 7, 2026 •

Copy link
Copy Markdown

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Files Reviewed (2 files)
  • scripts/check_bot_review.py
  • tests/scripts/test_check_bot_review.py

Reviewed by step-3.7-flash:free · Input: 246.3K · Output: 25.7K · Cached: 619K

@jaylfc jaylfc added the gate-integrity-allow Reviewed exception: allows a PR past the gate-integrity check label Sep 8, 2026
@jaylfc
jaylfc merged commit 541220b into dev Sep 8, 2026
45 of 49 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gate-integrity-allow Reviewed exception: allows a PR past the gate-integrity check

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant