Repository navigation
fix(auto-merge): retain pending evaluations on every run - #872
Conversation
The queued evaluation default has run on required runs since #741 and on three opted-in repositories since early October. Retire the temporary activation plumbing: every non-cancelling run and both mutation jobs now keep every pending evaluation, and the QUEUE_PENDING_EVALUATIONS opt-out is no longer read. The queue-pending-evaluations input stays declared and ignored so callers that still pass it keep validating. Actor-enforced cancellation keeps the single queue that GitHub requires. Fixes #277 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codex review |
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. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Code coverage overviewLanguages: Go, C# Go / code-coverage/test
C# / code-coverage/dotnet
Go / code-coverage/go
ℹ️ Calculations represent line coverage. Results may change as calculations are updated. Updated |
… the workflow Capture the workflow read before searching it, so a yq failure fails the test instead of matching nothing, and drop a stale "when opted in" from the README now that every run queues. Fixes #277 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
devantler
left a comment
There was a problem hiding this comment.
🤖 Generated by the Agentic Engineer (interactive Claude Code session)
Self-review (fallback — CodeRabbit, Codex and Cursor Bugbot unavailable)
Reviewed commit: e149e6a
- CodeRabbit: rate-limited across the organization since 2026-11-03T09:04Z (coordinator lane-health reading). No review requested.
- Codex: requested at the first head. It answered "You have reached your Codex usage limits for code reviews" at 2026-11-04T19:09:17Z.
- Cursor Bugbot: hit its usage limit at 2026-11-04T00:29Z, with no delivery evidence since. Not requested.
An independent reviewer agent reviewed this PR at bab2f5a20966be763a5616c2cdf81f9ad4b475a7: correctness and security first, then this repository's review guidelines. It ran the PR's tests and mutation fixtures in a detached worktree. I fixed or documented every finding, then re-reviewed the delta to e149e6a3957a244ddb596ac90bb49f9d17d93a45 myself:
- nit, fixed: the stale "When opted in" README sentence.
- nit, fixed: the retired-read check now captures the workflow read first, so a
yqfailure fails the test instead of matching nothing. - Confirmed: no combination of inputs, variables or events gives
cancel-in-progress: truewithqueue: max. Cancellation needs the actor-enforced condition, which forcessingle. A mutation back to the old expression fails the test.
Verdict: no P0/P1 findings
Tried as a user at
🤖 Generated with Claude Code |
Status: held as a draft until CI finishes at 🤖 Generated with Claude Code |
Why
#277 is the last step of the queued auto-merge rollout. When several pull-request events arrived close together, the single concurrency queue could drop the evaluation that was waiting, and that evaluation could be a disarm (#286). Three repositories (
ksail,homebrew-tap,.github) have run with the retained queue since early October. #741 made it the default for direct and organization-required runs on 2026-10-25, and #286 is closed. What was left was the temporary activation plumbing.What
queueis nowmaxunless actor-enforced cancellation applies. GitHub forbids a retained queue together with cancellation, so the cancellation guard is unchanged.disarm-untrusted-updateandauto-merge) usequeue: max.QUEUE_PENDING_EVALUATIONSvariable is no longer read.queue-pending-evaluationsinput stays declared, with the same type and default. It is now marked Deprecated and ignored. This follows AGENTS.md's rule to keepworkflow_callinputs backward-compatible and to keep an alias where feasible. A caller that still passes the input keeps validating instead of failing with "input not defined". The behaviour change is thatworkflow_callcallers which omit the input, or passfalse, now retain pending evaluations as well. That is the rollout's goal.test-enable-auto-merge-author-gate.shnow expects the new queue expressions. It also asserts that nothing outside the input declaration reads the retired input or variable, and that the input stays declared as deprecated. CI keeps its omitted, explicit-false and explicit-true callers, so a later hard removal would break this repository's CI before it broke a consumer.Consumer census
gh search codeacross the organization: no repository passesqueue-pending-evaluations. Only this repository's own CI does. The single externalenable-auto-merge.yamlmention (homebrew-tap) is a comment, not a call.QUEUE_PENDING_EVALUATIONSis set only inksail,homebrew-tapand.github, and always totrue, the October opt-in. No repository opted out, so nothing loses a deliberatefalse. The organization-level variable is unreadable with this token (HTTP 403), so that one stays unknown. The three repository variables are now dead config and can be deleted at any time.Validation
test-enable-auto-merge-author-gate.shpasses here and fails againstmain's workflow (RED before GREEN).test-auto-merge-dry-run.sh,test-ci-metadata-events.shandtest-enable-auto-merge-pentad-gate.shpass. shellcheck is clean. zizmor's only finding,dangerous-triggers, is also onmain. actionlint 1.7.12 reports nothing new: itsqueuekey warning predates this change and comes from an older schema.Fixes #277
🤖 Generated with Claude Code