forked from heavy-duty/ceremony
drill 0.6.0: probes 1, 3 and 4 recorded from their runs
This commit is contained in:
parent
24b69aea8e
commit
6f30989e2a
1 changed files with 76 additions and 3 deletions
|
|
@ -81,13 +81,86 @@ One row per probe, written from its run. Runs are in
|
|||
|
||||
| # | probe | run | result |
|
||||
|---|---|---|---|
|
||||
| 1 | merge-door ceremony | — | — |
|
||||
| 1 | merge-door ceremony | 30992108742 (attempt 1) | ✅ exactly one `0.6.0` release; tag equals the merge commit; main re-armed to `0.6.1-dev` |
|
||||
| 2 | mislabeled ordinary PR | 30991634654 | ✅ green NOTICE no-op; no tag, no release |
|
||||
| 3 | bare-version PR without `release` | — | — |
|
||||
| 4 | re-run completed ceremony | — | — |
|
||||
| 3 | bare-version PR without `release` | 30991832001 | ✅ refused at decide; no tag, no release |
|
||||
| 4 | re-run completed ceremony | 30992108742 (attempt 2) | ✅ refused at the nothing-exists assert; the release count stayed one |
|
||||
| 5 | manual matching tag | — | — |
|
||||
| 6 | mismatched tag | — | — |
|
||||
|
||||
### Probe 1 — the merge-door ceremony
|
||||
|
||||
PR #4 (`probe1-ceremony`) bumped `0.6.0-dev` to bare `0.6.0` and stamped
|
||||
`## 0.6.0 — 2026-08-05`, assembled from the three fixture fragments by the
|
||||
candidate's own `bin/changelog-assemble` and committed with the deletions
|
||||
in one commit. The `release` label was applied and confirmed before the
|
||||
merge. Facts and verdict:
|
||||
|
||||
```text
|
||||
VER: 0.6.0
|
||||
BASE_VER: 0.6.0-dev
|
||||
RELEASED:
|
||||
LABELED: yes
|
||||
ceremony=yes
|
||||
```
|
||||
|
||||
Observed after the run:
|
||||
|
||||
- **Exactly one** release: `GET /releases` returned `0.6.0` alone, not a
|
||||
draft, not a pre-release, zero assets (no artifact hook in the fixture —
|
||||
the hook step skipped).
|
||||
- `GET /tags` returned `0.6.0` alone, pointing at
|
||||
`64d02539f4a20286afc08b9997f0f8a7d1dbfccd`, which is PR #4's merge commit
|
||||
— the tag names the tree that was reviewed.
|
||||
- The release body was byte-for-byte the assembled section's bullets:
|
||||
|
||||
```text
|
||||
- A second ordinary fragment, written by probe 2 of the 0.6.0 drill (#249).
|
||||
- An ordinary behavior change, landing under the release label (#249).
|
||||
- Fragment mode is exercised by the ceremony 0.6.0 drill (#249).
|
||||
```
|
||||
|
||||
- Main re-armed itself: commit `2d0e19a` ("bump main to 0.6.1-dev — a dev
|
||||
install must not impersonate 0.6.0"), pushed by the job's own token. Main
|
||||
reads `0.6.1-dev` and `changelog.d/` holds only `README.md`.
|
||||
- **The anti-recursion property held.** Neither the tag create nor the bump
|
||||
push started a workflow run — the run list after the ceremony ends at
|
||||
30992108742. That is what makes the merge door the release's only chance
|
||||
to publish, and it is the reason probe 4 below is the door's own guard
|
||||
rather than a second run's.
|
||||
|
||||
### Probe 4 — a re-run of the completed ceremony
|
||||
|
||||
Re-running 30992108742 as attempt 2 re-decided `ceremony=yes` — the facts
|
||||
at that merge commit have not changed — and then died at the assert:
|
||||
|
||||
```text
|
||||
tag '0.6.0' already exists — this release already happened, or a manual tag won the race; refusing to re-release, creating nothing.
|
||||
```
|
||||
|
||||
Tag, publish and bump all skipped. `GET /releases` still returned exactly
|
||||
one `0.6.0`. The refusal is loud (the job is red) and creates nothing, which
|
||||
is the required shape: the assert is what covers a manual tag racing the
|
||||
merge, not only an operator's stray re-run.
|
||||
|
||||
### Probe 3 — a bare-version PR without the `release` label
|
||||
|
||||
PR #3 (`probe3-bare`) bumped `VERSION` to bare `0.6.0` and carried no label;
|
||||
the label list was read as empty before merging. The merge run refused at
|
||||
decide, row 5 of the table:
|
||||
|
||||
```text
|
||||
VER: 0.6.0
|
||||
BASE_VER: 0.6.0-dev
|
||||
RELEASED:
|
||||
LABELED: no
|
||||
the version transitioned ('0.6.0-dev' -> '0.6.0') but no merged, release-labeled PR is behind this commit — a release is a labeled ceremony PR, not a bare push — creating nothing.
|
||||
```
|
||||
|
||||
Notes, the assert, tag, hook, publish and bump all skipped; tags and
|
||||
releases were both still empty afterwards. The merge was then undone and
|
||||
main re-armed to `0.6.0-dev` before the ceremony probe ran (see Setup).
|
||||
|
||||
### Probe 2 — a mislabeled ordinary PR
|
||||
|
||||
PR #2 (`probe2b-mislabeled`) added one changelog fragment and touched no
|
||||
|
|
|
|||
Loading…
Reference in a new issue