Repository navigation
Count Every Unresolved Review Thread in pr_review.py - #2693
Conversation
`unresolved=` filtered open threads by a set of known reviewer logins, so a thread from an author outside that set dropped out of the count and the digest read clean while a finding sat open. Count every open thread whoever opened it, and use the known logins only to attribute a thread in the breakdown, where any other author reads as `other`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Merge Risk: ⚪ Minimal · up to No actionable merge-blocking issue is identified; merge after normal checks. Pre-merge checks |
|
There was a problem hiding this comment.
🟢 Approval recommended
The focused change matches the stated behavior and has targeted regression coverage.
0 open findings
What changed in this PR
This PR makes the review digest count every unresolved thread, so an unfamiliar author login cannot make an open thread appear absent.
Changes:
- Count open threads regardless of author and label unknown authors as
other. - Add regression tests and update the documentation.
| File | Description |
|---|---|
| tests/test_pr_review.py | Tests unknown, deleted, and maintainer-authored threads. |
| scripts/README.md | Updates the test summary. |
| scripts/pr_review.py | Counts all open threads and updates the breakdown. |
🧠 Review effort: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
@coderabbitai review |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #2693 +/- ##
========================================
Coverage 59.58% 59.58%
========================================
Files 16 16
Lines 8316 8317 +1
========================================
+ Hits 4955 4956 +1
Misses 3361 3361
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:
|
✅ Action performedReview finished.
|
… Corrections to Main (#2740) ## Summary Promotes 20 changes from `develop` to `main`: - #2737: Flag a Lone Semicolon After an Explanatory Colon in the Prose Gate - #2734: Share pr_review.py wait's Liveness Readings and Open the Held Poll on Its Snapshot - #2732: Share One Bounded Backoff Loop Between pr_review.py wait's Two Polls - #2729: Document pr_review.py wait's Immediate 44 and check_nodes's Node Keys - #2727: Narrow pr_review.py wait's Exit 44 to Required Checks - #2722: Poll an Attested Head's Checks in pr_review.py wait - #2720: Name the Command That Enumerates Open Feature Pull Requests in backlog-burndown - #2718: Point the Skills Refresh Cadence at host-setup.md - #2716: Fall Back to os.defpath for PATH in Two Test Harnesses - #2714: State the Pip Form's Root-Config Type-Check Command in python-codestyle - #2712: State the Build Profile's CI Type Check as the Validator Runs It - #2709: Bring the Fleet-Map workflow-ci-contract Entry and G9 Gap Up to the Skill Description - #2707: Bring the Line-Endings Reference and a Test Docstring to the Corrected Wording - #2705: Drop the Stale Utilities driftNote From the Registry - #2703: Remove the Inert SC2016 Directives in configure.sh and Correct the shell-codestyle Claim - #2701: Report Whether the Fleet Skills Plugin Is Installed and Enabled in the Live Channel - #2699: Align the Audit Report Template Dimensions With AUDIT.md Section 4 - #2697: Harden the Source-Pinning Assertions in test_pr_review.py - #2695: Name the Off-Grammar --branch Outcome in AUDIT.md - #2693: Count Every Unresolved Review Thread in pr_review.py Closes #1396 Closes #2731 Closes #2723 Closes #2725 Closes #2724 Closes #2685 Closes #1308 Closes #2191 Closes #1862 Closes #2711 Closes #2025 Closes #1243 Closes #1237 Closes #1115 Closes #1156 Closes #1757 Closes #1593 Closes #1732 Closes #1509 Closes #1404 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Summary
pr_review.pyfiltered open review threads by a set of known reviewer logins before counting them. A thread opened under a login outside that set dropped out ofunresolved=, sostatusandwaitprinted a digest that read clean while a finding sat open. This implements the disposition recorded on #1404, direction 1: count every unresolved thread whoever opened it, and use the known logins only to attribute a thread in the breakdown.open_reviewer_threadsbecomesopen_threads, which keeps every unresolved thread regardless of author.unresolved=names any author outside the known set asother. It prints whenever more than one group contributes, or wheneverothercontributes at all, since that is the count a reader cannot assume.unresolved_threads(), thereplycommand's paginated walk, now reusesopen_threadsinstead of repeating the same filter.threads_truncateddocstring, and the test summary inscripts/README.mdnow describe the new rule.Callers re-checked
digest()counts and lists every open thread. Both of its callers,statusandwait, throw away the count it returns, so nowaitexit code changes. Exit 0 still means a review covers the head, not that the merge gate passed.uncounted_verdict()(exit 50) now holds off while any thread is open, whoever opened it. Before, it held off only for a known reviewer's thread. It reports again once the thread is resolved, as it already did.Tests
unresolved=1 (other=1). The digest thatstatusandwaitprint carries it.other.uncounted_verdictholds off for an unknown login's open thread.Closes on promotion: #1404
🤖 Generated with Claude Code
Summary by CodeRabbit