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 was referenced Aug 18, 2026
BColsey
pushed a commit
to BColsey/colibri
that referenced
this pull request
Aug 18, 2026
…gg#1081) Every tiny-oracle job ran on x86, so NEON branches were never compiled, let alone executed — which is how the olmoe (JustVugg#1044) / qwen36 (JustVugg#712 review) / inkling (JustVugg#1080) IDOT class shipped undetected. Two additions: 1. tests/test_int_kernel_exact.c — integer kernels have no rounding excuse: against a pure-C reference on the same inputs they must match bit for bit on every ISA. Covers dot_i4i8 (pair int4xint8), planarize_i4 round-trip, dot_i4p_u (K1 plane layout, the -8*sum(x) identity), and matmul_i4p_idot vs matmul_i4_idot bitwise. The test encodes the real activation contract: qrow_i8 clamps to [-127,127], and -128 must never reach the kernels (the abs/sign VNNI trick cannot represent its negation) — the first draft generated full-range int8 and produced 30 false failures against the SHIPPED kernel, which is the contract documenting itself. 2. An ubuntu-24.04-arm job (timeout-bounded per JustVugg#953's direction): builds every engine (NEON compile coverage — K1's dot_i4p_u NEON branch had never been compiled by anyone), runs the exactness gate with the NEON branches live, and replays the glm_tiny teacher-forcing oracle against a fixture generated on the same runner (same-machine torch reference, no cross-ISA float excuses). The x86 efficiency job also runs the exactness gate, so both ISAs hold the same bar. deepseek-v4 tiny-check on ARM is follow-up (its ARCH plumbing needs checking for aarch64 first). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This was referenced Aug 19, 2026
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