Run the gates on a tag, so beta criterion 2 can be satisfied (#833) - #848
Open
OffgridwithJD wants to merge 1 commit into
Open
Run the gates on a tag, so beta criterion 2 can be satisfied (#833)#848OffgridwithJD wants to merge 1 commit into
OffgridwithJD wants to merge 1 commit into
Conversation
…mandprompt#833) design/RELEASE_PLAN_1.0.md asks for a green matrix "on the tag itself, not on a branch", and names both the nightly deep gate and the sanitizer gate. Nothing fired on a tag. Measured against the three shipped tags, counting workflow runs whose head_sha is the tagged commit: v1.0-dev 0 runs. Nothing has ever run against that commit. v1.0-alpha 2 runs, both event=push ref=main. v1.0-alpha2 8 runs, all ref=main: 2 success on the day of the tag, and 6 nightly deep gate failures from 08-19 to 08-24, which were the environment red that commandprompt#741 diagnosed and closed on 08-25. Not one run is attributed to a tag. The provenance of a release today is "some runs against main that happen to share a SHA", and for v1.0-dev there are none. ci.yml gains tags on its existing push trigger. nightly.yml gains a push trigger it did not have, because criterion 2 names its two jobs specifically and a schedule cannot deliver them for a tag: the nightly after a tag runs against whatever main holds by then, not against the tagged commit. Three things checked rather than assumed before making the change: actions/checkout takes the triggering ref, so a tag run builds the tag. ci.yml's concurrency group is ci-${{ github.ref }} with cancel-in-progress. A tag ref is not refs/heads/main, so the tag run and the main run occupy different groups and neither cancels the other. nightly.yml is group: nightly with cancel-in-progress: false, so a tag run queues behind a scheduled one. nightly.yml guards every job with `if: github.event_name == 'workflow_dispatch' || github.repository == 'commandprompt/pgcolumnar'`. A tag push on the canonical repository satisfies the second clause, so the jobs run there and a fork still skips them. No guard change is needed. The duplicate run against a commit already built on main is the point rather than waste: it is what binds a green result to the release artifact. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KL9BxvtjERL34H1XV8BND2
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.
Closes #833. Two trigger blocks, 25 lines, all of it comment except four.
The gap, measured
design/RELEASE_PLAN_1.0.mdasks for a green matrix "on the tag itself, not on abranch", and names both this repository's deep gate and its sanitizer gate. Nothing
fired on a tag. Counting workflow runs whose
head_shais the tagged commit:v1.0-devv1.0-alphaevent=push ref=mainv1.0-alpha2ref=main; 2 success on the tag day, 6 nightly failures 08-19 to 08-24, which were the environment red #741 closed on 08-25Not one run is attributed to a tag. Release provenance today is "some runs against
mainthat happen to share a SHA", and forv1.0-devthere are none at all.alpha3 is cut on Monday, so without this the tag is cut ungated again.
Proven to fire, not merely written
A trigger that never fires looks exactly like a quiet board, which is the whole content
of #833; shipping it unverified would repeat the defect one level up. So I pushed a
throwaway tag
v0.0.0-tagtrigger-probeat this commit on my fork:Both workflows fired, on the tag ref, at the tagged commit. The nightly run came back
skippedwith all four jobs skipped, which is the fork guard behaving exactly aspredicted below. The CI run was cancelled once it had started (the trigger was the
question, not the matrix) and the probe tag deleted; zero
tagtriggerrefs remain.Three things checked before changing anything
actions/checkouttakes the triggering ref, so a tag run builds the tag ratherthan a branch that happens to contain it.
Concurrency does not cancel anything.
ci.ymlgroups onci-${{ github.ref }}with
cancel-in-progress: true; a tag ref is notrefs/heads/main, so the tag run andthe main run are different groups.
nightly.ymlisgroup: nightlywithcancel-in-progress: false, so a tag run queues behind a scheduled one instead ofkilling it.
The job guards need no change. Every
nightly.ymljob carriesif: github.event_name == 'workflow_dispatch' || github.repository == 'commandprompt/pgcolumnar'.A tag push on the canonical repository satisfies the second clause, so the jobs run
there; a fork still skips them, which is what the probe demonstrated.
The duplicate CI run against a commit already built on
mainis the point rather thanwaste: it is what binds a green result to the release artifact.
Gate
harness_selftestis 168 of 168, and it is the relevant one:selftest/220andselftest/240both read.github/workflows/, so this change is genuinely exercisedrather than merely adjacent to the suite. I checked that before deciding what to run
instead of assuming a workflow edit is untested.
GATEBLOCK