ci: stop running every dev commit twice, and bound every job - #953
Draft
JustVugg wants to merge 1 commit into
Draft
ci: stop running every dev commit twice, and bound every job#953JustVugg wants to merge 1 commit into
JustVugg wants to merge 1 commit into
Conversation
Measured on one commit (33302b8): 36 jobs where 18 suffice. CI event=pull_request -> 14 jobs CI event=push -> 14 jobs <- exact duplicate check event=pull_request -> 4 jobs check event=push -> 4 jobs <- exact duplicate Cause: the release PR is dev->main, so its head IS dev. Listing `main` under `pull_request` meant every push to dev fired both events on the same SHA and ran the whole matrix twice -- doubling runner load, and filling release PRs with doubled check names. Dropping `main` from the PR trigger fixes it without losing visibility: check runs attach to the SHA, so the release PR still shows the push run's results. main's ruleset requires a review, not status checks, so nothing merge-gating is lost -- and a PR mistargeted at main now visibly gets no CI, which is the signal it needs retargeting to dev. Two more gaps this closes, both absent from ci.yml while check.yml has had them all along: - concurrency with cancel-in-progress: superseded runs were never cancelled and kept burning slots to completion. - timeout-minutes on all 12 jobs: #947's macOS job hung after its step failed and held one of the five macOS slots for ~50 minutes, slowing every other PR's queue. Budgets are hang backstops (15-30) against a measured worst case of ~10 minutes, not targets. No check is removed and no job's content changes: the same work runs, once instead of twice, with an upper bound. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
JustVugg
marked this pull request as draft
August 11, 2026 22:44
Owner
Author
|
Parked as draft at the maintainer's call β the CI is fine as it is for now. The findings stay recorded here for whenever it's worth picking up: 36 jobs per dev commit where 18 suffice (the release PR's head is dev, so |
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.
Measured, on a single commit (
33302b8): 36 jobs where 18 suffice.Cause: the release PR is
dev -> main, so its head isdev. Withmainlisted underpull_request, every push to dev fired both events on the same SHA and ran the whole matrix twice. That is half the project's CI wall-clock, and it is also why release PRs show every check name doubled.Dropping
mainfrom the PR trigger costs nothing: check runs attach to the SHA, so the release PR still displays the push run's results.main's ruleset requires a review, not status checks, so nothing merge-gating is lost β and a PR mistargeted at main now visibly gets no CI, which is exactly the signal that it needs retargeting to dev.Two more gaps, both things
check.ymlhas had all along andci.ymlnever did:concurrency+cancel-in-progressβ superseded runs were never cancelled; they ran to completion burning slots nobody was waiting on.timeout-minuteson all 12 jobs β ci: run Metal backend tests on macOSΒ #947's macOS job hung after its step failed and held one of the five macOS runner slots for ~50 minutes, queueing every other PR behind it. Budgets (15β30) are hang backstops against a measured worst case of ~10 min, not targets.No check is removed and no job's content changes. The same work runs, once instead of twice, with an upper bound.
Held for the maintainer's go-ahead until after the v1.6.0 tag β
release.ymlis a separate file and is untouched either way.π€ Generated with Claude Code