Found driving ptr727/NxWitness#592.
What happened
After a push, pr_review.py wait auto-requested a Copilot review, waited out its full 50-minute timeout, and ended status=PENDING with requested=no. Three further requestReviews mutations returned success, the last one sent after clearing the set with botIds: [] and union: false. None of them added a review_requested event to the pull request's timeline, and reviewRequests.totalCount read 0 immediately after each one.
The maintainer then added Copilot funds, and the next identical mutation added a review_requested event at once. The review landed within minutes.
So an exhausted Copilot allowance showed up only as a request that returned success and left nothing behind. wait's quota signal did not fire, since no refusal comment was posted anywhere.
Suggested detection
After requesting, read the timeline back. Where a successful requestReviews for the Copilot bot adds no review_requested event and the pending set stays empty, report a distinct state, say request_not_recorded, naming the likely cause (the Copilot allowance or entitlement), instead of waiting out the full timeout as if the review were merely slow. The runbook's "accepted but never picked up" paragraph could name this shape too, since clearing and re-requesting does not clear it.
Found driving ptr727/NxWitness#592.
What happened
After a push,
pr_review.py waitauto-requested a Copilot review, waited out its full 50-minute timeout, and endedstatus=PENDINGwithrequested=no. Three furtherrequestReviewsmutations returned success, the last one sent after clearing the set withbotIds: []andunion: false. None of them added areview_requestedevent to the pull request's timeline, andreviewRequests.totalCountread 0 immediately after each one.The maintainer then added Copilot funds, and the next identical mutation added a
review_requestedevent at once. The review landed within minutes.So an exhausted Copilot allowance showed up only as a request that returned success and left nothing behind.
wait's quota signal did not fire, since no refusal comment was posted anywhere.Suggested detection
After requesting, read the timeline back. Where a successful
requestReviewsfor the Copilot bot adds noreview_requestedevent and the pending set stays empty, report a distinct state, sayrequest_not_recorded, naming the likely cause (the Copilot allowance or entitlement), instead of waiting out the full timeout as if the review were merely slow. The runbook's "accepted but never picked up" paragraph could name this shape too, since clearing and re-requesting does not clear it.