docs: record 0.6.1 Forgejo rehearsal
All checks were successful
CI / test (pull_request) Successful in 3m19s
CI / release-exercise (pull_request) Successful in 13s
CI / self-guards (pull_request) Successful in 9s
CI / action-exercise (pull_request) Successful in 8s
CI / docs-sync-exercise (pull_request) Successful in 8s
labels / labels (pull_request) Successful in 10s
Refs guard / refs-not-closing (pull_request) Successful in 8s
All checks were successful
CI / test (pull_request) Successful in 3m19s
CI / release-exercise (pull_request) Successful in 13s
CI / self-guards (pull_request) Successful in 9s
CI / action-exercise (pull_request) Successful in 8s
CI / docs-sync-exercise (pull_request) Successful in 8s
labels / labels (pull_request) Successful in 10s
Refs guard / refs-not-closing (pull_request) Successful in 8s
This commit is contained in:
parent
ba3b17af88
commit
b104eca141
1 changed files with 116 additions and 0 deletions
116
drills/0.6.1.md
Normal file
116
drills/0.6.1.md
Normal file
|
|
@ -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.
|
||||||
Loading…
Reference in a new issue