Repository navigation
feat(release): ready and merge, from what actually ran — no auto-merge - #107
Merged
Merged
Conversation
A label-gated workflow runs once per label added, and a run whose jobs are all skipped reports success; GitHub shows the latest result of a check name. So required checks and auto-merge can merge a release PR while its real tests failed or still run. release.jl ready reads the Actions runs and jobs of the PR's head commit: for each workflow, the latest run that executed jobs counts; it must be complete and green, every job gated by a label the release needs must have run and passed (one GPU runner, kkt else occidata), the release gate must have passed; the PR open, not a draft, up to date with main, no conflict. release.jl merge checks again and merges with --match-head-commit, release/v branches only, with --confirm. The page on required checks and aggregators is removed. Tests on a fake GitHub (the masking trap, a skipped gated job, GPU fallback, a missing label, a run in progress, the gate or another check failing, the PR's state, merge refused, parsing); mutating the choice of the run or the gated-job rule makes them fail. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.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.
Replaces auto-merge and required checks by a check of what actually ran.
Why. A label-gated workflow runs once per label added. A run whose jobs are all skipped (the label added was another one) reports success, and GitHub shows the latest result of a check name. With required checks and auto-merge, a release PR could be merged while its real tests had failed or were still running; aggregators (
ci-ok) do not help, they are skipped-and-green in those runs too.release.jl ready --repo R --pr Nreads the Actions runs and jobs of the head commit (not the checks): for each workflow, the latest run that executed jobs counts (a run with every job skipped has conclusionskippedand is ignored); it must be complete, every job passed or skipped, every job gated by a label the release needs must have run and passed (GPU: the job of the GPU label on the PR,kktelseoccidata); the release gate must have passed; the PR open, not a draft, up to date withmain, no conflict. A run in progress → wait.release.jl merge --repo R --pr N --confirmrunsreadyagain and merges with--match-head-commit(GitHub refuses if the head changed).release/v…branches only; a dry run without--confirm.docs/conventions/required-checks.md(aggregators, auto-merge settings) is removed;release-gate.mdgains The merge.Checks:
readyon the real CTBase.jl#617 (merged): for each workflow it picks the run that executed jobs (e.g.CI.ymlrun 39146040585, not the skipped ones), accepts the skippedbuild-gpujob of the docs, and reports the PR merged and behindmain→ not ready, as expected.🤖 Generated with Claude Code