Skip to content

Run the release evidence stages in parallel - #225

Merged
jbwinters merged 2 commits into
mainfrom
task/279-release-ci-b2
Nov 9, 2026
Merged

jbwinters merged 2 commits into
mainfrom
task/279-release-ci-b2

Conversation

@jbwinters

Copy link
Copy Markdown
Collaborator

Release process, third part: run the release evidence stages in parallel.

Release Evidence ran scripts/release/reproduce-0.3.sh as one serial job of about 3.5 hours. It now has three jobs:

  • Identify candidate resolves the commit to reproduce (for a manual dispatch, the dispatched ref) and the candidate base once, and on a jacquard-core-* tag push alone looks for a reusable earlier pass. It is the only job with actions: read.
  • Four Evidence stage jobs (core, gm12b, native-clang, native-gcc) run in parallel, each checking out exactly the identified commit and asserting it. They are skipped when a prior pass is reused. Each uploads jacquard-release-0.3-evidence-<run>-<stage>.
  • The required Reproduce 0.3 evidence job passes only when a prior pass is reused or every stage passed, and only after a full pass uploads the release-evidence-pass-<commit>-<base> marker a later tag push reuses. It runs with always(), so in a cancelled run it fails instead of being skipped (a skipped job would satisfy a required check).

reproduce-0.3.sh takes JACQUARD_RELEASE_STAGES (all, the default, or one stage). Every stage first checks the clean checkout, the manifests and historical publications, and builds. A dry run with each capture stubbed shows all runs the same 43 captures in the same order as before, and the four stages together cover every one of them; no evidence step is added or removed. Measured from the last serial run, the longest stage (GM.12B) takes about 90 minutes; stages time out at 300.

Docs: docs/ci-cd.md (Release Evidence), AGENTS.md, README.md, CONTRIBUTING.md, and the 0.3 slice log. Inventory unchanged: 1246 tests, 85 cram files, 57 doctest examples.

Verification: full local gate (temporary storage policy, build, dune runtest, formatting) exit 0 on this tree; the workflow parses. The workflow itself cannot run locally.

Release Evidence now settles the candidate once, runs the reproduction as
four parallel stage jobs (core, GM.12B, native clang, native gcc) on exactly
that commit, and keeps the required check as a final job that passes only
when a prior pass is reused or every stage passed. reproduce-0.3.sh takes
JACQUARD_RELEASE_STAGES; unset, it runs everything as before. No evidence
step is added or removed.
Review follow-ups: the required job runs with always(), so a cancelled run
fails it instead of leaving it skipped, which would satisfy a required check.
The contributing guide and release checklist now describe one artifact per
stage.
@jbwinters
jbwinters enabled auto-merge (squash) November 9, 2026 06:16
@jbwinters
jbwinters merged commit f2defca into main Nov 9, 2026
5 of 8 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