ceremony/drills/0.6.1.md
2026-08-09 18:20:49 +00:00

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-dev fixture push; green no-op.
  • Run 4: PR #3 restored the armed fixture after probe 3; green.
  • Run 6: PR #5 restored 0.6.1-dev to 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.