Repository navigation
Decouple CI platform builds and share compatible Rust caches - #1143
Merged
Merged
Conversation
The merge-group CI run took ~46 min, and its critical path was the four Gradle capstone legs: each ran the agent suites plus all 43 hosted real-Gradle tests serially (~31 min of test time per leg). - Split each line's agent+hosted leg into three: the agent suites plus gradle_hosted_[345], gradle_hosted_[b-p], and a catch-all that runs gradle_hosted_ with --skip on exactly those words, so a new test always lands in some leg. test_ci_gradle_prefixes.py's HostedShards checks that every hosted test runs in exactly one leg per line and that the catch-all's skip list matches the other legs. - Drop needs: [test, coverage] from yarn-classic-matrix, yarn-berry-e2e, cargo-old-toolchains and cargo-vex-matrix (which keeps e2e-build). They consume nothing from those jobs and started only after the ~31 min windows test leg. Draft skipping is unchanged: the yarn jobs never run on pull_request, cargo-old-toolchains has its own draft guard, and e2e-build gates cargo-vex-matrix. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Dropping `needs: [test, coverage]` from yarn-classic-matrix, yarn-berry-e2e and cargo-old-toolchains also dropped the draft skip they inherited from those jobs, so draft pushes started compiling and running every leg. Gate them on `github.event.pull_request.draft != true` like the other top-level jobs; push, merge_group and schedule events have no pull_request payload and still run them. Co-Authored-By: Claude <noreply@anthropic.com>
…haned merge-group runs - test (macOS / Windows): two legs per OS via scripts/ci-test-shard.py. The Windows leg spent ~10 min linking ~240 test binaries and ~15 min running them in one job (~31 min, the next critical path once the Gradle legs are sharded). Shard 1 runs the unit tests, doctests and a third of the integration targets; shard 2 the rest. The shards together run exactly the old cargo test --workspace selection (test_ci_test_shard.py), and a renamed target fails loudly. - test-release: skipped on merge_group. Every PR already ran it on its head, and it still runs on main after each merge; in the queue it re-spent ~30 min (23 compiling) per entry. ci-ok counts skipped as passing. - merge-queue-janitor.yml: on each merge group, cancel queued or running merge-group runs whose gh-readonly-queue ref was deleted (the queue rebuilt or dropped that entry). Only a definite 404 cancels; it never fails the merge group. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Keep every E2E and compatibility row while removing cross-platform build barriers and unit-test dependencies. Check all test targets before the expensive fan-out, keep ci-ok dependent on every split job, and share dependency caches by profile and runner image without allowing PR cache writes.
Tanmay Singla (Tanmay182003)
approved these changes
Oct 8, 2026
Collaborator
Author
|
Burn-down agent: labeled Ready for review at 0c9a5e1.
Generated by Claude Code |
Conflicts in ci.yml only: kept main's (#1133) ungated yarn/cargo matrices and draft gate comments, and re-applied this branch's `needs: clippy` preflight on top. Co-Authored-By: Claude <noreply@anthropic.com>
Collaborator
Author
|
bugbot run Generated by Claude Code |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit fb8dbf5. Configure here.
This was referenced Oct 8, 2026
Mikola Lysenko (mikolalysenko)
removed this pull request from the merge queue due to a manual request
Oct 8, 2026
Collaborator
Author
|
Burn-down agent: labeled Ready for review at fb8dbf5.
Generated by Claude Code |
This was referenced Oct 9, 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.
Linux E2E jobs currently wait for the entire Linux/Windows/macOS build matrix, so a slow Windows compile or queued macOS runner delays unrelated Linux tests. Split the producers and consumers by OS so each platform starts as soon as its own binaries are ready. Move the remaining E2E/Cargo/Yarn jobs off unit-test and coverage dependencies they do not consume.
This is stacked on #1133, which supplies Gradle and test sharding plus obsolete merge-group cleanup. Merge that PR first, then retarget this PR to
main.clippyjob with a locked, all-targets/all-features compile check and use it as a preflight for expensive CI jobs. Test-only compile failures now stop the fan-out. The repository ruleset has also been updated to requireclippydirectly, alongsideci-ok, so the queue sees its failure immediately.ci-ok.Validation: 269 Python harness tests passed (one skipped);
cargo check --locked --workspace --all-targets --all-featuresandcargo clippy --locked --workspace --all-features -- -D warningspassed. Compared all 221 rows across the affected E2E/Cargo/Yarn families against the parent and confirmed identical selections. Dependency-graph tests check OS isolation, preflight failure propagation, artifact contracts and aggregate-check completeness. Actionlint has no new findings after filtering its existing optional-matrix-property diagnostics; existing Bun/PDM shell warnings remain. Zizmor found no new distinct issues and no medium/high findings in the changed workflows.Hosted-run timing remains to be measured after landing and warming the shared caches; this PR does not claim an observed end-to-end speedup yet.
Note
Medium Risk
Workflow-only changes affect merge gating and cache behavior; incorrect
needsorci-okwiring could hide failures or skip coverage, but Python scheduling tests target that graph.Overview
Decouples CI by OS so Linux E2E and cargo-vex legs no longer wait on Windows/macOS compiles or queued macOS runners.
e2e-buildis Ubuntu-only;e2e-build-windowsande2e-build-macosreuse the same anchored steps. Windows matrix rows move intoe2e-windowsandcargo-vex-matrix-windows; macOS consumers depend one2e-build-macos.e2e-full, yarn matrices, and similar jobs dropneeds: [test, coverage]in favor ofclippyor the matching OS build only.clippybecomes the compile preflight: lockedcargo clippypluscargo check --locked --workspace --all-targets --all-features. Heavy jobs (test,e2e-build*, docker, yarn, hosted-e2e, etc.)needs: clippyso test-target compile failures stop the fan-out early.Rust caches switch from per-job
keytoshared-key(dev-${{ matrix.os }}vse2e-${{ matrix.os }}) acrossci.ymland compatibility workflows, with comments that main remains the writer and toolchain/manifest hashing still applies.Harness: new
test_ci_scheduling.pyguardsci-okcompleteness, clippy ancestry, and OS-isolated build→consumer edges;test_ci_vlt_rows.job_rowsalso aggregates-windows/-macossibling jobs.Reviewed by Cursor Bugbot for commit fb8dbf5. Configure here.
Generated by Claude Code