forked from heavy-duty/ceremony
drill(0.4.1): probes 2 and 4 ran — all six probes now have live results (#191)
Codex (!194 #1588) is right on the text: #191's criterion is a drill that runs all six probes with 1 and 5 passing, not two probes passing and four recorded. Probe 2 (mislabeled ordinary PR) and probe 4 (a re-run of the completed ceremony) were run on the same consumer, un-archived for them and archived again after. Probe 4 diverges in mechanism because Forgejo 8.0.3 has no run-rerun API: the ceremony was re-run by reproducing its input rather than replaying the run. The record says so, and says which assert refused.
This commit is contained in:
parent
4057c59354
commit
d089ab57b3
1 changed files with 52 additions and 9 deletions
|
|
@ -20,16 +20,59 @@ carriers to that SHA — `release.yml`'s self-checkout is hardcoded to
|
|||
tag that does not exist yet. No `0.4.1` branch was created on
|
||||
`heavy-duty/ceremony`.
|
||||
|
||||
| # | probe | result |
|
||||
|---|---|---|
|
||||
| 1 | merge-door ceremony | ✅ exactly one release `0.4.1`; body is the version's own changelog section; **main re-armed to `0.4.2-dev`**; both assets uploaded |
|
||||
| 3 | bare version, no `release` label | ✅ refused — release count stayed **1** |
|
||||
| 5 | tag door, matching tag | ✅ `0.5.0` published with its own section and both assets; **main VERSION untouched** |
|
||||
| 6 | mismatched tag | ✅ `9.9.9` refused — release count stayed **2** |
|
||||
| # | probe | run | result |
|
||||
|---|---|---|---|
|
||||
| 1 | merge-door ceremony | 637 | ✅ exactly one release `0.4.1`; body is the version's own changelog section; tag and release on merge commit `4a83fa1b`; **main re-armed to `0.4.2-dev`**; both assets uploaded |
|
||||
| 2 | mislabeled ordinary PR | 652 | ✅ green no-op in **7s** on merge commit `e71df4e3` — release count stayed **2**, no tag created |
|
||||
| 3 | bare version, no `release` label | 638 | ✅ refused at `b091aff2` — release count stayed **1** |
|
||||
| 4 | re-run of the completed ceremony | 654 | ✅ refused in **8s** on merge commit `82e7d11b` — release count stayed **2**, and tag `0.4.1` **stayed on `4a83fa1b`**, the original merge commit |
|
||||
| 5 | tag door, matching tag | 639 | ✅ `0.5.0` published with its own section and both assets; **main VERSION untouched** |
|
||||
| 6 | mismatched tag | 640 | ✅ `9.9.9` refused — release count stayed **2**; the tag exists, the release does not |
|
||||
|
||||
Not run: probe 2 beyond the implicit `-dev` no-op at fixture push, and probe
|
||||
4 — a re-run of a completed ceremony, which needs a re-trigger this round did
|
||||
not exercise. Recorded as not-run rather than implied.
|
||||
Probes 2 and 4 were run last, at 15:23–15:28Z, on the same consumer: it was
|
||||
un-archived for them and archived again at the end. Nothing else about the
|
||||
run changed — same candidate ref, same caller pin.
|
||||
|
||||
**Probe 4 diverges in mechanism, not in what it proves.** The 0.3.0 and 0.4.0
|
||||
siblings re-ran the completed ceremony's workflow run (GitHub's "attempt 2").
|
||||
Forgejo 8.0.3 exposes no run-rerun API — there are no `actions/runs/{id}`
|
||||
routes in its swagger at all — so the ceremony was re-run by reproducing its
|
||||
input instead: main re-armed to `0.4.1-dev` (setup run 653), then a second
|
||||
`release`-labeled PR stamping bare `0.4.1` merged on top. That is the same
|
||||
state the door refuses on, reached by a push rather than a re-trigger, and it
|
||||
is stricter than the sibling shape in one way — it re-enters through
|
||||
`facts` → `decide` rather than replaying a decided run.
|
||||
|
||||
Which refusal fired is measurable even without run logs. Replaying the
|
||||
door's own inputs against the live consumer at `82e7d11b`:
|
||||
|
||||
```
|
||||
facts: ver='0.4.1' base_ver='0.4.1-dev' released='' labeled='yes'
|
||||
decide: ceremony=yes
|
||||
```
|
||||
|
||||
So `decide` said **go** — a labeled bare transition is row 6 — and the stop
|
||||
came from the merge door's own pre-publish assert, `release.yml:216-219`,
|
||||
whose comment names this exact probe ("what makes a re-run of a completed
|
||||
ceremony refuse instead of clobber"): the tag existed, so it refused before
|
||||
`forge_tag_create` ever ran. The second net behind it is #191's own verb,
|
||||
and it reads this consumer correctly:
|
||||
|
||||
```
|
||||
forge_release_exists 0.4.1 -> yes 0.5.0 -> yes 9.9.9 -> no
|
||||
```
|
||||
|
||||
`9.9.9` is the probe-6 receipt in the same breath: the tag exists, the
|
||||
release does not.
|
||||
|
||||
Evidence for every probe here is the run conclusion plus the repository
|
||||
state before and after — this instance serves no run logs (the API 404s on
|
||||
every log route), so no probe's result is quoted from a log line.
|
||||
|
||||
End state, as observed when this was written: releases `0.4.1` and `0.5.0`
|
||||
and nothing else; tags `0.4.1` on `4a83fa1b`, `0.5.0` and `9.9.9` on
|
||||
`b091aff2`; the consumer's `main` left at bare `0.4.1` where probe 4 stopped
|
||||
it, private and archived.
|
||||
|
||||
**The asset names survived intact**: `a&b.tgz` and `drill asset.tgz` both
|
||||
appear under those exact names on both releases. Before #191's fix the space
|
||||
|
|
|
|||
Loading…
Reference in a new issue