Repository navigation
Release path: tag, publish and rehearsal tooling #5306
Description
Scope
The scripts and steps that cut a release: version bump, tag, crates.io publish, release notes, the rehearsal runs on the cut commit, and the pre-push and fleet checks that sit in front of them.
Why it matters
A defect here either blocks a release or lets a bad one ship. Every release since 0.70 has lost hours to one of these rows.
Done when
Every row below is fixed or closed with evidence, and one release window runs from cut to publish with no manual workaround for any of them.
Parent epic: #3998.
Rows
- release: the CHANGELOG gate checks only that the version string exists — four merged PRs were missing from 0.67.0 and nothing went RED #3183 — release: the CHANGELOG gate checks only that the version string exists — four merged PRs were missing from 0.67.0 and nothing went RED (branch:
1c/3183-changelog-covers-merged) - apr --version from crates.io install prints +no-git: build.rs ignores .cargo_vcs_info.json #4110 — apr --version from crates.io install prints +no-git: build.rs ignores .cargo_vcs_info.json (branch:
fix/4110-vcs-info-sha) - aprender-serve published tarball: tokenizer_tests_unk_3609 include_bytes! tests/fixtures, which Cargo.toml excludes (/tests/) #4193 — aprender-serve published tarball: tokenizer_tests_unk_3609 include_bytes! tests/fixtures, which Cargo.toml excludes (/tests/) (branch:
fix/4193-on-070) - rc_fleet_stage: the decode floor measures on gx10 while the :8091 shadow lane holds the same GPU #4477 — rc_fleet_stage: the decode floor measures on gx10 while the :8091 shadow lane holds the same GPU — done when: rc_fleet_stage.sh --self-test shows the lane paused while gpu-q measures, resumed on the normal path and on an early-return path, left as found when idle or whe
- rc_fleet_stage.sh FLEET_DEFAULT disagrees with the fleet-bins catalogue: intel floor-tests the -cpu apr asset while intel runs -wgpu; mini pv marked 'none ships' but ships and runs #4509 — rc_fleet_stage.sh FLEET_DEFAULT disagrees with the fleet-bins catalogue: intel floor-tests the -cpu apr asset while intel runs -wgpu; mini pv marked 'none ships' but ships and runs (branch:
a57/car-4509) - BLD-002 R10: a timer installed a tool on a release host mid-release (crux-latest, llama.cpp b11379) #4670 — BLD-002 R10: a timer installed a tool on a release host mid-release (crux-latest, llama.cpp b11379) (branch:
build-kaizen/4670-release-timer-guard) - BLD-002 R6: a commit that changed two comment lines voided every release result (about 7 h) #4673 — BLD-002 R6: a commit that changed two comment lines voided every release result (about 7 h)
- 0.70.2 T5: BLD-002 R5a land the tag-to-crates.io clock + crates.io fetcher #4683 — 0.70.2 T5: BLD-002 R5a land the tag-to-crates.io clock + crates.io fetcher — done when: a contract, a planted falsifier that goes red, a first green on a real PR, and before-and-after numbers.
- 0.70.2 T10: BLD-002 R5b one door to cargo publish: publish_strict.sh refuses a missing, red or other-commit clean-room run #4687 — 0.70.2 T10: BLD-002 R5b one door to cargo publish: publish_strict.sh refuses a missing, red or other-commit clean-room run — done when: a contract, a planted falsifier that goes red, a first green on a real PR, and before-and-after numbers. (branch:
fix/4687-one-door) - 0.70.2 T19: RQ-3 CRUX nightly; release day runs no CRUX and refuses a missing smoke cell #4702 — 0.70.2 T19: RQ-3 CRUX nightly; release day runs no CRUX and refuses a missing smoke cell — done when: a contract, a planted falsifier that goes red, a first green on a real PR, and before-and-after numbers. (branch:
build-kaizen/4702-crux-nightly) - 0.70.2 T20: RQ-7 weekly cadence timer prints PROMOTE H=<newest RELEASABLE> or SKIP (never tags) #4703 — 0.70.2 T20: RQ-7 weekly cadence timer prints PROMOTE H= or SKIP (never tags) — done when: a contract, a planted falsifier that goes red, a first green on a real PR, and before-and-after numbers. (branch:
build-kaizen/4703-weekly-cadence) - 0.70.2 B3: a version-only bump reuses the saved results (bump to tag under 30 min) #4803 — 0.70.2 B3: a version-only bump reuses the saved results (bump to tag under 30 min) — done when: a contract, the planted falsifiers going red, a first green on a real bump, and a measured bump→tag time (before and after). (branch:
feat/4803-bump-equivalence) - rehearsal guard: a registry token in $CARGO_HOME/config.toml is not checked (follow-up to #4813) #4844 — rehearsal guard: a registry token in $CARGO_HOME/config.toml is not checked (follow-up to feat(release): nightly assets rehearsal — build every release asset on a schedule, unable to upload (#4806) #4813)
- Release-stopping checks: over-budget runtimes and missing entries #4924 — Release-stopping checks: over-budget runtimes and missing entries
- release autopilot: GitHub reads survive two failures; notes-only commit tag-ready on saved results (planted tests) #4939 — release autopilot: GitHub reads survive two failures; notes-only commit tag-ready on saved results (planted tests)
- pre-push-tags: accept a release tag whose commit is the remote head of release/X.Y.Z #4942 — pre-push-tags: accept a release tag whose commit is the remote head of release/X.Y.Z
- pre-push-tags is an unlisted release GATE: put it through gate admission or move it off the release path #4943 — pre-push-tags is an unlisted release GATE: put it through gate admission or move it off the release path
- pre-push tag guard: review follow-ups from #4944 (dispatcher SIGPIPE, install staging, mutant precision) #4945 — pre-push tag guard: review follow-ups from feat(hooks): pre-push tag guard, accepting a release tag at exactly its release branch head #4944 (dispatcher SIGPIPE, install staging, mutant precision)
- C332 a: nightly release rehearsal — release day's script and policy on main's head, 3 green nights before the tag #4959 — C332 a: nightly release rehearsal — release day's script and policy on main's head, 3 green nights before the tag
- LAB: Nightly Train printed NOT RELEASABLE with every lane not_measured (late start judged a head no producer ran on) #4963 — LAB: Nightly Train printed NOT RELEASABLE with every lane not_measured (late start judged a head no producer ran on) (branch:
fix/4963-lanes-rows-test) - Record: 0.70.3 release-path rulings on file; rc-cut.yml off until it refuses a shipped version #4978 — Record: 0.70.3 release-path rulings on file; rc-cut.yml off until it refuses a shipped version
- dogfood pre-publish verdict depends on the machine: two declared gates read host model files #4981 — dogfood pre-publish verdict depends on the machine: two declared gates read host model files
- aprender-update: Product::tag_prefix — workspace tags (v-<crate>-X.Y.Z) have no eligible release #5050 — aprender-update: Product::tag_prefix — workspace tags (v--X.Y.Z) have no eligible release
- Release Rehearsal Nightly: pick job cannot fetch the nightly-evidence branch (not_measured) #5052 — Release Rehearsal Nightly: pick job cannot fetch the nightly-evidence branch (not_measured) (branch:
fix/5052-infra-read-names-status) - Release rehearsal: crux producer and clean-room measure different commits; nothing makes them share one C #5074 — Release rehearsal: crux producer and clean-room measure different commits; nothing makes them share one C (branch:
fix/5074-pick-names-split-c) - nightly train: NOT RELEASABLE (andon, #5081) #5138 — nightly train: NOT RELEASABLE (andon, nightly train: a red night opens a ticket with an owner within 60 min #5081)
- release: T-2 pre-publish dogfood — GATE or LAB (follow-up to #5174) #5176 — release: T-2 pre-publish dogfood — GATE or LAB (follow-up to Release: decide where the R5 dogfood receipt belongs on the publish path (never green) #5174)
- Release churn five-whys v0.70.0–v0.71.1 + retire 'freeze main to tag' (cut at fixed sha in own worktree) #5185 — Release churn five-whys v0.70.0–v0.71.1 + retire 'freeze main to tag' (cut at fixed sha in own worktree) (branch:
feat/5185-nightly-release-receipt) - release: autopilot default state dir sits under the checkout, so a gitignored .cargo/config.toml breaks --locked #5198 — release: autopilot default state dir sits under the checkout, so a gitignored .cargo/config.toml breaks --locked (branch:
la-711a/5198-state-dir) - fleet-bins: UNVERIFIABLE on paiml/aprender #5268 — fleet-bins: UNVERIFIABLE on paiml/aprender
Each row was a separate ticket, folded here under the 100-open-ticket cap (TRIAGE-100, 2026-10-14) and closed as not planned. Reopen a row's ticket when its work starts; an open PR for it reopens it.
Agent: aprender-clerk
Merged in (TRIAGE-100, 2026-10-14)
From #5256 — release models lane: apr --version embeds an auto-length short sha, comparator expects fixed 9 chars (NOT-THE-RELEASE at 0.71.2)
- release models lane: apr --version embeds an auto-length short sha, comparator expects fixed 9 chars (NOT-THE-RELEASE at 0.71.2) #5256 — release models lane: apr --version embeds an auto-length short sha, comparator expects fixed 9 chars (NOT-THE-RELEASE at 0.71.2)
Folded P0 and operator-worded rows (TRIAGE-100, 2026-10-14)
These tickets were folded here by the cop ruling of 2026-10-14 (sub-rows of this master). Each keeps its priority and its owner. The operator text each carried is quoted below exactly as written; if an owner objects, the ticket is reopened.
-
release train: move the release autopilot's tag path into the repo — tag step calls scripts/check_milestone_cut.sh and cannot be reached without it #3459 — release train: move the release autopilot's tag path into the repo — tag step calls scripts/check_milestone_cut.sh and cannot be reached without it (P0 owner:aprender-a7)
Operator, 2026-09-17, verbatim: "Interim until it lands: I run
scripts/check_milestone_cut.sh 0.69.0by hand at freeze and right before the tag"Tag-path defect 3 (operator ruling 2026-09-20 ~14:00Z) —
check_milestone_cut.shcounts PRs -
T-1 deep build does not stamp pv's build sha: release smoke fails on +no-git (0.70.2 C4, C325 setup fix) #4896 — T-1 deep build does not stamp pv's build sha: release smoke fails on +no-git (0.70.2 C4, C325 setup fix) (owner:aprender-a7n)
For 0.70.2 (operator ruling C325). The same build and smoke ran again at b11 with
APR_GIT_SHA_OVERRIDE=b11fd2381set at launch, as the nightly does. 29 of 29 print<bin> 0.70.2 (b11fd2381)and the smoke exits rc 0. This was a launch fix for that run only; the tree fix lands after the 0.70.2 tag, not before. -
CRUX ladder judge reads one flat receipt dir; per-host receipts needed a copy step (0.70.2 C3, C325 setup fix) #4897 — CRUX ladder judge reads one flat receipt dir; per-host receipts needed a copy step (0.70.2 C3, C325 setup fix) (owner:aprender-df)
This was a launch fix for 0.70.2 only (operator ruling C325). It lands in the tree after the tag, not before.
-
E1 D1: rehearse.sh D1 row looks for the old branch-route R4 line and can never fail #5059 — E1 D1: rehearse.sh D1 row looks for the old branch-route R4 line and can never fail (P0 owner:aprender-a7n)
-
0.70.2 T17: BLD-002 R3 version bump at cycle start #4692 — 0.70.2 T17: BLD-002 R3 version bump at cycle start (P1 owner:aprender-wtix-odd)
- T17 R3 version bump at cycle start. Waits on the operator's ruling on when 0.70.2 is bumped. Serves B3. K̂ 3.
-
Release CI: one job, one reserved runner — a release PR must not fan out into 20 queued jobs #4433 — Release CI: one job, one reserved runner — a release PR must not fan out into 20 queued jobs (P0 owner:aprender-78)
OPERATOR, verbatim (2026-09-25, cop session): "the release has 11 jobs??? wtf, merge into one"
-
APR-RELEASE-001: rc = tag on queue-green main sha, receipts gate promotion, 5 fat jobs (diff vs main) #4434 — APR-RELEASE-001: rc = tag on queue-green main sha, receipts gate promotion, 5 fat jobs (diff vs main) (P0 owner:aprender-a7) — reopened 2026-10-14 on its owner's objection; tracked on its own ticket, not here
Operator, verbatim (2026-09-25 ~17:05 Madrid): "Make today's rulings permanent — each gets a ticket, and "done" = merged + enforced". Until this is merged the item is [U], and no fresh session treats it as in force.
Source: operator ruling 16:58, quoted on Release CI: one job, one reserved runner — a release PR must not fan out into 20 queued jobs #4433 (comment 5834467721). Done when: merged, and the diff touches only the sections that change. Same PR as the cop-register ticket.
Activity
[-]MASTER E1: folded sub-tickets[/-][+]Release path: tag, publish and rehearsal tooling[/+]noahgift commentedon Oct 15, 2026
Folded in (cop batch 10:31Z): #5353 #5368 — each is now a checklist row of this master.