Skip to content

Fix: read all three PR comment surfaces in the fix-pr skill - #1512

Merged
ChaoWao merged 1 commit into
hw-native-sys:mainfrom
ChaoWao:fix/read-all-three-pr-comment-surfaces
Jul 27, 2026
Merged

Fix: read all three PR comment surfaces in the fix-pr skill#1512
ChaoWao merged 1 commit into
hw-native-sys:mainfrom
ChaoWao:fix/read-all-three-pr-comment-surfaces

Conversation

@ChaoWao

@ChaoWao ChaoWao commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

Summary

fetch-comments queried only reviewThreads, so the fix-pr loop was
structurally blind to two of the three surfaces a PR carries feedback on. A
CHANGES_REQUESTED review body or a plain "please rebase" conversation comment
could sit unread while the loop reported the PR clean.

Surface Field Resolvable Typically holds
A inline review threads reviewThreads.nodes yes (isResolved) line-anchored nits
B review summary bodies reviews.nodes[].body no CHANGES_REQUESTED rationale, bot summaries
C conversation comments comments.nodes no "please rebase", scope objections, @-mentions

Changes:

  • lib/github/fetch-comments.md — one query for all three surfaces; per-PR
    handled-ID ledger for B/C (neither carries an isResolved bit, so
    re-fetching would re-present answered feedback forever); bot noise filter and
    a dedup rule for summaries that only restate their own inline threads.
  • lib/github/reply-and-resolve.md — split by surface. A keeps reply +
    resolveReviewThread; B/C get a batched gh pr comment with an @login
    mention, since that mutation rejects non-thread node IDs.
  • skills/fix-pr/SKILL.md — Step 2 fetches and counts all three; the exit
    condition now requires no unhandled B/C items; Step 4 classifies every
    surface (a CHANGES_REQUESTED body is actionable by default — it blocks
    merge even with all threads resolved); Step 5 labels items by surface;
    Step 7 covers reply-without-resolve.

Testing

  • markdownlint-cli2 --config tests/lint/.markdownlint.yaml clean on all four files
  • Combined GraphQL query and the jq surface splits verified against PR Add: AICore fault triage to the device error code guide #1501,
    which returns 0 unresolved threads but 1 review body + 3 conversation
    comments — exactly the blind spot this fixes
  • Ledger filter verified against an empty ledger (grep -Fxv -f) — passes all IDs through
  • Simulation tests pass — N/A (documentation only)
  • Hardware tests pass — N/A (documentation only)

fetch-comments queried only reviewThreads, so review summary bodies
and PR conversation comments were never fetched. A CHANGES_REQUESTED
rationale or a plain "please rebase" comment could therefore sit
unread while the fix-pr loop reported the PR clean.

- Fetch reviewThreads, reviews[].body, and issue comments in one query
- Track handled review bodies and conversation comments in a per-PR
  ledger, since neither surface carries an isResolved bit and both
  would otherwise re-present as unaddressed every iteration
- Filter bot status/walkthrough noise, and dedup summaries that only
  restate their own inline threads
- Answer non-thread feedback with a batched PR conversation comment;
  resolveReviewThread stays thread-only, as it rejects review and
  issue-comment node IDs
- Require no unhandled feedback on any surface before the loop exits
@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@ChaoWao, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 7 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ac1c24c4-083b-4a4d-acdf-88c729afce08

📥 Commits

Reviewing files that changed from the base of the PR and between f7909e2 and 98472c0.

📒 Files selected for processing (4)
  • .claude/lib/github/README.md
  • .claude/lib/github/fetch-comments.md
  • .claude/lib/github/reply-and-resolve.md
  • .claude/skills/fix-pr/SKILL.md

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.

@ChaoWao
ChaoWao merged commit 23dbb86 into hw-native-sys:main Jul 27, 2026
13 of 14 checks passed
@ChaoWao
ChaoWao deleted the fix/read-all-three-pr-comment-surfaces branch July 27, 2026 03:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant