Skip to content

Run release evidence once per commit - #222

Merged
jbwinters merged 1 commit into
mainfrom
task/279-release-ci-a
Nov 9, 2026
Merged

jbwinters merged 1 commit into
mainfrom
task/279-release-ci-a

Conversation

@jbwinters

Copy link
Copy Markdown
Collaborator

Release process, first part: run release evidence once per commit.

GM12B:

  • No release/** push trigger. Release branches are only pull-request heads into main, and a pull request from a release/ branch always reruns the proof, so a release head gets one run instead of two. The branch name reaches the scope script only through an environment variable.

Release Evidence:

  • Manual dispatches are grouped by the ref they reproduce; a newer push to a release/** branch cancels the stale head's run; tag and dispatch runs are never cancelled.
  • A push run checks out exactly the pushed commit (github.sha), not the branch tip at checkout time.
  • After a successful full reproduction, the run uploads a marker artifact release-evidence-pass-<commit>-<base>.
  • A jacquard-core-* tag push reuses an earlier reproduction only when scripts/release/find-prior-evidence.sh finds an unexpired marker whose run is this workflow, started in this repository by a push of the tagged commit itself to a release/ branch, and successful. A manual dispatch is never reused, because it runs the code of its ref input, which the run record does not show. Any API or parse failure falls back to a full reproduction.
  • The base input reaches the shell only through an environment variable.

test/cli/release-evidence-reuse.t pins every acceptance rule with a fake gh. docs/ci-cd.md documents the new behaviour and gains a release procedure. Cram transcript files 84 to 85.

The workflows cannot run locally; the YAML parses and the script parses under dash -n. Full local gate: 1246 tests, exit 0.

GM12B drops its release-branch push trigger: release branches are only
pull-request heads into main, and their pull requests always rerun the
proof. Release Evidence groups dispatches by the ref they reproduce,
checks out exactly the pushed commit on a push, and cancels only a stale
release-branch head. A release tag reuses an earlier successful
reproduction of exactly the tagged commit and base, identified by a
marker artifact whose producing run must be this workflow, started in
this repository by a push of the tagged commit to a release branch; a
manual dispatch is never reused, since it runs the code of its ref input.
The CI guide gains a release procedure.
@jbwinters
jbwinters enabled auto-merge (squash) November 9, 2026 01:25
@jbwinters
jbwinters merged commit aa78aba into main Nov 9, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant