5.5 KiB
0.6.1 — drill record
Run 2026-08-09 by codex-reviewer-andresmgsl against release PR !226,
candidate branch release-0.6.1, canonical candidate SHA
ba3b17af88e0fe1ccae9eefd4b37bf2666f6cdad. All six probes ran on this
Forgejo instance. Each result below was read from its own run and from the
repository state after that run.
Scope ruling — a full rehearsal was owed
The last rehearsed tag was 0.6.0. The release path at this candidate is the
exact output of .github/scripts/release-path.sh. Its measured diff from
0.6.0 is not pin-only: .github/workflows/release.yml, lib/facts.sh, and
the new lib/forge.sh changed. These are release-door bytes, so the
doors-unchanged record shape is refused and this release carries a full live
rehearsal.
Where
Disposable private repository heavy-duty/ceremony-drill-0.6.1, created
by the operator on 2026-08-09 after the fleet identity's personal repository
could not see the organization runner. It carries the docs/CONSUMERS.md
release caller with version-source: file, a fragment-mode fixture armed at
0.6.1-dev, and a non-blank drills/0.6.1.md. The release label existed
before the first probe PR.
Disposal as observed when this record was written: the repository is private and not yet archived. This builder's archive PATCH returned 403 because it has push but not admin permission. The operator was asked to archive it; delete remains the operator's later step. No archive or delete is claimed, and cleanup gates neither review nor merge.
Candidate-ref deviation
The candidate tree pins CEREMONY_SELF_REF to 0.6.1, a tag that did not
exist before this release. No branch named 0.6.1 was created on
heavy-duty/ceremony.
The scratch caller instead uses
codex-reviewer-andresmgsl/ceremony/.github/workflows/release.yml@drill/0.6.1.
That ref is commit f766752090429241c20a0d86aba6f679d713fc2c; its parent is the canonical
candidate SHA above, and its only change rewrites all three
CEREMONY_SELF_REF carriers to that canonical SHA. The release path is
therefore byte-identical to the candidate except for the required candidate
pin rewrite.
Probes
| # | probe | run | result |
|---|---|---|---|
| 1 | merge-door ceremony | 5 | ✅ one 0.6.1 release; tag points to merge commit 438097fc75b1d294b448830a3a79c00b0ee7b83f; main re-armed to 0.6.2-dev |
| 2 | release-labelled ordinary PR | 2 | ✅ green no-op; zero tags and zero releases |
| 3 | bare-version PR without release |
3 | ✅ refused; zero tags and zero releases |
| 4 | completed ceremony repeated | 7 | ✅ refused; release count stayed one and tag 0.6.1 stayed on the original merge commit |
| 5 | manual matching tag | 8 | ✅ 0.6.2 published from its own changelog section; main was unchanged |
| 6 | mismatched tag | 9 | ✅ refused before publication; no 9.9.9 release, and the operator-created probe tag was removed afterwards |
Probe 1 — merge door
PR #4 transitioned VERSION from 0.6.1-dev to 0.6.1, assembled both
fixture fragments, and carried the release label. Run 5 succeeded. The
published body is exactly the assembled 0.6.1 section, tag 0.6.1 points
to PR #4's merge commit, and the workflow pushed 0.6.2-dev to main at
1c74d76f035da4a13f7af0d2a43d611092061204.
Probe 2 — labelled ordinary work
PR #1 carried the release label and added only changelog.d/2.md.
VERSION stayed 0.6.1-dev. Run 2 succeeded as a no-op; the tag and release
lists were both empty afterwards.
Probe 3 — bare version without declared intent
PR #2 assembled the two fragments and transitioned to bare 0.6.1, but had
no release label. Run 3 failed. Both tag and release lists remained empty.
Setup PR #3 then reverted that probe and restored the armed fixture; run 4
was green before the ceremony probe began.
Probe 4 — completed ceremony repeated
Forgejo exposes no run-rerun API, so this probe reproduced the completed
door's input. Setup PR #5 restored 0.6.1-dev and run 6 was green. Release-
labelled PR #6 transitioned to bare 0.6.1 again. Run 7 failed at the
already-existing tag guard. The release count stayed one and tag 0.6.1
still pointed to the original ceremony merge commit, not PR #6.
Probe 5 — matching manual tag
Side branch probe5-tag carried bare VERSION 0.6.2 and a publishable
0.6.2 changelog section. Tag 0.6.2 was created at
a4ba62aa83fdd2e259ed3c3e906b13eaab1abcd0. Run 8 succeeded and published
only that section. Main stayed at the state left by probe 4; the tag door did
not push a version change to it.
Probe 6 — mismatched tag
Tag 9.9.9 was created at the same 0.6.2 tree. Run 9 failed before
publication. The release list remained exactly 0.6.1 and 0.6.2. The
operator-created 9.9.9 ref was then deleted; the remaining tag list was
exactly 0.6.1 and 0.6.2.
Runs that are setup, not probes
- Run 1: the initial
0.6.1-devfixture push; green no-op. - Run 4: PR #3 restored the armed fixture after probe 3; green.
- Run 6: PR #5 restored
0.6.1-devto reproduce the completed ceremony input for probe 4; green.
What this rehearsal establishes
Both release doors ran against the 0.6.1 candidate's Forgejo implementation. The merge door published once, tagged the reviewed merge commit, and re-armed main. It stayed a green no-op for labelled ordinary work, refused a bare unlabelled transition, and refused a repeated ceremony. The tag door published a matching tag without changing main and refused a mismatched tag without publishing. Every refusal created no tag or release of its own.