Repository navigation
Run compatibility matrices on PRs only for their own files - #1206
Mikola Lysenko (mikolalysenko) wants to merge 2 commits into
Conversation
The ten non-gating compatibility workflows (sbt, PDM, vlt, Bun, Composer, npm, Poetry, Go, pnpm, Pipenv) listed shared engine globs (vendor/, patch/, vex/, scan/, Cargo.lock, crates/**) in their pull_request paths, so they started on 59-85% of PR pushes: ~82,000 Linux + 26,000 Windows job-min/day with 0 PR failures in 24h. The breaks they do catch surface on push to main. Narrow each pull_request filter to the ecosystem's own sources, tests, scripts and docs. Push to main still runs every matrix: unfiltered for six workflows, and PDM, Bun and Poetry's path-filtered push triggers gain every path their PR filter drops, so no change loses its run. ci.yml's per-ecosystem blocking slice is untouched, and workflow_dispatch on the PR branch still gives the full matrix on demand. Fixes #1198 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ws89aDVJwaF9MUUgy1JLWB
|
bugbot run Generated by Claude Code |
Bugbot: coursier_cache.rs, ivy_cache.rs and patch/sidecars/coursier.rs serve only sbt, Mill and scala-cli, but no sbt PR glob matched them. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ws89aDVJwaF9MUUgy1JLWB
|
[final reviewer] Tanmay Singla (@Tanmay182003) One non-merge commit landed after your approval on Generated by Claude Code |
|
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 9da4dfd. Configure here.
|
[burn-down] Ready for review at Generated by Claude Code |
Fixes #1198
Problem
Ten non-gating compatibility workflows listed shared engine globs in their
pull_request.paths:vendor/**,patch/**,vex/**,scan/**,Cargo.lock, andcrates/**for npm and pnpm. The workflows are sbt, PDM, vlt, Bun, Composer, npm, Poetry, Go, pnpm and Pipenv. Because of those globs, they started on 59–85% of PR pushes. The profiler (#1198) measured the cost at about 82,000 Linux + 26,000 Windows job-min/day, with 0 PR failures in 24h (371 success / 33 cancelled / 63 skipped). Each one repeats the per-ecosystem blocking slice thatci.ymlalready runs on every PR, and the breaks they catch show up on push to main. I re-checked the last 12h before this change: sbt, PDM, vlt, Bun and Composer each ran about 120–150 PR runs, with 1 failure among them.Change
*-compatibility.yml, thepull_request.pathsfilter now lists only that ecosystem's own files:tests/*<eco>*files and fixturescrates/*/src/**/*<eco>*, plusvendor/jvm/**for sbt andvendor/pypi*.rsfor the Python tools)ci.ymlin their filter, because their capstone skips the cells thatci.ymlruns.push: mainstill runs every matrix:scripts/tests/test_ci_vlt_rows.py:vendor/**,Cargo.lockandrust-toolchain.tomlare now asserted in vlt's push filter only.gradle-compatibility.yml(CI perf: Gradle patch compatibility — PR runs repeat ci.yml's Gradle e2e tier and run nightly-only extras (~17,000 Linux job-min/day) #1177; open PR Cut release-test wait time and recover Maven downloads #1166 changes that file),ci.yml,ci-ok,clippy.Expected saving
I replayed the last 297 merged commits on main through the old and new PR filters (glob matcher in the same style as GitHub's
paths). This is the share of PRs that trigger each workflow:There is no macOS change: these workflows' macOS legs already left PRs in #1093. There is no direct PR critical-path change either, since none of these workflows is required. Roughly 250 fewer Linux jobs per PR push should cut Linux queue wait for
ci.yml.Measured result
CIandci-okpassed in 33.6 min, and 409 check runs succeeded with 15 skipped. The ten compatibility workflows ran here because the PR edits their files. Together they cost 373 Linux + 101 Windows job-min, from sbt 141 L + 12 W down to Go 10 L. On main, that full set ran on 48–89% of PRs. After this change, a PR that touches only shared engine code skips all of it. A PR that touches only ecosystem files runs just its own workflow.Where each moved run still runs
ci.yml's per-ecosystem blocking slice (e2e rows, coverage-docker), unchanged.workflow_dispatchon the PR branch.Risk
ci-okandclippyare untouched.Validation
actionlintandzizmor --offlineon the 10 changed workflows: same findings asorigin/main, nothing new.python3 -m unittest discover -s scripts/tests: 280 tests OK.coursier_cache.rs,ivy_cache.rsandpatch/sidecars/coursier.rs. Fixed in 9da4dfd.🤖 Generated with Claude Code
https://claude.ai/code/session_01Ws89aDVJwaF9MUUgy1JLWB
Note
Medium Risk
Shared-engine-only PRs may miss full non-blocking compatibility matrices until merge to main; per-ecosystem coverage on every PR still comes from ci.yml.
Overview
Narrows pull_request
pathsfilters on ten non-gating ecosystem compatibility workflows (Bun, Composer, Go, npm, pnpm, PDM, Pipenv, Poetry, sbt/Mill/scala-cli, vlt) so they no longer start when a PR only touches shared engine code (vendor/,patch/,vex/,scan/,Cargo.lock, broadcrates/**, etc.).Each workflow’s PR filter now lists that ecosystem’s workflow/scripts/docs, capstone tests/fixtures, and source globs named after the tool (e.g.
crates/*/src/**/*npm*with pnpm exclusions for npm). Comments document that shared-engine changes still get the full matrix on push tomain,workflow_dispatch, and (for vlt) existing schedules;ci.yml’s per-ecosystem blocking slice is unchanged on every PR (#1198).For workflows that already path-filtered push (PDM, Bun, Poetry), push paths are widened so anything removed from the PR filter still triggers post-merge runs.
scripts/tests/test_ci_vlt_rows.pynow expectsCargo.lock,rust-toolchain.toml, andvendor/**only under vlt’s push trigger, not pull_request.Reviewed by Cursor Bugbot for commit 9da4dfd. Configure here.
Generated by Claude Code