Automatic review answered goes RED on an installation rate-limit 403 — answered PRs stop draining
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
Research direction
Start with check-review-answered.py and the Review answered workflow that runs it; the issue identifies the installation rate-limit 403/429 path and the x-ratelimit-reset header. Trace how API errors become check verdicts, then inspect the event triggers and concurrency settings that start duplicate runs. Done means transient rate limits do not create a terminal failure and review replies no longer trigger a burst of full checks.
Written by the indexing model from the issue text.
Description
Symptom (2026-10-25): the fleet's PR queue stopped draining. Core #7173, #7180 and #7178 had every review thread answered and green tests, yet the required Automatic review answered context stayed failure, so mergeable_state read blocked.
The check's own verdict (#7173, lane / Automatic review answered, workflow Review answered, run 40187547005):
##[error]check-review-answered cannot read the review of #7173, so it cannot say it was answered: GET repos/Systemorph/MeshWeaver/pulls/7173 failed (1): gh: API rate limit exceeded for installation … 2026-10-25 11:17:56 UTC (HTTP 403)
What used up the budget: answering a review fires both a pull_request_review and a pull_request_review_comment event per reply. #7180 answered 27 threads at about 11:18Z, which started roughly 60 Review answered runs (most cancelled by the concurrency group, but each started and made REST calls), at the same time as other PRs' rounds. The installation's REST budget ran out between 11:17 and 11:21Z, and every check that ran in that window recorded a red verdict.
Why this is a defect and not just bad luck: an unreadable review is an availability failure, not an unanswered verdict. Recording it as a terminal failure leaves the PR blocked until somebody notices and re-runs it. Nothing re-runs it automatically, because refresh only follows a GREEN verdict. #6215 (closed) fixed the same problem for the carry-over check ("back off until the reset"). check-review-answered.py still fails on the 403.
Fix shape:
- On a rate-limit 403/429, wait until
x-ratelimit-resetwithin the job's cap, or leave the check pending/neutral and schedule one retry after the reset. Never record a terminalfailure. - Stop a burst of N replies from costing N×2 full runs. Either debounce on the head (one judgement per head per settle window), or listen to one of the two events only. Plugins#3101 made exactly that change for the Plugins stage-advance lane.
Interim: I re-ran the three runs above by hand at 11:47Z, which is legitimate: the state the check reads did change and the red was infrastructure.
Not established: whether the budget that ran out was GITHUB_TOKEN's per-repo limit or the GitHub App installation's shared limit. The message says "installation", and both are installation tokens. Whether Plugins' review-answered lane reds the same way: its PRs I looked at were blocked on genuinely unanswered threads.
🤖 Generated with Claude Code
- Dominant language
- C#
- Stars
- 12
- Forks
- 5
- Avg merge
- 6h 37m
- Merged PRs (30d)
- 929
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Systemorph/MeshWeaver
-
bug sev:M
Difficulty 4/5 3-5 days Newbie friendliness 35/100
Systemorph/MeshWeaver#7218 · 3 comments ·
Maintainers usually reply within 1 day
-
bug sev:L
Difficulty 4/5 3-5 days Newbie friendliness 25/100
Systemorph/MeshWeaver#7186 · 1 comment ·
Maintainers usually reply within 1 day
-
bug sev:H
Difficulty 5/5 Over a week Newbie friendliness 35/100
Systemorph/MeshWeaver#7181 · 1 comment ·
Maintainers usually reply within 1 day
-
bug sev:L
Difficulty 4/5 3-5 days Newbie friendliness 35/100
Systemorph/MeshWeaver#7172 ·
Maintainers usually reply within 1 day
-
bug sev:L
Difficulty 4/5 3-5 days Newbie friendliness 20/100
Systemorph/MeshWeaver#7171 · 4 comments ·
Maintainers usually reply within 1 day
All issues in Systemorph/MeshWeaver
Similar issues
-
track:release
Difficulty 2/5 1-3 hours Newbie friendliness 80/100
-
[Bug] [Go] Ack returns nil when the server answers with a non-OK statusPossibly taken @leizhiyuan claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
apache/rocketmq-clients#1465 ·
Maintainers usually reply within 2 days
-
fix(testing): HeadlessTerminal disposes services synchronouslyPossibly taken @zidad claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 69/100
RazorConsole/RazorConsole#388 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
starlinghq/starling#209 ·
Maintainers usually reply within 1 day