Repository navigation
ci: validate each change once instead of three times - #1109
Merged
Merged
Conversation
Two weeks of CI (709 runs, ~45,000 job-minutes) showed each change tested on its pull request, again in the merge group, and again on the push to master or develop, with change detection selecting nearly every job each time. - Drop the push trigger. The merge group validated the exact tree that lands (~9,700 job-minutes). Daily full runs keep branch caches current. - Run Windows and ARM64 jobs in merge groups and full runs, not on pull requests (~4,500 job-minutes). Only 1 of 336 pull request runs failed on those jobs alone; skipped jobs satisfy their required checks. - Sync master into develop daily instead of on every master push. The sync pull request ran CI 60 times (~4,200 job-minutes).
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. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two weeks of
ci.yml(2026-09-23 to 2026-10-07: 709 completed runs, ~45,000job-minutes) showed that change-based job selection rarely skips anything:
Rust Tests ran in 92% of pull request runs and the Windows/JS jobs in 96%. The
real cost is that each change is validated three times:
This PR validates each change once where it matters:
master/develop, so the push run repeats it (~9,700 job-minutes). Nothingconsumes those runs. Daily full runs (scheduled on
master, dispatched ondevelop) save the branch-scoped Rust caches that pull requests restore.NAPI Build (Windows),JS Test (Windows),NAPI Build (Linux ARM64 GNU)andARM64 Backend Testrun inmerge groups and full runs only (~4,500 job-minutes on ordinary PRs). Only 1
of 336 PR runs failed on these jobs while the Linux jobs passed (an ARM64
backend failure). Their skipped runs satisfy the required checks, so the
rulesets are unchanged. Dispatching
ci.ymlon a branch still runs them.sync-develop.ymlupdated themaster-to-develop PR on every master push, re-running its CI each time (60
runs, ~4,200 job-minutes). It now runs daily at 22:07 UTC, before the develop
full CI at 02:43 UTC, and on dispatch. The retry after a preserved (hand
resolved) sync lands is now the next daily run.
Together with #1105 (the release PR stops re-running everything, ~3,600
job-minutes), this removes roughly 40–45% of CI job-minutes.
Validation
node --test scripts/*.test.mjs: 118 pass. New tests assert thatci.ymlhasno push trigger, that exactly the four platform jobs skip pull requests while
the Linux jobs do not, and that the sync workflow runs daily without push or
pull_request_targettriggers (replacing the old trigger test).actionlintonci.ymlandsync-develop.yml: no new findings (only theexisting
ubuntu-26.04-armrunner label warning).the period above.
the merge group running them, and the first daily sync.
ejects the PR there, instead of on the PR.