release: cut 0.3.0 #164
No reviewers
Labels
No labels
attention
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-ruling
needs-triage
offsite
post-merge
ready
release
scope:docs
scope:guards
scope:labels
scope:release-flow
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/ceremony#164
Loading…
Reference in a new issue
No description provided.
Delete branch "build/160-release-0-3-0"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Refs #160
Acceptance criteria
changelog-assembledis green.drills/0.3.0.mdexists and records the fork ref, rewritten candidate SHA, scratch repository, and observed disposal state.0.3.0branch exists onheavy-duty/ceremonybefore or after the drill.self-ref-checkis green and neither carrier still pins0.2.0.Worklog
VERSIONto0.3.0.0.3.0section and consume them atomically.CEREMONY_SELF_REFcarriers to0.3.0.0.3.0exists.drills/0.3.0.mdwith complete evidence.🔎 reviewing head
66c449dd3a🔎 reviewing head
66c449dd3aVerdict: approve
Reviewed head
66c449dd3aed386cac4128010d88a117693cde65against #160's pre-merge acceptance criteria and the release/drill shape from drills/README.md / #118.Acceptance criteria (pre-merge)
## 0.3.0section;changelog-assembledgreenbin/changelog-assemble 0.3.0from parenta7aedfdover the twelve fragments (130…154,159): section is byte-identical to the PR'sCHANGELOG.md; no###group headings (flat). CIself-guards(includeschangelog-assembled) is green.drills/0.3.0.mdnames fork ref, rewritten pin, scratch repo, observed disposalcodex-bot-andresmgsl/ceremony@drill/0.3.0, candidate SHAda186729c5828fb4923e09d26aa2dd0077ec535f, scratchcodex-bot-andresmgsl/ceremony-drill-0.3.0, disposal archived pending operator delete (#135). Six probes with run IDs.0.3.0branch onheavy-duty/ceremonygit ls-remote --heads origin 0.3.0empty;GET …/git/ref/heads/0.3.0→ 404.self-ref-checkgreen; neither carrier still on0.2.0release.ymlandlabels.ymlpinCEREMONY_SELF_REF: "0.3.0"; localself-ref-check.shpasses; CI self-guards green.Structural checks
VERSION0.2.1-dev→0.3.0; PR carriesRefs #160(notCloses) and thereleaselabel — matches the post-merge-owned close rule (#151 / #160).changelog.d/holds onlyREADME.mdon the head.5b53a6bis parentda18672plus a single commit that rewrites both carriers toda186729c5828fb4923e09d26aa2dd0077ec535f— matches the record's candidate-ref deviation.test/run.sh: 18 files passed, 0 failed.test,self-guards,action-exercise,docs-sync-exercise, release-exercise fixture/step-replay jobs green.What this box could not run independently
codex-bot-andresmgsl/ceremony-drill-0.3.0and its Action runs return 404 to this credential (expected for another identity's private archive). Trust rests on the written record shape plus CIdrill-recorded.No blocking issues. Approve.
🔎 reviewing head
66c449dd3aApprove head
66c449dd3aed386cac4128010d88a117693cde65.Reviewed against #160's pre-merge acceptance criteria, verified in a detached worktree at the head:
bin/changelog-assemble 0.3.0 2026-07-24from the base tree's fragments into a scratch changelog — the resulting section is byte-identical to the one in the PR. 12 entries for the 12 consumed fragments (130 131 134 135 137 139 144 145 149 151 154 159), no sub-headings (#157 D1 flat).changelog.d/at the head holds onlyREADME.md; the release PR correctly carries no fragment of its own.changelog-assembledgreen in CI (self-guards).0.3.0(release.yml:132,labels.yml:28);self-ref-checkgreen in CI; neither carrier still pins0.2.0.drills/0.3.0.mdis a live-run record, not a waiver. It names the fork ref and the rewritten pin under their own heading (## Candidate-ref deviation) and the scratch repo byowner/name(codex-bot-andresmgsl/ceremony-drill-0.3.0) with the disposal its author observed (archived, pending the operator's delete — matching #135's doctrine). I independently verified the fork branchcodex-bot-andresmgsl/ceremony@drill/0.3.0via the API: exactly one commit on top of the drilled headda18672, touching only the two workflow carriers, rewriting bothCEREMONY_SELF_REFpins to that candidate SHA — corroborating the record's central claim.0.3.0branch on heavy-duty/ceremony:git ls-remote --heads origin 0.3.0empty at review time (i.e., after the drill ran).Refs #160(notCloses) as the post-merge criteria require;releaselabel present; PR body criteria checklist accurate.Post-merge criteria (tag/release body,
0.3.1-devre-arm,changelog-armedon the bare tree and onmain, action refs resolving at the tag) are triage's to verify onmain, per the issue — nothing in this PR gates them.What I could not verify, and what I relied on instead:
node,npm,yq,jq,shellcheck, oractionlint. Locally,test/run.shshows failures in the package-json cases (missing node), issueflow-reconcile cases (jq: command not found), and skips the npm/yq-backed cases. I ran the same failing file (issueflow-reconcile.test.sh) atorigin/mainin a scratch worktree: identical failures, 11 for 11 — pre-existing environment gaps, not regressions; this PR's diff (VERSION, CHANGELOG, workflow pins, fragments, drill record) touches none of that code. For those surfaces I relied on CI, which is fully green at this head (test,self-guards,action-exercise,release-exercise,docs-sync-exercise,labelsall success; door jobs correctly skipped on a PR event).archivedflag directly. I relied on the author's record, corroborated by the fork-branch evidence above and the record's internal consistency (run IDs, tag-equals-merge-commit SHA, re-arm state).Reviewed head
66c449dd3aed386cac4128010d88a117693cde65against #160's spec. Approving — everything I could verify, I verified, and it all holds.Ran and confirmed:
a7aedfd(the #163 merge, as the issue records) and ranbin/changelog-assemble 0.3.0: it consumed the same 12 fragments (130 131 134 135 137 139 144 145 149 151 154 159) and produced aCHANGELOG.mdidentical to this PR's —diffclean. The section is flat (bullets only), andbin/changelog-section 0.3.0 CHANGELOG.mdextracts it cleanly, so the published body ships verbatim. Section + fragment deletions land in the single commitda18672per the spec.VERSION0.2.1-dev→0.3.0(minor, per #157 D5); bothCEREMONY_SELF_REFcarriers (release.yml,labels.yml) now"0.3.0".self-ref-check.shgreen locally on this head; no carrier pins0.2.0.git ls-remote --heads origin 0.3.0is empty now, after the drill.codex-bot-andresmgsl/ceremony@drill/0.3.0resolves to5b53a6b; I fetched it — its parent is exactly PR head-at-drill-timeda18672, and its only diff is the two-carrier rewrite to that same canonical candidate SHA. The record's "Candidate-ref deviation" section is accurate, and the standing fork-ref shape (never a branch onheavy-duty/ceremonynamed like the tag) was respected.owner/name(codex-bot-andresmgsl/ceremony-drill-0.3.0), states the disposal actually observed (archived, delete left to the operator, gating nothing), covers all six probes one at a time with every refusal creating nothing. The run IDs are chronologically coherent: baseline → probes 2 and 3 → the fixture-restore revert → merge-door attempt 1 and its refused re-run → tag-door probes — the table orders by probe, the Setup section honestly explains the sequencing.test/run.sh: 18 test files, all pass locally at this head. CI green on66c449d, includingself-guards(changelog-armed / monotonic / assembled, drill-recorded, runner-isolated),release-exercise, andtest.Refs #160, notCloses(post-merge criteria stay with triage per #151);releaselabel present; nochangelog.d/fragment for this PR (the release PR's structural exemption). The second commit adds onlydrills/0.3.0.md, so the drill ran against the release tree it vouches for.Checks this box could not run (per REVIEWER.md): the scratch repo is private and 404s to my token, so the probe runs and archived state inside
codex-bot-andresmgsl/ceremony-drill-0.3.0are taken on the record's word — but every publicly verifiable claim around them (fork ref, its parent, the carrier rewrite, the empty upstream branch namespace) checks out exactly.Observation, non-blocking and not actionable here: the #159 entry is the only section bullet without a trailing issue ref — that is the fragment's own content as merged in #163, and the assembled section correctly carries it verbatim; hand-editing it here would break the assembled guard, so nothing to change in this PR.