Repository navigation
fix(pr-pipeline): plan refire-refused's job-token client to github-token - #10842
Conversation
#10811 named lanes-app as the Re-fire step's API_BUDGET_TOKEN, which is right for its GH_TOKEN client. The rate guard also plans each client's read floor to the entry its token names (entryOf), so the ACTIONS_TOKEN client lost github-token's 1000 limit-cap. Pin that client to github-token with budgetLatch, now exported by rate-guard.mjs beside the latch it wraps (label-unblocked re-exports it), and correct the changelog's "No request changes". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
claude-review reviewed No findings. I read the full diff and the PR context, and checked the changed code against
|
|
claude-security-review reviewed No security issues found in this change. critical-findings: 0 What I read: the full diff and the PR context. I also checked Trusted paths touched:
Manifests: no plugin manifests changed. Spend: none. This only changes how API calls are counted and planned. |
Lane-Activity: pr-unblock/resolve-conflicts
Post-merge mutation testingKilled 1, survived 0, timeout 0, no coverage 0, invalid 0, not run 5.
The run's summary has the full report. |
Refs: #10811
Summary
#10811 set
API_BUDGET_TOKEN: lanes-appon pr-merge's Re-fire step,pr-merge.yml:1729, which is right for itsGH_TOKEN(lane token) client. The rate guard also plans each client's read floor from thelimits.apientry its token names:entryOfandmargininrate-guard.mjs, used inobserve. So refire-refused'sACTIONS_TOKEN(job token) client used lanes-app's entry and lost github-token's 1000limit-cap. Its read-floor warning then planned to the header's 5000 instead of 1000. This was the side effect the security review flagged as P5. Before #10811, that step named no bucket and the client planned to github-token.Fix
actionsClient, pinned withbudgetLatch("github-token"). Its readings and its read-floor plan are the job token's, and it shares the process latch's stops.budgetLatchmoves intorate-guard.mjs, beside the latch it wraps. label-unblocked, its first user, re-exports it.Hold path: refire-refused.mjs and rate-guard.mjs are on the hold list, so the owner approves the merge. No secret, token or permission changes.
Verification
refire-refused.test.mjscase, run withAPI_BUDGET_TOKEN=lanes-app: the job-token client's reading lands inapi-budget/github-tokenand none inlanes-app. Its read-floor warning plans to github-token's cap: 950 of 5000 used leaves "50 of the planned 1000". That value is computed by hand fromrate-limits.json, where lanes-app's uncapped plan would leave 4050 and give no warning.latchin place ofbudgetLatch("github-token", latch)) fails the test.mainbuilding its client throughactionsClient, since everymaintest injectsactions.node --teston the pr-merge, work-unblock and log-api-budget suites: 976 pass, 0 fail.Related
🤖 Generated with Claude Code