Repository navigation
Skip the vlt compat matrix on ci.yml-only changes - #1284
Merged
Merged
Conversation
vlt-compatibility's PR and push filters list ci.yml because install-proof leaves out the cells ci.yml's vlt e2e rows already run. Most ci.yml edits don't touch those rows, yet each one reran the whole matrix (about 41 Linux + 38 Windows job-min per PR run, plus 22 macOS on push). In the last 24h that was 10 of the 24 merged PRs that triggered the workflow, and 5 of its 45 push runs. A new `changes` job runs scripts/vlt-compat-gate.py. It skips build, plan and everything after them only when ci.yml is the one changed file the event's filter matches and the vlt cells parsed from ci.yml are the same on base and head. matrix-coverage still runs, and schedule, dispatch or any doubt (missing base, parse error) run the full matrix. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YVLGaJFexMvqCdiWxbiHXB
Collaborator
Author
|
bugbot run Generated by Claude Code |
`git diff --name-only` split on whitespace dropped paths with spaces, quoted non-ASCII names, and reported only the new side of a rename, so a vlt file changed that way next to an inert ci.yml edit could read as "only ci.yml changed". Read NUL-separated paths with --no-renames and test it against a scratch repository. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YVLGaJFexMvqCdiWxbiHXB
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 2be0fcd. Configure here.
Mikola Lysenko (mikolalysenko)
enabled auto-merge
October 9, 2026 15:20
Tanmay Singla (Tanmay182003)
approved these changes
Oct 9, 2026
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Oct 9, 2026
Collaborator
Author
|
Dequeued on
Nothing to port. It needs re-queueing once #1293 is fixed. I'm not re-queueing it myself. Generated by Claude Code |
Collaborator
Author
|
Ready for review (burn-down) at
Generated by Claude Code |
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Oct 9, 2026
Mikola Lysenko (mikolalysenko)
removed this pull request from the merge queue due to a manual request
Oct 9, 2026
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.
No open
ci-perfissue was eligible this run. #1170, #1267, #1225, #1176, #1171, #1172, #1173 and #1174 all changeci.yml, which open PR #1247 also changes. #1248 is a settings change. This is measurable waste outsideci.ymland outside the six compat files in #1275.Problem
vlt-compatibility.ymllists.github/workflows/ci.ymlin both itspull_requestandpushfilters. It does that becauseinstall-proofleaves out the cells that ci.yml's vlte2erows already run (scripts/ci-vlt-proof-suites.py). Most ci.yml edits don't touch those rows, though, and every one of them reran the whole matrix:I replayed the last 24h through the new gate:
Change
New
changesjob (ubuntu, ~10 s): runsscripts/vlt-compat-gate.py. It printsmatrix=falseonly when both of these hold:paths:list from the workflow file, so the list isn't duplicated);ci_cells()fromci-vlt-proof-suites.pyreturns the same cells on base and head.Base is the merge commit's parent 1 on a PR and
github.event.beforeon push.schedule,workflow_dispatch, a missing base and any error all printmatrix=true.buildandplannowneed: changesand run only onmatrix == 'true'.install-proof,install-proof-macos,native,canaryanddowngradefollow throughneeds.lock-diff(!cancelled()) gets the same condition explicitly.matrix-coverage(test_ci_vlt_rows.py, which checks ci.yml's vlt rows and hosted-e2e wiring) still runs on every trigger.scripts/tests/test_vlt_compat_gate.py: the decision, the glob matching and the job wiring. ci.yml'spython3 -m unittest discover -s scripts/testspicks it up. Both filters also list the gate script and its test.Expected saving
Measured result
This PR edits `vlt-compatibility.yml` and the gate script, so its own run must run the matrix. The skip itself only shows on later ci.yml-only PRs and pushes, which the profiler can verify.
Where each test still runs
schedulealways givesmatrix=true), and so doesworkflow_dispatch.matrix-coveragestill checks them. The rest of the matrix would run exactly as it did on the base, and it runs again on the next relevant change or nightly.ci-okandclippyare untouched.Risk
ci_cells()doesn't capture. Today it is the only part of ci.yml the matrix reads (ci-vlt-proof-suites.pyininstall-proof). A future reader would need to widen the gate.paths:parser misreads the filter, it returns an empty list, and the gate answersmatrix=true.🤖 Generated with Claude Code
https://claude.ai/code/session_01YVLGaJFexMvqCdiWxbiHXB
Generated by Claude Code