release: 0.3.0 — record the drill

Both doors rehearsed live on a disposable private repo, caller pinned to
the fork scaffold carrying the candidate tree with CEREMONY_SELF_REF
rewritten to the candidate SHA; all six probes as specified, every
refusal creating nothing. Scratch repo archived, delete is the
operator's (#135).

Refs #160
This commit is contained in:
claude-bot-andresmgsl 2026-07-24 17:17:02 +00:00
parent 5f0686b395
commit 30b49c4ade

53
drills/0.3.0.md Normal file
View file

@ -0,0 +1,53 @@
# 0.3.0 — drill record
Run 2026-07-24 by `claude-bot-andresmgsl` against the release candidate at
PR #165 head `5f0686b3950d6adc699e750ef5858a20eb084f6f`.
Where: disposable private repo
`claude-bot-andresmgsl/ceremony-drill-0.3.0`, carrying the
`docs/CONSUMERS.md` release caller and a fragment-mode fixture armed at
`0.3.0-dev`. The fixture had `changelog.d/README.md`, one release fragment,
and a non-blank drill record. The repository is archived (observed
`archived: true` after the run), pending the operator's delete.
## Candidate-ref deviation
The pure consumer path still cannot resolve `CEREMONY_SELF_REF: "0.3.0"`
before the candidate creates that tag. No `0.3.0` branch was created in
`heavy-duty/ceremony``git ls-remote --heads origin 0.3.0` was empty
before and after the drill. The scratch caller instead used
`claude-bot-andresmgsl/ceremony@drill/0.3.0`, whose parent is the candidate
tree itself and whose only additional commit (`64af424`) rewrites both
`CEREMONY_SELF_REF` carriers to candidate SHA
`5f0686b3950d6adc699e750ef5858a20eb084f6f`. All runtime machinery was
therefore fetched from the 0.3.0 candidate tree.
## Probes
| # | probe | run | result |
|---|---|---|---|
| 1 | merge-door ceremony | 30112209127 (attempt 1) | ✅ one `0.3.0` release; tag equals merge commit; main re-armed to `0.3.1-dev` with only `changelog.d/README.md` |
| 2 | mislabeled ordinary PR | 30112073479 | ✅ green NOTICE no-op; no tag or release |
| 3 | bare-version PR without `release` | 30112112006 | ✅ refused at decide ("no merged, release-labeled PR is behind this commit"); no tag or release |
| 4 | re-run completed ceremony | 30112209127 (attempt 2) | ✅ refused because tag `0.3.0` already existed; release count stayed one |
| 5 | manual matching tag | 30112294804 | ✅ `0.4.0` published with its changelog section from a side-branch tree; main untouched at `0.3.1-dev` |
| 6 | mismatched tag | 30112327723 | ✅ refused ("tag '9.9.9' does not match the tree's version '0.4.0'"); no `9.9.9` release |
The merge-door `0.3.0` tag and PR #3 merge commit were both
`78586bce3b7a40872fa844173d5b60a213917b3b`. Its release body was exactly
the two fragments the fixture held at the cut — probe 2's ordinary PR had
banked one more fragment before the ceremony, so the section assembled two:
```text
- A harmless doc touch for probe 2 (mislabeled ordinary PR).
- Fragment mode is exercised by the 0.3.0 drill.
```
## Failures and setup corrections
None. Two shapes from the 0.2.0 record were designed out rather than
re-hit: the fixture's first push carried the armed root commit plus a
baseline commit in one push, so fact gathering always had a parent to read
a base version from (discussion #132); and probe 3's refused merge was
reverted before probe 1, the revert landing as a green "still a dev tree"
no-op, restoring the armed fixture the ceremony then consumed.