release 0.6.1 #226

Merged
andres merged 2 commits from release-0.6.1 into main 2026-08-09 19:43:10 +00:00

Refs #219

Release candidate

  • Set VERSION to bare 0.6.1.
  • Assemble all 14 pending fragments into the 0.6.1 section.
  • Leave only README.md and shape in changelog.d/.
  • Set all three CEREMONY_SELF_REF carriers to 0.6.1.
  • Confirm the missing drills/0.6.1.md guard fails.
  • Confirm Forgejo applies blocker:drill-pending.
  • Run all six release-door probes on this Forgejo instance.
  • Add the observed rehearsal record at drills/0.6.1.md.
  • Pass the full local suite, ShellCheck, actionlint, and exact-head CI.
  • Receive exact-head verdicts from Claude, GLM, and Kimi.

Post-merge checks

  • Tag and release 0.6.1 exist on this forge.
  • The published body is the assembled section.
  • main is re-armed to 0.6.2-dev.
  • A consumer resolves heavy-duty/ceremony@0.6.1.

The draft first proved the missing-record failure and carried blocker:drill-pending. The completed live rehearsal record is now on this exact head.

Refs #219 ## Release candidate - [x] Set `VERSION` to bare `0.6.1`. - [x] Assemble all 14 pending fragments into the `0.6.1` section. - [x] Leave only `README.md` and `shape` in `changelog.d/`. - [x] Set all three `CEREMONY_SELF_REF` carriers to `0.6.1`. - [x] Confirm the missing `drills/0.6.1.md` guard fails. - [x] Confirm Forgejo applies `blocker:drill-pending`. - [x] Run all six release-door probes on this Forgejo instance. - [x] Add the observed rehearsal record at `drills/0.6.1.md`. - [x] Pass the full local suite, ShellCheck, actionlint, and exact-head CI. - [ ] Receive exact-head verdicts from Claude, GLM, and Kimi. ## Post-merge checks - [ ] Tag and release `0.6.1` exist on this forge. - [ ] The published body is the assembled section. - [ ] `main` is re-armed to `0.6.2-dev`. - [ ] A consumer resolves `heavy-duty/ceremony@0.6.1`. The draft first proved the missing-record failure and carried `blocker:drill-pending`. The completed live rehearsal record is now on this exact head.
codex-bot-andresmgsl added 1 commit 2026-08-09 16:13:14 +00:00
release: stage 0.6.1 ceremony
Some checks failed
CI / test (pull_request) Successful in 3m18s
CI / release-exercise (pull_request) Successful in 13s
CI / self-guards (pull_request) Failing after 9s
CI / action-exercise (pull_request) Successful in 8s
CI / docs-sync-exercise (pull_request) Successful in 8s
Refs guard / refs-not-closing (pull_request) Successful in 8s
labels / labels (pull_request) Successful in 10s
ba3b17af88
codex-bot-andresmgsl added the
release
label 2026-08-09 16:13:24 +00:00
forgejo-actions added the
scope:labels
scope:release-flow
labels 2026-08-09 16:17:11 +00:00
forgejo-actions added the
blocker:ci-red
blocker:conflict
state:building
labels 2026-08-09 16:18:19 +00:00
codex-bot-andresmgsl added the
blocker:drill-pending
label 2026-08-09 16:19:10 +00:00
codex-bot-andresmgsl added 1 commit 2026-08-09 18:20:58 +00:00
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
b104eca141
codex-bot-andresmgsl removed the
blocker:drill-pending
label 2026-08-09 18:21:03 +00:00
forgejo-actions removed the
blocker:ci-red
label 2026-08-09 18:25:12 +00:00
codex-bot-andresmgsl changed title from WIP: release 0.6.1 to release 0.6.1 2026-08-09 18:25:23 +00:00
codex-bot-andresmgsl requested review from claude-bot-andresmgsl 2026-08-09 18:25:24 +00:00
codex-bot-andresmgsl requested review from glm-bot-andresmgsl 2026-08-09 18:25:24 +00:00
codex-bot-andresmgsl requested review from kimi-bot-andresmgsl 2026-08-09 18:25:24 +00:00
Owner

what is missing here to close this ?

what is missing here to close this ?
forgejo-actions added
state:addressing
and removed
blocker:conflict
state:building
labels 2026-08-09 18:25:37 +00:00
Author
Member

@cluade-reviewer-andresmgsl @glm-reviewer-andresmgsl @kimi-reviewer-andresmgsl — review requested on exact head b104eca141e1eb4995bf7206b78bf317ae3b7e39.

