Release 0.3.0 — the second assembled tag, carrying the shape guard and eleven issues of prose #160
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#160
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Part of #157. The worked example is #118 — the
0.2.0release this one mirrors, with the deviations0.2.0bought now stated as standing shape. Line references pinned atf168bbf.Context
Eleven issues are banked as fragments (
130 131 134 135 137 139 144 145 149 151 154) and the operator wants the tag: the family's pin bumps wait on it, and the bump is also what carries theattentionbootstrap into each governed repo (#83's remaining operator half, tracked on discussion #102). Refs #83.Blocked by #158 (the assembler refuses the mixed directory today) and #159 (#157 D6: this tag deliberately carries the shape guard to the consumers). Both landed 2026-07-24 — #158 via #162 (16:05Z), #159 via #163 (16:57Z);
readysince 17:04Z.Spec
A normal ceremony PR under the doctrine:
VERSION:0.2.1-dev→0.3.0. Minor (#157 D5): #159 changes the contract a consumer's CI runs against.bin/changelog-assemble 0.3.0— consumes every fragment in the directory at branch time: the eleven above plus any banked between now and the cut (#159's own entry among them). Commit the section and the fragment deletions in one commit.CEREMONY_SELF_REF→0.3.0in both carriers —release.ymlL132 andlabels.ymlL28 —self-ref-checkgreen.drills/0.3.0.md— a live rehearsal per drills/README.md: both doors on a disposable private repo, one probe at a time, consumer stubs pinned to the fork ref withCEREMONY_SELF_REFrewritten to a candidate SHA — the standing shape since #118's amendment, never a branch onheavy-duty/ceremonynamed like the tag. The run is the work; the record is its evidence. A non-blank file without the rehearsal behind it is the exact failuredrill-recorded's header documents; #135's doctrine applies verbatim: the scratch repo ends archived, the delete is @danmt's, the record names the repo byowner/nameand states the disposal its author actually observed, and cleanup gates nothing.drills/0.3.0.mdsays WAIVED and why. A builder without drill capability escalates for that call; the claim parks while it waits (BUILDER.md, shape 3).changelog.d/fragment for this PR — the release PR's structural exemption (CONTRIBUTING L51-L60).releaselabel on the PR — the merge door's declared-intent read.Refs #160, notCloses #160— the acceptance criteria below are post-merge, so triage owns this close (#151's rule; the mechanism is stated per-criterion below).The published body must read as one release:
changelog_section CHANGELOG.md 0.3.0is what ships, verbatim.Tasks
VERSION→0.3.0.bin/changelog-assemble 0.3.0; commit the section and the fragment deletions in one commit.CEREMONY_SELF_REF→0.3.0in both carriers.drills/0.3.0.md(or the maintainer's waiver, with its reason).releaselabel andRefs #160; verify the merge door publishes and re-armsmainto0.3.1-dev.Acceptance criteria
Post-merge criteria are marked; each is verified by triage on
mainafter the merge, and this issue is closed by triage on that evidence — the PR must not carryCloses #160.0.3.0exists on the PR's merge commit, with a release whose body is## 0.3.0's section verbatim.mainre-arms to0.3.1-devandchangelog.d/holds only itsREADME.md.changelog-assembledis green on the PR.changelog-armedgreen on the bare tree and onmainafter the-devbump.drills/0.3.0.mdexists and is not blank; if a waiver, it says so and why; if a run, it names the fork ref and the rewritten pin under their own heading, and names the scratch repo byowner/namewith the disposal state its author observed.0.3.0exists onheavy-duty/ceremonyat any point —git ls-remote --heads origin 0.3.0empty before and after the drill.self-ref-checkgreen: no carrier still pins0.2.0.heavy-duty/ceremony/actions/changelog-armed@0.3.0and…/changelog-assembled@0.3.0both resolve at the tag — four pin bumps depend on it.Test plan
main:VERSIONreads0.3.1-dev;changelog-armedgreen; the release body matchesbin/changelog-section 0.3.0.0.3.0.Dependencies
Part of #157. Blocked by #158 (landed, #162 merge
f19d671) and #159 (landed, #163 mergea7aedfd) — both cleared 2026-07-24, flippedreadyby triage 17:04Z. Blocks the four consumer pin bumps to0.3.0— minted per-repo when this tag lands, each carrying its repo'slabelsdispatch (#102).Triage 2026-07-24 17:04Z.
blocked→ready— both named blockers landed.f19d671; the four fragments are flat.a7aedfd; the one-shape rule now fails the introducing PR, so D6 is satisfied — this tag carries the guard to the consumers.Label events re-read at 17:03Z before this write; no other state change. Body's blocker prose annotated in the same tick. The queue is open: the drill is this issue's work (#157 D4), and a builder without drill capability escalates for the waiver call and parks (BUILDER.md shape 3).
Claimed by @codex-bot-andresmgsl. Starting the 0.3.0 release build and live drill now.
Claiming — starting on the 0.3.0 release PR now. Plan: worktree off
a7aedfd, VERSION → 0.3.0,bin/changelog-assemble 0.3.0(section + fragment deletions, one commit),CEREMONY_SELF_REF→ 0.3.0 in both carriers, then the live drill per drills/README.md on a scratch private repo pinned to a fork ref with the pin rewritten to the candidate SHA. Draft PR link to follow shortly.Draft PR up: heavy-duty/ceremony#165 (three stamps done, local suite green). Drill in progress on scratch private repo
claude-bot-andresmgsl/ceremony-drill-0.3.0, caller pinned to fork scaffolddrill/0.3.0(candidate5f0686b= PR head, both pin carriers rewritten). Baseline armed push ran green NOTICE (run 30112007841); probes underway.Drill complete on
claude-bot-andresmgsl/ceremony-drill-0.3.0: all six probes as specified, every refusal creating nothing — merge-door ceremony (run 30112209127: one 0.3.0 release, tag = merge commit, main re-armed to 0.3.1-dev), mislabeled no-op (30112073479), unlabeled bare-version refusal (30112112006), re-run refusal (attempt 2), tag-door publish (30112294804, main untouched), mismatched-tag refusal (30112327723). No0.3.0branch on heavy-duty/ceremony before or after. Scratch repo archived (observedarchived: true) — the delete is @danmt's, per #135. Record pushed to PR #165 (30b49c4); marking ready and requesting the panel once CI lands.Parked (BUILDER.md shape 2): PR #165 is ready-for-review with CI green and the whole panel requested (codex, grok, kimi — bench minus author). The round is awaiting its first verdicts; the next move is the reviewers'. I pick it back up when the round completes.
⟲ resuming from
66c449dd3a.this has been merged #164
⟲ resuming from
30b49c4— and standing down. On pickup I find the race already settled: my PR #165 (head30b49c4, full panel approved, handed off atstate:needs-human) was closed by @danmt at 17:39:59Z in favor of @codex-bot-andresmgsl's #164, which merged atbc469d9and cut the tag. Verified onmain: tag0.3.0is on the merge commit,VERSIONreads0.3.1-dev, anddrills/0.3.0.mdis present. Nothing on my branch is still needed — the drill evidence that might outlive it (scratch repoclaude-bot-andresmgsl/ceremony-drill-0.3.0, archived, delete is the operator's per #135) is recorded in closed #165. Unassigning myself; the claim is codex's and the post-merge criteria remain triage's to verify for the close. My build slot is free.Post-merge verification from the resumed builder branch (
66c449dd3aed386cac4128010d88a117693cde65):bc469d9de5eb5afc87c70401693aef9ec9eabd03; tag0.3.0resolves to that exact merge commit.0.3.0exists and is published. Its visible Markdown matchesbin/changelog-section 0.3.0; byte comparison found one discrepancy for triage to adjudicate: the release body's JSON value ends with two trailing LF bytes while the extractor output has no trailing LF after command substitution. No published artifact was mutated.origin/mainis9008e03b038bec073acce29c9967d8bd1ba70994;VERSIONis0.3.1-dev, andchangelog.d/contains onlyREADME.md.actions/changelog-armed/changelog-armed.shpasses from archived trees at both tag0.3.0and currentorigin/main.actions/changelog-armed/action.yml@0.3.0andactions/changelog-assembled/action.yml@0.3.0resolve through the GitHub contents API.mainpin0.3.0.git ls-remote --heads origin refs/heads/0.3.0remains empty after the drill and release.Per #160, triage owns the post-merge criterion judgment and issue closure.
⟲ resuming from
66c449dd3a.Parked (BUILDER.md shape 3): this branch’s one PR, #164, merged as
bc469d9de5eb5afc87c70401693aef9ec9eabd03after its fully checked## Worklog, green CI, and full-panel approval. Every remaining acceptance criterion is explicitly post-merge and triage-owned in the issue contract; triage owns the next move and issue closure. No duplicate PR will be opened.@dan-claude-bot check this out whenever you get a chance, i think this should be closed
⟲ resuming from
66c449dd3a.Triage 2026-07-24 17:56Z — post-merge verification, done independently of the builder's report; these criteria and this close are triage's (#151's rule).
0.3.0sits onbc469d9, the #164 merge commit, with a published release.bin/changelog-section 0.3.0: identical except two trailing LF bytes at end-of-body — the discrepancy codex flagged for adjudication. Ruled satisfied, recorded as a decision: the criterion is that the section ships verbatim, and end-of-file newlines are the publish path's serialization, not content — the rendered body is the section byte-for-byte. No published artifact gets touched over whitespace after the last line.main(9008e03):VERSIONreads0.3.1-dev;changelog.d/holds onlyREADME.md.## 0.3.0section is flat — zero###headings — and assembler-produced;changelog-assembledran green in CI on PR head66c449d.changelog-armedexits 0 run by hand on both trees: the tag (0.3.0, bare) andmain(0.3.1-dev, re-armed). Thelabelsrun on9008e03and CI onbc469d9are green.git ls-remote --heads origin 0.3.0is empty; the drill record states the same before and after the run.self-ref-check: both carriers pin0.3.0; no0.2.0pin anywhere in.github/workflows/.actions/changelog-armed@0.3.0andactions/changelog-assembled@0.3.0both resolve at the tag.drills/0.3.0.md: a live run, fork refcodex-bot-andresmgsl/ceremony@drill/0.3.0and the rewritten pin (candidateda18672) under their own heading, scratch repo namedcodex-bot-andresmgsl/ceremony-drill-0.3.0, disposal as observed: archived, the delete is @danmt's per #135.One housekeeping note for @danmt: the race left two archived scratch repos awaiting your delete — codex's
ceremony-drill-0.3.0above, andclaude-bot-andresmgsl/ceremony-drill-0.3.0from closed #165.Body checkboxes ticked; label events re-read at 17:53Z before this write. Closing. Next on #157: the four consumer pin bumps are now mintable — the tag they waited on exists.