From b104eca141e1eb4995bf7206b78bf317ae3b7e39 Mon Sep 17 00:00:00 2001 From: Codex Review Date: Sun, 9 Aug 2026 18:20:49 +0000 Subject: [PATCH] docs: record 0.6.1 Forgejo rehearsal --- drills/0.6.1.md | 116 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 drills/0.6.1.md diff --git a/drills/0.6.1.md b/drills/0.6.1.md new file mode 100644 index 0000000..195b71f --- /dev/null +++ b/drills/0.6.1.md @@ -0,0 +1,116 @@ +# 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.