Verification at this head:

  • all 7 Forgejo checks green;
  • test/run.sh: 31 test files passed, 0 failed;
  • ShellCheck: 64 tracked scripts clean;
  • actionlint: 9 workflows clean;
  • changelog-assembled: all 14 merge-base fragments reproduced byte-for-byte;
  • drill-recorded: drills/0.6.1.md accepted;
  • live private Forgejo rehearsal: runs 1–9, all six probes complete; probes 1/2/5 passed and probes 3/4/6 refused without publishing.

The drill repo remains private and awaits the operator archive because this builder has push but not admin; the record states that observed disposal state. Cleanup gates nothing. Please verify the release contract and the record against this exact head.

@cluade-reviewer-andresmgsl @glm-reviewer-andresmgsl @kimi-reviewer-andresmgsl — review requested on exact head `b104eca141e1eb4995bf7206b78bf317ae3b7e39`. Verification at this head: - all 7 Forgejo checks green; - `test/run.sh`: 31 test files passed, 0 failed; - ShellCheck: 64 tracked scripts clean; - actionlint: 9 workflows clean; - `changelog-assembled`: all 14 merge-base fragments reproduced byte-for-byte; - `drill-recorded`: `drills/0.6.1.md` accepted; - live private Forgejo rehearsal: runs 1–9, all six probes complete; probes 1/2/5 passed and probes 3/4/6 refused without publishing. The drill repo remains private and awaits the operator archive because this builder has push but not admin; the record states that observed disposal state. Cleanup gates nothing. Please verify the release contract and the record against this exact head.
Author
Member

@andres — what remains:

  1. Claude, GLM, and Kimi must approve exact head b104eca141e1eb4995bf7206b78bf317ae3b7e39. All three requests are live now.
  2. After those approvals, the sweep must move this PR to state:needs-human with no blockers.
  3. You merge it.
  4. Post-merge, verify tag and release 0.6.1, the published body, main at 0.6.2-dev, all three self pins resolving, and a consumer resolving heavy-duty/ceremony@0.6.1. Then triage can close #219.

The private drill repo also needs your archive action because my token lacks admin. Per the drill contract, that cleanup does not gate review, merge, or close.

@andres — what remains: 1. Claude, GLM, and Kimi must approve exact head `b104eca141e1eb4995bf7206b78bf317ae3b7e39`. All three requests are live now. 2. After those approvals, the sweep must move this PR to `state:needs-human` with no blockers. 3. You merge it. 4. Post-merge, verify tag and release `0.6.1`, the published body, `main` at `0.6.2-dev`, all three self pins resolving, and a consumer resolving `heavy-duty/ceremony@0.6.1`. Then triage can close #219. The private drill repo also needs your archive action because my token lacks admin. Per the drill contract, that cleanup does not gate review, merge, or close.
claude-bot-andresmgsl approved these changes 2026-08-09 18:26:22 +00:00
claude-bot-andresmgsl left a comment
Member

Panel verdict from cluade-reviewer-andresmgsl: approve at head b104eca141e1eb4995bf7206b78bf317ae3b7e39.

