Repository navigation
Say What pr_review.py wait --min-rounds Counts and Name It at the Timeout - #2782
Conversation
…eout `--min-rounds N` waits for a round past the Nth, so N is the `rounds=` a `status` read before a re-request. A caller passing one above that count waits for the round after the one it wanted, and the timeout printed a bare `status=PENDING` that reads exactly like no round at all. - The `--min-rounds` help states N is the count already seen, with a worked example. - At the timeout, where a round covers the head but none past the baseline does, the `status=PENDING` line names the baseline, the position it waits for, and the round count. - `scripts/README.md` states what the flag counts. - A test lands a round mid-wait on a head already carrying three: `--min-rounds 3` returns on it, and `--min-rounds 4` times out with the explaining line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A case with only a superseded-head round under --min-rounds asserts the timeout prints the bare status=PENDING, so the new line cannot claim a round covers the head where none does. The README paragraph splits two sentences the sentence-length check flagged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The timeout hint now fires only where the round count rose during the wait, so a reviewer that simply never answered keeps the bare status=PENDING rather than a misdiagnosis inviting a lower N. The line states the count before and after the wait apart from the position. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The superseded-head case now raises the round count mid-wait, so only the coverage clause keeps the bare status=PENDING there. The --min-rounds guard is dropped, since a covered head with a zero baseline returns before this line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The line read coverage and the count rise separately, so a late round on a superseded commit beside an older round on the head told a caller with the right N to lower it. It now asks head_review_done for a round past the count the wait began with, and a case pins that shape. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
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. Comment |
…-Wait A round already on the pull request when wait began leaves the bare status=PENDING, since nothing then tells it apart from a correct count, and the README now says so rather than promising the named line always. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #2782 +/- ##
==========================================
Coverage ? 60.11%
==========================================
Files ? 16
Lines ? 8431
Branches ? 0
==========================================
Hits ? 5068
Misses ? 3363
Partials ? 0
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
🟡 Changes recommended
Clarify that the named timeout position is conditional on a qualifying round arriving during the wait.
1 open finding
What changed in this PR
Clarifies --min-rounds counting and improves timeout diagnostics with focused regression tests.
Changes:
- Updates CLI and README documentation.
- Adds contextual timeout output.
- Adds coverage for qualifying and non-qualifying rounds.
| File | Summary |
|---|---|
tests/test_pr_review.py |
Tests round counting and timeout behavior. |
scripts/README.md |
Documents semantics and timeout behavior. |
scripts/pr_review.py |
Implements contextual timeout diagnostics. |
🧠 Review effort: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
The bare-line case passed N equal to the count the wait began with, where the line cannot fire, so dropping its coverage clause failed nothing. It now passes N one above, the only case the line fires in. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
A recorded local strict-review pass covers head |
…ilure Reporting Fixes to Main (#2816) ## Summary Promotes these pull requests from develop to main: - #2832 Require Every CLI Script to Answer Help and Refuse Unknown Arguments - #2833 Exempt nopep8 as a Leading Directive in the Prose Gate - #2815 Bind the Workspace-Edit Rule Only to an Agent Running Inside VS Code - #2813 Record HomeAssistant-Config's Incidental Python as a driftNote - #2827 Read nopep8 in Any Letter Case in the Prose Gate - #2825 Spend a Head Refusal a Later Genuine Round on That Head Answers - #2819 Read noqa and CSpell Directives in Any Letter Case - #2814 Judge the Prose in Front of a Trailing noqa or pylint Directive - #2811 Name Why a Windows Tool Install Failed and Print Docker's Status in UTF-8 - #2808 Read a Tool Name as a Prose Gate Directive Only Where It Opens the Comment - #2802 Name a File the Prose Gate Cannot Decode in Its Scope Line - #2800 Read a First-Line Comment After a Byte Order Mark as Leading in Every Language - #2797 Name a Python File the Prose Gate Cannot Parse in Its Scope Line - #2794 Let the Unattended Orchestrator Retry a Transient Dispatch Failure - #2792 Close the Remaining Blocked-Promotion Gaps in the Unattended Worker - #2790 Read a Carried Change Set Past the Compare Endpoint's 300-File Ceiling - #2784 Let a Round on the Head Outrank pr_review.py wait's Repo-Wide Quota Reading - #2782 Say What pr_review.py wait --min-rounds Counts and Name It at the Timeout - #2778 Share the Bounded Step Reader Across the Test Harnesses - #2776 Pin the Prose Gate's Override Wiring by Structure - #2773 Exempt a List Item's Label Separator from the Dash Rule for Every Marker and Bold Spelling - #2771 Strip a List Item's Opening Label for Every Marker and Bold Spelling in the Prose Gate - #2768 Page pr_review.py's Changed-File List Past 100 So a Large Promotion Can State Coverage - #2765 Let an Attested Local Pass Cover a Head Beside a Table-Less Copilot Round Closes #2285 Closes #2820 Closes #2818 Closes #2809 Closes #2807 Closes #1659 Closes #2796 Closes #2798 Closes #2163 Closes #1984 Closes #2614 Closes #2767 Closes #2781 Closes #2741 Closes #2775 Closes #1665 Closes #2770 Closes #2738 Closes #2758 Closes #2739 🤖 Generated with [Claude Code](https://claude.com/claude-code)

Summary
pr_review.py wait --min-rounds Nwaits for a round past the Nth, so N is therounds=count astatusread before a re-request. That counting is by design: the help already said "exceed N", and thehead_review_donedocstring and its tests state it. A caller passing one above the count waits for the round after the one it wanted, and the timeout printed a barestatus=PENDINGthat reads exactly like no round at all. This takes the issue's documented arm and makes the timeout say why.--min-roundshelp states N is the count already seen, with a worked example.status=PENDINGline names the round counts before and after and the position it waits for. Otherwise the bare line stays.scripts/README.mdstates what the flag counts.Filed along the way: #2780 (the flag name reads as a count to reach, options to remove the trap) and #2781 (the repo-wide quota arm outranks a round on the head at the timeout, pre-existing).
Closes on promotion: #2741
Local strict review
Seven passes recorded, the last raising 0 findings. The README overclaim the fifth pass listed as
introducedis fixed in 83f16c7, and a test gap the sixth raised in 43d85b8. The pre-existing finding that the repo-wide quota arm shadows the new line is filed as #2781.🤖 Generated with Claude Code