Repository navigation
fix(ci): select a merge group's changes from main - #6991
Conversation
Quest-Claim: ea6124f3a33b2530
Replay every Nightly full-gate failure since the gate entered Nightly against the selected queue gate. The only missed edge: Check diffed each merge group from the entry ahead of it, so under HEADGREEN a passing head merged failed entries whose changes it never selected. Diff from origin/main instead. 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. |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 3532ac3
No actionable bugs found in the changed workflow, selector regression coverage, or relevant dispatcher/merge-base handling. Selecting the queue head against main is the right direction: it covers pending predecessors without coupling correctness to the queue grouping setting. Sharing CI_BASE at job scope also keeps selection and execution aligned; release PRs retain --all.
Verification limits: static review only; I did not execute the tests or independently reproduce the historical CI failures and audit counts.
|
No actionable comments were generated in the recent review.
|
|
Merge summary: Codex reviewed 3532ac3 with no findings (thumbs-up), and the OpenAI automated review found no actionable bugs. CI passed (15/15), and (Written by Claude Opus 5.5) |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Completes quest/m0/ci/select-audit.md.
Problem
The quest asked which dependency edges
just ci's selection misses, found by replaying every full run (Nightlyjust gate) that failed while its selected queue run passed. Nightly has run the full gate since October 20 (moq-dev/moq#6038). Of the eight scheduled gates from October 20 through 27, four failed and one timed out:HEADGREENgrouping, so a passing head merged every entry under it. But Check diffed each entry frommerge_group.base_sha, the entry ahead of it, so the head never selected their changes. 37 attempts landed on main without their head passing, all in that interval. They include 13 dangling quest links, amoq-netcompile error, missing JS doc comments, and a JS type error.@moq/watchCMAF decoder tests depend on test-file order. The queue run for moq-dev/moq#6219 ran and passed them. At the Nightly head the whole suite passes locally, whiledecoder.test.tsalone fails the same nine.HEAD~1. Fixed by moq-dev/moq#6708.No path-level edge was missed.
Approach
origin/main, so a head's run covers every entry it can merge, whatever the grouping strategy.CI_BASEmoves to jobenvso the two steps can't disagree.sh/gh/queue.test.tspins that base. It fails against the old workflow.sh/dispatch-query.test.py's merge-group case now has an unmerged Rust entry ahead of a quest-only entry, which must select Rust..github/ci-selection-audit.mdnow holds the full replay, the 37-attempt breakdown, and the cost data.Cost: none at today's settings (
ALLGREEN, one entry built at a time). Of 487 attempts since October 22 23:33 UTC, none started before the entry ahead had merged. With five entries built at once (October 10-20), 806 of 1,047 attempts started on an unmerged entry, and would now also select its changes.Impact
Alternatives
ALLGREEN(read throughGET /repos/{owner}/{repo}/rules/branches/main). This would be cheaper if build concurrency returns. But it adds a network dependency to every queue run, and it ties correctness to a setting that changed twice in three days, while the ruleset was edited eight times. Rejected for the simpler base, which is correct under any strategy.ALLGREENis back. Rejected: nothing would catch the nextHEADGREENswitch.Choices made without asking
Follow-ups
just gate, find the hung test, and consider per-module output timestamps so a hang names its module.@moq/watchtest-order dependence:decoder.test.tsfailed alone at33940b6ebut passes alone on current main. The fix wasn't bisected, because bisect results were inconsistent with state outside the commit. Worth a check that the suite stays order-independent, for example by running each test file alone in a nightly lane.🤖 Generated with Claude Code
(Written by Claude Opus 5.5)