fix(ci): a PR cannot trigger a full workspace run any more - #394
Merged
Conversation
Every reason to distrust the diff used to escalate to the whole workspace. On a PR that is the wrong trade twice over: it buries the change under ~22 shards of unrelated work, and it puts the PR's own legs behind an hour of queue, so the thing under review is the last thing to report. Touching this file was enough to trigger it, which is the case that keeps biting: a one-line CI edit cannot be reviewed against a fast signal. Measured three times today -- #390, #391 and #392 each ran a full matrix to validate a change whose blast radius was one job. `full` now answers only where "check everything" IS the request: the weekly cron and a manual `workflow_dispatch`. On a PR or a push, the same reasons call `widen` instead, which records them, prints them, and writes them to the run summary so a reviewer sees WITHOUT opening a job that this run deliberately tested less -- and that the sweep is one manual dispatch away. Degraded, with their reasons kept: .github/workflows/validate.yml, tests/*.sh mcpp.toml non-member change unclassified path push with no predecessor / predecessor not in history NOT weakened: descriptor and member changes select their members exactly as before. The only thing that changed is what happens when the diff cannot be classified. One consequence handled. `widen` does not exit, so the push-with-no- predecessor path has to leave a usable range behind. `HEAD` alone would diff root-to-HEAD, name every file and select every member -- a full run by another name, which is what this change exists to stop. It leaves the range EMPTY instead: nothing selected, the reason already said, the summary carrying it to a human. Rare either way, since merges here are squashes and `event.before` is present on every normal push. The weekly Sunday 06:00 sweep is deliberately kept. It is the only thing that would have caught the windows vulkan regression before a user did -- main's leg was pinned to `windows-2022` in #385 and the vulkan members were never re-tested there until a full run happened to fire today. Removing the automatic full run on PRs and keeping the periodic net is the same shape openxlings/xim-pkgindex#815 just added on the other side. Verified: the rendered fragment on `pull_request` with a validate.yml edit plus an unclassified path selects only the member its descriptor change names, and the same input under `workflow_dispatch` still goes full. Co-authored-by: sunrisepeak <x.d2learn.org@gmail.com>
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.
What changes
full(the escalation toMEMBERS=__ALL__) now answers only onscheduleandworkflow_dispatch. On apull_requestor apush, the same reasons call a newwidenwhich records them, prints them, and writes them to the run summary..github/workflows/validate.yml,tests/*.shmcpp.tomlnon-member changeWhy
Touching this file was enough to trigger a full run, which is the case that keeps biting: a one-line CI edit cannot be reviewed against a fast signal. Measured three times today — #390, #391 and #392 each ran a ~22-shard matrix to validate a change whose blast radius was one job. On top of that, the PR's own legs queue behind all of it, so the thing under review reports last.
One consequence handled
widendoes not exit, so the push-with-no-predecessor path has to leave a usable range.HEADalone would diff root-to-HEAD, name every file and select every member — a full run by another name, which is what this PR exists to stop. It leaves the range empty instead; the reason is already printed and the summary carries it to a human. Rare either way: merges here are squashes, soevent.beforeis present on every normal push.The weekly sweep is deliberately kept
Sunday 06:00 stays full. It is the only thing that would have caught the windows vulkan regression before a user did — main's leg was pinned to
windows-2022in #385 and the vulkan members were never re-tested there until a full run happened to fire today. Removing automatic full runs on PRs while keeping a periodic net is the same shape openxlings/xim-pkgindex#815 just added on the other side.If you want the cron gone too, it is one line — say so and I will drop it.
Verified
Rendered shell fragment, run standalone:
ruby -ryamlparses the workflow.This PR is its own first test: it edits
validate.yml, so under the old behaviour it would have forced a full matrix. If it selects nothing instead and says why, the change works.