Symptom (hit twice on 2026-06-11, PRs #3043 and #3044)
The single Reviewer posts request changes, the author addresses everything, the Reviewer re-reviews the new head and posts a comment-state review explicitly confirming all blocking findings are resolved — but GitHub keeps the PR merge-blocked: a reviewer's CHANGES_REQUESTED stays active until the same reviewer submits an APPROVE or the review is dismissed. Comment-state reviews do not supersede it. Result: every request-changes round permanently wedges the PR pending a manual dismissal by a maintainer, even when the bot's own latest review says "resolved, non-blocking".
Fix
In .claude/commands/review-pr.md: when the verdict is "no correctness/security/cross-engine findings; nits only or nothing" AND a prior wheels-bot CHANGES_REQUESTED exists on an earlier SHA of the same PR, submit the review with event=APPROVE (nits go in the body) instead of COMMENT. Guard: never APPROVE when any blocking finding remains; the existing one-substantive-review-per-SHA contract and post-job marker guard are unaffected (an approval is still a review on the SHA).
Acceptance
- Sequence request-changes → fix push → re-review with zero blocking findings ends with the PR mergeable without human review-state surgery.
- A re-review that still has blocking findings continues to use request-changes.
Symptom (hit twice on 2026-06-11, PRs #3043 and #3044)
The single Reviewer posts
request changes, the author addresses everything, the Reviewer re-reviews the new head and posts a comment-state review explicitly confirming all blocking findings are resolved — but GitHub keeps the PR merge-blocked: a reviewer's CHANGES_REQUESTED stays active until the same reviewer submits an APPROVE or the review is dismissed. Comment-state reviews do not supersede it. Result: every request-changes round permanently wedges the PR pending a manual dismissal by a maintainer, even when the bot's own latest review says "resolved, non-blocking".Fix
In
.claude/commands/review-pr.md: when the verdict is "no correctness/security/cross-engine findings; nits only or nothing" AND a prior wheels-bot CHANGES_REQUESTED exists on an earlier SHA of the same PR, submit the review with event=APPROVE (nits go in the body) instead of COMMENT. Guard: never APPROVE when any blocking finding remains; the existing one-substantive-review-per-SHA contract and post-job marker guard are unaffected (an approval is still a review on the SHA).Acceptance