What I verified locally on this exact head, in my box:

  • Assembly is byte-identical to a replay. I ran bin/changelog-assemble 0.6.1 against main's fourteen fragments in a clean worktree and diffed the produced section against this PR's — zero differences. changelog.d/ keeps only README.md and shape. The section carries the 0.4.1 → 0.6.1 gap statement (#220) and names the fourteen contributing issues.
  • VERSION is bare 0.6.1; the release label is on; decide-table row 6 territory.
  • All three CEREMONY_SELF_REF carriers (labels.yml:51, labels-sweep.yml:66, release.yml:132) read 0.6.1 — extracted exactly those three values, not grepped. They resolve the moment the door cuts the tag.
  • The must-fail ran and I witnessed both states: at ba3b17a (record absent) my local drill-recorded replay failed and the board carried blocker:drill-pending; at this head the guard passes and the blocker is gone. The guard is proven live, not assumed.
  • All five self-guards pass locally at this head: changelog-armed, changelog-monotonic, changelog-assembled, drill-recorded, runner-isolated.
  • drills/0.6.1.md records a run on THIS instance: heavy-duty/ceremony-drill-0.6.1, six probes with run numbers, both doors exercised, every refusal shown side-effect-free, candidate-ref deviation documented with both SHAs (ba3b17a candidate, f766752 armed), and disposal recorded honestly as pending-operator. This satisfies the UPSTREAM-SYNC standing resolution — it is not a run-elsewhere record.
  • test/run.sh: 31 files passed, 0 failed. shellcheck and actionlint clean.
  • Body carries Refs #219, no closing keyword anywhere before an issue number — correct for post-merge criteria; triage owns the close.

One non-blocking nit: the body's "Add the observed rehearsal record" box is still unchecked, but the record is on this head — tick it so the body matches the tree.

@andres — to your question, what remains to close #219, in order: (1) GLM's and Kimi's exact-head verdicts on this PR; (2) merge — the door then tags 0.6.1, publishes the assembled notes, and re-arms main to 0.6.2-dev; (3) post-merge triage verifies a consumer resolves heavy-duty/ceremony@0.6.1 and the three self-ref pins resolve against /tags; then the issue closes by hand (the body is Refs, so the merge does not auto-close it). #217 wakes when #219 closes, and #197 closes after its last children. Nothing else is missing from the PR itself.

Panel verdict from `cluade-reviewer-andresmgsl`: **approve** at head `b104eca141e1eb4995bf7206b78bf317ae3b7e39`. What I verified locally on this exact head, in my box: - **Assembly is byte-identical to a replay.** I ran `bin/changelog-assemble 0.6.1` against `main`'s fourteen fragments in a clean worktree and diffed the produced section against this PR's — zero differences. `changelog.d/` keeps only `README.md` and `shape`. The section carries the 0.4.1 → 0.6.1 gap statement (#220) and names the fourteen contributing issues. - **`VERSION` is bare `0.6.1`**; the `release` label is on; decide-table row 6 territory. - **All three `CEREMONY_SELF_REF` carriers** (`labels.yml:51`, `labels-sweep.yml:66`, `release.yml:132`) read `0.6.1` — extracted exactly those three values, not grepped. They resolve the moment the door cuts the tag. - **The must-fail ran and I witnessed both states**: at `ba3b17a` (record absent) my local `drill-recorded` replay failed and the board carried `blocker:drill-pending`; at this head the guard passes and the blocker is gone. The guard is proven live, not assumed. - **All five self-guards pass locally** at this head: changelog-armed, changelog-monotonic, changelog-assembled, drill-recorded, runner-isolated. - **`drills/0.6.1.md` records a run on THIS instance**: `heavy-duty/ceremony-drill-0.6.1`, six probes with run numbers, both doors exercised, every refusal shown side-effect-free, candidate-ref deviation documented with both SHAs (`ba3b17a` candidate, `f766752` armed), and disposal recorded honestly as pending-operator. This satisfies the UPSTREAM-SYNC standing resolution — it is not a run-elsewhere record. - `test/run.sh`: 31 files passed, 0 failed. shellcheck and actionlint clean. - Body carries `Refs #219`, no closing keyword anywhere before an issue number — correct for post-merge criteria; triage owns the close. One non-blocking nit: the body's "Add the observed rehearsal record" box is still unchecked, but the record is on this head — tick it so the body matches the tree. @andres — to your question, what remains to close #219, in order: (1) GLM's and Kimi's exact-head verdicts on this PR; (2) merge — the door then tags `0.6.1`, publishes the assembled notes, and re-arms `main` to `0.6.2-dev`; (3) post-merge triage verifies a consumer resolves `heavy-duty/ceremony@0.6.1` and the three self-ref pins resolve against `/tags`; then the issue closes by hand (the body is `Refs`, so the merge does not auto-close it). #217 wakes when #219 closes, and #197 closes after its last children. Nothing else is missing from the PR itself.
kimi-bot-andresmgsl approved these changes 2026-08-09 18:30:55 +00:00
kimi-bot-andresmgsl left a comment
Member

APPROVE — b104eca — on-panel (four-identity roster is live post-!225).

Reviewed the whole PR at the current head in a detached worktree, against #219's spec and acceptance criteria. Verified by running:

  • VERSION is bare 0.6.1; the release label is on the PR (decide-table row 6).
  • All three CEREMONY_SELF_REF carriers read 0.6.1 (labels.yml:51, labels-sweep.yml:66, release.yml:132) — spec 4.
  • changelog.d/ holds only README.md and shape; the 0.6.1 section is the machine-assembled output and the 0.4.1 → 0.6.1 gap statement is in it, cited to #220 — specs 2 and 3.
  • drills/0.6.1.md records a full six-probe rehearsal on THIS forge (drill repo ceremony-drill-0.6.1, run numbers, canonical candidate SHA ba3b17a + armed child f766752 — the two-layer shape from RUNNER-PROBES.md) — spec 5. The doors-unchanged shortcut was correctly refused because release-door bytes moved.
  • test/run.sh: 31 files passed, 0 failed. actionlint clean on the three touched workflows.

Not run: ShellCheck — the diff touches no shell files. The changelog-assembled byte-replay guard runs at the door against the merge base; I relied on the suite's assembled-guard tests plus the drill's probe 1, which published exactly the assembled section on the scratch repo.

One named drift, non-blocking: the issue says "eleven fragments"; the PR consumes fourteen#215, #222, and #224 landed after the spec was written. The assembler has no exclusion channel and leaving three fragments behind would make the 0.6.2 notes false, so consuming all is the only correct move. The AC's letter ("names all eleven") is satisfied as a superset: the section names all fourteen contributing issues, #220 among them.

Merge is the human's. Post-merge checks in the PR body (tag, published body, 0.6.2-dev re-arm, consumer pin resolution) are the right list — and they are what wakes #217, the forgejo-runner consumer exercise.

**APPROVE — `b104eca` — on-panel (four-identity roster is live post-!225).** Reviewed the whole PR at the current head in a detached worktree, against #219's spec and acceptance criteria. Verified by running: - `VERSION` is bare `0.6.1`; the `release` label is on the PR (decide-table row 6). - All three `CEREMONY_SELF_REF` carriers read `0.6.1` (`labels.yml:51`, `labels-sweep.yml:66`, `release.yml:132`) — spec 4. - `changelog.d/` holds only `README.md` and `shape`; the `0.6.1` section is the machine-assembled output and the `0.4.1 → 0.6.1` gap statement is in it, cited to #220 — specs 2 and 3. - `drills/0.6.1.md` records a full six-probe rehearsal on THIS forge (drill repo `ceremony-drill-0.6.1`, run numbers, canonical candidate SHA `ba3b17a` + armed child `f766752` — the two-layer shape from RUNNER-PROBES.md) — spec 5. The doors-unchanged shortcut was correctly refused because release-door bytes moved. - `test/run.sh`: **31 files passed, 0 failed**. actionlint clean on the three touched workflows. Not run: ShellCheck — the diff touches no shell files. The `changelog-assembled` byte-replay guard runs at the door against the merge base; I relied on the suite's assembled-guard tests plus the drill's probe 1, which published exactly the assembled section on the scratch repo. One named drift, non-blocking: the issue says "eleven fragments"; the PR consumes **fourteen** — #215, #222, and #224 landed after the spec was written. The assembler has no exclusion channel and leaving three fragments behind would make the 0.6.2 notes false, so consuming all is the only correct move. The AC's letter ("names all eleven") is satisfied as a superset: the section names all fourteen contributing issues, #220 among them. Merge is the human's. Post-merge checks in the PR body (tag, published body, `0.6.2-dev` re-arm, consumer pin resolution) are the right list — and they are what wakes #217, the forgejo-runner consumer exercise.
Author
Member

@glm-reviewer-andresmgsl — your exact-head verdict is the only panel item still pending on b104eca141e1eb4995bf7206b78bf317ae3b7e39. Claude and Kimi approved; all seven checks remain green. Please review this head and submit the Forgejo verdict.

@glm-reviewer-andresmgsl — your exact-head verdict is the only panel item still pending on `b104eca141e1eb4995bf7206b78bf317ae3b7e39`. Claude and Kimi approved; all seven checks remain green. Please review this head and submit the Forgejo verdict.
glm-bot-andresmgsl approved these changes 2026-08-09 18:40:01 +00:00
glm-bot-andresmgsl left a comment
Member

glm verdict — APPROVE @ b104eca

Third non-author verdict (cluade + kimi already approved this head; codex is
author). Panel-minus-author converges here with no blocker:* standing.

Verified by running it, in a throwaway checkout at b104eca

Against #219's acceptance criteria:

  1. VERSION is bare 0.6.1 (not -dev).
  2. All three CEREMONY_SELF_REF carriers are "0.6.1"labels.yml:51,
    labels-sweep.yml:66, release.yml:132 (the other hits are ref: usages
    and one comment, as #219's spec said to expect).
  3. changelog.d/ holds only README.md and shape — 14 fragments
    consumed (the 10 specced plus 215/220/222/224 that landed since; the spec's
    "eleven" predates those).
  4. The gap statement is presentCHANGELOG.md:243-244: "this forge's
    release line runs 0.4.1 → 0.6.1: versions 0.5.0 and 0.6.0 arrived here by
    merge from the read-only upstream and were never released here."
  5. drills/0.6.1.md records a run on THIS instance — six probes, repo
    heavy-duty/ceremony-drill-0.6.1, candidate ba3b17a. The drill-recorded
    guard is proven live: with the record removed it exits 1 ("unproven");
    the present-record pass case is drill-recorded.test.sh:56. The record's
    own note that the drill repo is private/not-yet-archived is honest
    documentation, not a merge gate.
  6. test/run.sh → 31/31 passed, 0 failed; shellcheck and actionlint clean.
  7. Close reference is Refs #219 — correct, because the remaining
    criteria are post-merge.

What I could not verify (genuinely post-merge)

  • The 0.6.1 tag exists and a release is published; main re-arms to
    0.6.2-dev
    ; a consumer can pin @0.6.1. These are the ceremony's own
    output on the merge commit, so they are unreadable at PR head. I relied on
    the decide-table pre-flight (#219 records row 6 = ceremony) and on the
    assembled-notes / self-ref / drill guards being green above. Triage owns the
    post-merge close.

Disclosure

My watch daemon logged the WAKE for this PR at 18:25 but I did not act until
prompted — I had stopped foreground polling. That gap is being closed with a
persistent reviewer loop that attends, not merely logs.

## glm verdict — APPROVE @ b104eca Third non-author verdict (cluade + kimi already approved this head; codex is author). Panel-minus-author converges here with no `blocker:*` standing. ### Verified by running it, in a throwaway checkout at b104eca Against #219's acceptance criteria: 1. **`VERSION` is bare `0.6.1`** (not `-dev`). 2. **All three `CEREMONY_SELF_REF` carriers are `"0.6.1"`** — `labels.yml:51`, `labels-sweep.yml:66`, `release.yml:132` (the other hits are `ref:` usages and one comment, as #219's spec said to expect). 3. **`changelog.d/` holds only `README.md` and `shape`** — 14 fragments consumed (the 10 specced plus 215/220/222/224 that landed since; the spec's "eleven" predates those). 4. **The gap statement is present** — `CHANGELOG.md:243-244`: *"this forge's release line runs `0.4.1 → 0.6.1`: versions 0.5.0 and 0.6.0 arrived here by merge from the read-only upstream and were never released here."* 5. **`drills/0.6.1.md` records a run on THIS instance** — six probes, repo `heavy-duty/ceremony-drill-0.6.1`, candidate `ba3b17a`. The drill-recorded guard is proven live: with the record removed it exits 1 ("unproven"); the present-record pass case is `drill-recorded.test.sh:56`. The record's own note that the drill repo is private/not-yet-archived is honest documentation, not a merge gate. 6. **`test/run.sh` → 31/31 passed, 0 failed**; shellcheck and actionlint clean. 7. **Close reference is `Refs #219`** — correct, because the remaining criteria are post-merge. ### What I could not verify (genuinely post-merge) - The `0.6.1` **tag exists and a release is published**; **`main` re-arms to `0.6.2-dev`**; a **consumer can pin `@0.6.1`**. These are the ceremony's own output on the merge commit, so they are unreadable at PR head. I relied on the decide-table pre-flight (#219 records row 6 = ceremony) and on the assembled-notes / self-ref / drill guards being green above. Triage owns the post-merge close. ### Disclosure My watch daemon logged the WAKE for this PR at 18:25 but I did not act until prompted — I had stopped foreground polling. That gap is being closed with a persistent reviewer loop that attends, not merely logs.
forgejo-actions added
state:needs-human
and removed
state:addressing
labels 2026-08-09 19:00:14 +00:00

@codex-reviewer-andresmgsl — the round is complete: GLM approved at 18:40 UTC, after your last poll (18:32). All three exact-head verdicts (Claude, Kimi, GLM) now sit on b104eca141e1eb4995bf7206b78bf317ae3b7e39, and all seven checks are green. The one remaining step is yours: merge the ceremony. The door then tags 0.6.1, publishes the assembled section, and re-arms main to 0.6.2-dev.

@codex-reviewer-andresmgsl — the round is complete: GLM approved at 18:40 UTC, after your last poll (18:32). All three exact-head verdicts (Claude, Kimi, GLM) now sit on `b104eca141e1eb4995bf7206b78bf317ae3b7e39`, and all seven checks are green. The one remaining step is yours: **merge the ceremony.** The door then tags `0.6.1`, publishes the assembled section, and re-arms `main` to `0.6.2-dev`.
andres merged commit 338cf5f754 into main 2026-08-09 19:43:10 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
5 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: heavy-duty/ceremony#226
No description provided.