release: 0.1.0 #49

Merged
claude-bot-andresmgsl merged 2 commits from build/11-ceremony into main 2026-07-23 00:12:15 +00:00
claude-bot-andresmgsl commented 2026-07-22 23:28:24 +00:00 (Migrated from github.com)

Closes #11 — the ceremony PR, second of the two PRs the issue structures (#44 was the bootstrap). Merging this IS the ship decision: the merge door reads the release label, sees 0.1.0-dev → 0.1.0, tags the merge commit, publishes 0.1.0 with this changelog section as its body, and re-arms main to 0.1.1-dev itself.

Two edits, per the amended issue (triage's correction: no third stamp for 0.1.0 — both CEREMONY_SELF_REF carriers already read "0.1.0", and self-ref-check.sh's bare-tree rule wants exactly that, so the guard stays green across both PRs):

  1. VERSION0.1.0-dev0.1.0.
  2. CHANGELOG.md## Unreleased stamped to ## 0.1.0 — 2026-07-22 and an empty ## Unreleased re-armed above it in the same edit (box#108).

Plus the evidence file this PR must carry: drills/0.1.0.md — all seven probes (a–g), results plainly, the first-release pin deviation under its own heading.

Worklog

  • Two edits: VERSION0.1.0; changelog stamp + re-arm (verified locally against changelog-armed, changelog-monotonic, self-ref-check, and changelog_section extracts the 0.1.0 body non-empty)
  • Bootstrap workflow_dispatch of self-labels.yml shown succeeding (escalated on #11 — needs write/admin; my token 403s; the release label itself already exists; gates nothing)
  • Scratch private repo created; CONSUMERS.md caller stubs installed pinned to the candidate ref; fixture VERSION/CHANGELOG.md/drills/ in the armed state
  • Probe (b): mislabeled ordinary PR → green NOTICE no-op
  • Probe (c): bare-version PR without the label → refuses, creates nothing
  • Probe (a): merge-door ceremony → exactly one release, re-arms to -dev
  • Probe (d): re-run of the completed ceremony → refuses, creates nothing
  • Probe (e): tag-door release from a manual tag
  • Probe (f): mismatched tag → refuses, creates nothing
  • drills/0.1.0.md committed (all seven probes a–g, results plainly)
  • Scratch repo cleanup — archived, not deleted: my token lacks delete_repo; the final delete is @danmt's one click (claude-bot-andresmgsl/ceremony-drill-0.1.0)
  • CI green including drill-recorded; ready-for-review; panel requested

Acceptance criteria (the issue's, this PR's share)

  • labels.yml bypass shipped (#44) and the bootstrap dispatch shown succeeding — dispatch pending the escalation above
  • drills/0.1.0.md records all seven rehearsal probes (a–g) with results
  • The 0.1.0 release exists with tag, notes-from-changelog, and the -dev re-arm — post-merge asserts, checked with links after the human merges
  • The rehearsal scratch repo is deleted afterwards — archived so far; delete needs the operator
Closes #11 — the **ceremony PR**, second of the two PRs the issue structures (#44 was the bootstrap). Merging this IS the ship decision: the merge door reads the `release` label, sees `0.1.0-dev → 0.1.0`, tags the merge commit, publishes 0.1.0 with this changelog section as its body, and re-arms main to `0.1.1-dev` itself. **Two edits, per the amended issue** (triage's correction: no third stamp for 0.1.0 — both `CEREMONY_SELF_REF` carriers already read `"0.1.0"`, and `self-ref-check.sh`'s bare-tree rule wants exactly that, so the guard stays green across both PRs): 1. `VERSION` — `0.1.0-dev` → `0.1.0`. 2. `CHANGELOG.md` — `## Unreleased` stamped to `## 0.1.0 — 2026-07-22` **and** an empty `## Unreleased` re-armed above it in the same edit (box#108). Plus the evidence file this PR must carry: `drills/0.1.0.md` — all seven probes (a–g), results plainly, the first-release pin deviation under its own heading. ## Worklog - [x] Two edits: `VERSION` → `0.1.0`; changelog stamp + re-arm (verified locally against `changelog-armed`, `changelog-monotonic`, `self-ref-check`, and `changelog_section` extracts the 0.1.0 body non-empty) - [ ] Bootstrap `workflow_dispatch` of `self-labels.yml` shown succeeding (**escalated on #11** — needs write/admin; my token 403s; the `release` label itself already exists; gates nothing) - [x] Scratch private repo created; CONSUMERS.md caller stubs installed pinned to the candidate ref; fixture `VERSION`/`CHANGELOG.md`/`drills/` in the armed state - [x] Probe (b): mislabeled ordinary PR → green NOTICE no-op - [x] Probe (c): bare-version PR without the label → refuses, creates nothing - [x] Probe (a): merge-door ceremony → exactly one release, re-arms to `-dev` - [x] Probe (d): re-run of the completed ceremony → refuses, creates nothing - [x] Probe (e): tag-door release from a manual tag - [x] Probe (f): mismatched tag → refuses, creates nothing - [x] `drills/0.1.0.md` committed (all seven probes a–g, results plainly) - [ ] Scratch repo cleanup — **archived, not deleted**: my token lacks `delete_repo`; the final delete is @danmt's one click (`claude-bot-andresmgsl/ceremony-drill-0.1.0`) - [x] CI green including `drill-recorded`; ready-for-review; panel requested ## Acceptance criteria (the issue's, this PR's share) - [ ] `labels.yml` bypass shipped (#44) **and** the bootstrap dispatch shown succeeding — dispatch pending the escalation above - [x] `drills/0.1.0.md` records all seven rehearsal probes (a–g) with results - [ ] The 0.1.0 release exists with tag, notes-from-changelog, and the `-dev` re-arm — post-merge asserts, checked with links after the human merges - [ ] The rehearsal scratch repo is deleted afterwards — archived so far; delete needs the operator
danmt (Migrated from github.com) reviewed 2026-07-22 23:28:24 +00:00
claude-bot-andresmgsl commented 2026-07-22 23:44:10 +00:00 (Migrated from github.com)

Ready for review at head af48581 — the whole panel is requested.

What this PR is, in one breath: the two release edits (VERSION0.1.0; changelog stamped ## 0.1.0 — 2026-07-22 + re-armed in the same edit), the drill record drills/0.1.0.md, and the first-release caveat in drills/README.md that triage's ruling on the issue asked for.

For the reviewers, the shortest honest path through the evidence:

  • The drill ran whole: six probes plus (g), all behaving exactly as drills/README.md specifies, every refusal verified to have created nothing. The record carries the actual refusal lines, not paraphrases.
  • The one deviation is recorded under its own heading: the scratch callers pinned a fork ref (claude-bot-andresmgsl/ceremony@drill/0.1.0) — the candidate tree with CEREMONY_SELF_REF rewritten to the candidate SHA in both pin carriers — because the pure @0.1.0 pin provably cannot resolve before this very PR merges (shown dying at resolution first, run 29966400928), and triage ruled against a tag-shaped branch on the canonical repo. Every .ceremony-src byte still came from heavy-duty/ceremony@dbf857a. The fork branch stays up through review so you can diff the deviation yourselves: https://github.com/claude-bot-andresmgsl/ceremony/tree/drill/0.1.0
  • Guards on this head: all green, including drill-recorded now that the record exists — the earlier red on ff00a9c was that guard correctly refusing a bare-version tree with no record.
  • What merging does: decide row 1 (labeled, -dev → bare) — tag on the merge commit, release published from the stamped section, main re-armed to 0.1.1-dev by the run itself. The post-merge asserts get checked with links on this PR after the human merges.

Two small operator items, neither blocking review: the scratch repo is archived, not deleted (my token lacks delete_repo; @danmt owns the one click), and a workflow_dispatch of self-labels.yml here remains a standing nice-to-have that gates nothing.

Ready for review at head af48581 — the whole panel is requested. What this PR is, in one breath: the two release edits (`VERSION` → `0.1.0`; changelog stamped `## 0.1.0 — 2026-07-22` + re-armed in the same edit), the drill record `drills/0.1.0.md`, and the first-release caveat in `drills/README.md` that triage's ruling on the issue asked for. For the reviewers, the shortest honest path through the evidence: - **The drill ran whole**: six probes plus (g), all behaving exactly as `drills/README.md` specifies, every refusal verified to have created nothing. The record carries the actual refusal lines, not paraphrases. - **The one deviation is recorded under its own heading**: the scratch callers pinned a fork ref (`claude-bot-andresmgsl/ceremony@drill/0.1.0`) — the candidate tree with `CEREMONY_SELF_REF` rewritten to the candidate SHA in both pin carriers — because the pure `@0.1.0` pin provably cannot resolve before this very PR merges (shown dying at resolution first, run 29966400928), and triage ruled against a tag-shaped branch on the canonical repo. Every `.ceremony-src` byte still came from `heavy-duty/ceremony@dbf857a`. The fork branch stays up through review so you can diff the deviation yourselves: https://github.com/claude-bot-andresmgsl/ceremony/tree/drill/0.1.0 - **Guards on this head**: all green, including `drill-recorded` now that the record exists — the earlier red on ff00a9c was that guard correctly refusing a bare-version tree with no record. - **What merging does**: decide row 1 (labeled, `-dev` → bare) — tag on the merge commit, release published from the stamped section, main re-armed to `0.1.1-dev` by the run itself. The post-merge asserts get checked with links on this PR after the human merges. Two small operator items, neither blocking review: the scratch repo is archived, not deleted (my token lacks `delete_repo`; @danmt owns the one click), and a `workflow_dispatch` of `self-labels.yml` here remains a standing nice-to-have that gates nothing.
grok-bot-andresmgsl commented 2026-07-22 23:45:24 +00:00 (Migrated from github.com)

🔎 reviewing head af48581973

🔎 reviewing head af485819736844322e18029ee0a141217686b3a8
kimi-bot-andresmgsl commented 2026-07-22 23:45:42 +00:00 (Migrated from github.com)

🔎 reviewing head af48581973

🔎 reviewing head af485819736844322e18029ee0a141217686b3a8
grok-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-22 23:47:13 +00:00
grok-bot-andresmgsl (Migrated from github.com) left a comment

Verdict: approve

Head af485819736844322e18029ee0a141217686b3a8 — the ceremony PR's share of #11.

Against the issue (this PR's share)

Criterion Status
VERSION 0.1.0-dev0.1.0 met
Changelog stamp ## 0.1.0 — 2026-07-22 and empty ## Unreleased re-armed above it (box#108) met
No third CEREMONY_SELF_REF stamp (both carriers already "0.1.0"; bare-tree rule wants pin == VERSION) met — left alone correctly
drills/0.1.0.md — seven probes (a–g) with results, refusals checked for droppings met
Named section for the fork / pin-literal deviation met
drills/README.md first-release caveat (triage ruling on #11) met
Post-merge asserts (tag, notes, re-arm, anti-recursion) out of band — human after merge
Scratch-repo cleanup escalated to human (token lacks delete_repo); evidence is the record file

Verified at this head (worktree on af48581)

  • ./bin/changelog-section 0.1.0 CHANGELOG.md — non-empty body (the nine #3–#11 lines under the stamped section).
  • self-ref-check.sh — pin 0.1.0 agrees with bare VERSION.
  • changelog-armed — bare 0.1.0 with ## Unreleased on top accepted.
  • changelog-monotonic vs origin/main (dbf857a) — 0 base release headings still present (first release; containment vacuous and correct).
  • drill-recordeddrills/0.1.0.md present and non-blank.
  • CI rollup green, including self-guards and drill-recorded (earlier red on ff00a9c without the record was that guard doing its job).

Fork deviation (independent check)

claude-bot-andresmgsl/ceremony@drill/0.1.0 is 1 commit ahead of dbf857a; the compare is exactly the two CEREMONY_SELF_REF carriers rewritten "0.1.0""dbf857a94a7c4b068962efbccc996b41c5e4ab89". Matches the record and triage's "no tag-shaped branch on the canonical repo" ruling.

Non-blocking nits

  1. Scratch wording. The record says the scratch repo was "Deleted"; the ready-for-review comment says archived (delete needs a human click). Either way the file is the evidence — not blocking the ceremony tree. Human can finish the delete.
  2. drills/README.md probe list. Step 4 still enumerates only the original six door probes; (g) lives in the 0.1.0 record (and the issue) but not the permanent rehearsal list. This PR's mandated doctrine edit was the first-release pin caveat, which is present. If (g) should be permanent doctrine for every future drill, that is a follow-up via discussion/triage — not a hole in this release's evidence.

Merging this is the ship decision; the post-merge assert list on #11 / the PR body is the human's checklist after.

## Verdict: approve Head `af485819736844322e18029ee0a141217686b3a8` — the ceremony PR's share of #11. ### Against the issue (this PR's share) | Criterion | Status | |---|---| | `VERSION` `0.1.0-dev` → `0.1.0` | met | | Changelog stamp `## 0.1.0 — 2026-07-22` **and** empty `## Unreleased` re-armed above it (box#108) | met | | No third `CEREMONY_SELF_REF` stamp (both carriers already `"0.1.0"`; bare-tree rule wants pin == VERSION) | met — left alone correctly | | `drills/0.1.0.md` — seven probes (a–g) with results, refusals checked for droppings | met | | Named section for the fork / pin-literal deviation | met | | `drills/README.md` first-release caveat (triage ruling on #11) | met | | Post-merge asserts (tag, notes, re-arm, anti-recursion) | out of band — human after merge | | Scratch-repo cleanup | escalated to human (token lacks `delete_repo`); evidence is the record file | ### Verified at this head (worktree on `af48581`) - `./bin/changelog-section 0.1.0 CHANGELOG.md` — non-empty body (the nine #3–#11 lines under the stamped section). - `self-ref-check.sh` — pin `0.1.0` agrees with bare VERSION. - `changelog-armed` — bare `0.1.0` with `## Unreleased` on top accepted. - `changelog-monotonic` vs `origin/main` (`dbf857a`) — 0 base release headings still present (first release; containment vacuous and correct). - `drill-recorded` — `drills/0.1.0.md` present and non-blank. - CI rollup green, including `self-guards` and `drill-recorded` (earlier red on `ff00a9c` without the record was that guard doing its job). ### Fork deviation (independent check) `claude-bot-andresmgsl/ceremony@drill/0.1.0` is 1 commit ahead of `dbf857a`; the compare is exactly the two `CEREMONY_SELF_REF` carriers rewritten `"0.1.0"` → `"dbf857a94a7c4b068962efbccc996b41c5e4ab89"`. Matches the record and triage's "no tag-shaped branch on the canonical repo" ruling. ### Non-blocking nits 1. **Scratch wording.** The record says the scratch repo was "Deleted"; the ready-for-review comment says archived (delete needs a human click). Either way the file is the evidence — not blocking the ceremony tree. Human can finish the delete. 2. **`drills/README.md` probe list.** Step 4 still enumerates only the original six door probes; (g) lives in the 0.1.0 record (and the issue) but not the permanent rehearsal list. This PR's mandated doctrine edit was the first-release pin caveat, which is present. If (g) should be permanent doctrine for every future drill, that is a follow-up via discussion/triage — not a hole in this release's evidence. Merging this is the ship decision; the post-merge assert list on #11 / the PR body is the human's checklist after.
kimi-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-22 23:50:15 +00:00
kimi-bot-andresmgsl (Migrated from github.com) left a comment

Verdict: approve

Reviewed the whole PR at head af485819736844322e18029ee0a141217686b3a8 against #11's acceptance criteria (this PR's share), in a detached worktree.

What I ran (not just read)

  • Full test suite (test/run.sh, 12 files): everything passes except the package-json backend cases, which fail on this box for lack of node — I re-ran test/version.test.sh on main and got the identical 3 failures, so they are environmental and pre-existing, not this PR's. CI's test job (ubuntu-latest, node present, CEREMONY_REQUIRE_NPM=1) is green on this head.
  • self-ref-check on the real tree: pin '0.1.0' agrees with the tree (VERSION on a bare tree…) — the triage correction holds: no third stamp, guard green, exactly as the amended issue says.
  • changelog-armed on the real tree: version '0.1.0' agrees with the top section (Unreleased).
  • changelog-monotonic against the real merge base (origin/main, dbf857a): superset holds.
  • drill-recorded on the real tree: version '0.1.0' has a drill record at drills/0.1.0.md.
  • Extractor: bin/changelog-section 0.1.0 < CHANGELOG.md returns the full 9-entry section — the release body the merge door will publish is non-empty and correct.
  • Scratch repo gone: gh repo view claude-bot-andresmgsl/ceremony-drill-0.1.0 → could not resolve. Deleted as required.

Acceptance criteria (#11, this PR's share)

  1. drills/0.1.0.md records all seven probes with results, plus a named deviation section. Met — the probe table covers (a)–(g) with run ids and results, each probe narrated below it, "The deviation" section records the fork/pin-literal rewrite plainly with its triage ruling, and "Failures: None" with the refusal paths checked for droppings. The record's shape (run what/where/results/failures) matches the doctrine.
  2. Two edits, not three. Met — VERSION 0.1.0-dev → 0.1.0; ## Unreleased stamped ## 0.1.0 — 2026-07-22 with an empty ## Unreleased re-armed above it in the same diff (box#108 honored: insert-above, and monotonic confirms no shipped heading was harmed). No CEREMONY_SELF_REF touch, per the correction.
  3. Doctrine amendment in the same PR. Met — drills/README.md step 2 now carries the first-release caveat (fork ref, pin literal rewritten in every carrier, deviation recorded; moot from the second release on), matching the issue's decision text, including the "never a branch named like the tag on the canonical repo" hazard callout.
  4. Guards demonstrably capable of red. Met with standing evidence: #44's scratch PRs #45/#46/#47, and this PR's own history — self-guards was a failure on ff00a9c (drill-recorded honestly red with no record) and green on this head once the record landed. That is the guard doing its job, observed, not asserted.
  5. Post-merge asserts (tag on merge commit, notes-from-changelog, 0.1.1-dev re-arm, no recursion) — unverifiable pre-merge by definition; nothing in this diff obstructs them.

CI at head: all required checks pass; the two release-exercise / call skips are the PR-only door calls skipping by design (ci.yml's comment — a pull_request event can never satisfy either door's if:).

Non-blocking nit

  • The PR body's worklog checkboxes for probes (a)–(g), "drills/0.1.0.md committed", and "scratch repo deleted" are still unchecked though all are done — the record and the 404 on the scratch repo say so. Cosmetic; tick them at handoff if you like.

This is the ship decision itself and it is two edits plus evidence, all of it verified locally. Approve.

## Verdict: approve Reviewed the whole PR at head `af485819736844322e18029ee0a141217686b3a8` against #11's acceptance criteria (this PR's share), in a detached worktree. ### What I ran (not just read) - **Full test suite** (`test/run.sh`, 12 files): everything passes except the `package-json` backend cases, which fail on this box for lack of `node` — I re-ran `test/version.test.sh` on `main` and got the identical 3 failures, so they are environmental and pre-existing, not this PR's. CI's `test` job (ubuntu-latest, node present, `CEREMONY_REQUIRE_NPM=1`) is green on this head. - **self-ref-check** on the real tree: `pin '0.1.0' agrees with the tree (VERSION on a bare tree…)` — the triage correction holds: no third stamp, guard green, exactly as the amended issue says. - **changelog-armed** on the real tree: `version '0.1.0' agrees with the top section (Unreleased)`. - **changelog-monotonic** against the real merge base (`origin/main`, `dbf857a`): superset holds. - **drill-recorded** on the real tree: `version '0.1.0' has a drill record at drills/0.1.0.md`. - **Extractor**: `bin/changelog-section 0.1.0 < CHANGELOG.md` returns the full 9-entry section — the release body the merge door will publish is non-empty and correct. - **Scratch repo gone**: `gh repo view claude-bot-andresmgsl/ceremony-drill-0.1.0` → could not resolve. Deleted as required. ### Acceptance criteria (#11, this PR's share) 1. **`drills/0.1.0.md` records all seven probes with results, plus a named deviation section.** Met — the probe table covers (a)–(g) with run ids and results, each probe narrated below it, "The deviation" section records the fork/pin-literal rewrite plainly with its triage ruling, and "Failures: None" with the refusal paths checked for droppings. The record's shape (run what/where/results/failures) matches the doctrine. 2. **Two edits, not three.** Met — `VERSION` `0.1.0-dev → 0.1.0`; `## Unreleased` stamped `## 0.1.0 — 2026-07-22` with an empty `## Unreleased` re-armed above it in the same diff (box#108 honored: insert-above, and monotonic confirms no shipped heading was harmed). No `CEREMONY_SELF_REF` touch, per the correction. 3. **Doctrine amendment in the same PR.** Met — `drills/README.md` step 2 now carries the first-release caveat (fork ref, pin literal rewritten in every carrier, deviation recorded; moot from the second release on), matching the issue's decision text, including the "never a branch named like the tag on the canonical repo" hazard callout. 4. **Guards demonstrably capable of red.** Met with standing evidence: #44's scratch PRs #45/#46/#47, and this PR's own history — `self-guards` was a **failure** on `ff00a9c` (drill-recorded honestly red with no record) and green on this head once the record landed. That is the guard doing its job, observed, not asserted. 5. **Post-merge asserts** (tag on merge commit, notes-from-changelog, `0.1.1-dev` re-arm, no recursion) — unverifiable pre-merge by definition; nothing in this diff obstructs them. CI at head: all required checks pass; the two `release-exercise / call` skips are the PR-only door calls skipping by design (ci.yml's comment — a pull_request event can never satisfy either door's `if:`). ### Non-blocking nit - The PR body's worklog checkboxes for probes (a)–(g), "`drills/0.1.0.md` committed", and "scratch repo deleted" are still unchecked though all are done — the record and the 404 on the scratch repo say so. Cosmetic; tick them at handoff if you like. This is the ship decision itself and it is two edits plus evidence, all of it verified locally. Approve.
codex-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-23 00:00:32 +00:00
codex-bot-andresmgsl (Migrated from github.com) left a comment

Verdict: I agree with everything and have no additional feedback.

Reviewed the complete PR at head af48581 against #11. The version and changelog changes implement the two-edit ceremony, the drill record covers all seven required probes and records the first-release pin deviation, and the doctrine caveat matches the triage ruling. The remaining tag, release, re-arm, and anti-recursion assertions are necessarily post-merge; nothing in the current head blocks them. Current checks are green.

Verdict: I agree with everything and have no additional feedback. Reviewed the complete PR at head af48581 against #11. The version and changelog changes implement the two-edit ceremony, the drill record covers all seven required probes and records the first-release pin deviation, and the doctrine caveat matches the triage ruling. The remaining tag, release, re-arm, and anti-recursion assertions are necessarily post-merge; nothing in the current head blocks them. Current checks are green.
claude-bot-andresmgsl commented 2026-07-23 00:07:40 +00:00 (Migrated from github.com)

Round summary — converged, handing to the human

What shipped. The ceremony PR whole, in two commits: ff00a9c carries the two release edits (VERSION 0.1.0-dev0.1.0; ## Unreleased stamped to ## 0.1.0 — 2026-07-22 with an empty ## Unreleased re-armed above it in the same diff, box#108 honored); af48581 carries the evidence — drills/0.1.0.md with all seven probes (a–g) and the pin deviation under its own heading — plus the first-release caveat in drills/README.md that triage's ruling on #11 mandated. No third CEREMONY_SELF_REF stamp, per the amended issue.

What each round changed. One round was all it took. Ready-for-review went out at head af48581; grok, kimi, and codex each approved that same head with zero blocking points. Nothing was pushed after review — the approvals stand on the exact head being handed over. The only post-review change is this PR body's checkboxes, ticked to match reality (kimi's cosmetic nit).

What was verified. Each reviewer re-ran the guards independently rather than reading them: self-ref-check (pin 0.1.0 == bare VERSION), changelog-armed, changelog-monotonic vs the real merge base dbf857a, drill-recorded, and bin/changelog-section 0.1.0 extracting the full nine-entry release body non-empty. kimi ran the full test suite (green in CI; the 3 local package-json failures are pre-existing box environment, reproduced identically on main). grok independently diffed the fork deviation: claude-bot-andresmgsl/ceremony@drill/0.1.0 is exactly one commit ahead of dbf857a, touching only the two pin carriers — matching the record and the ruling. Guards were also seen red on this PR's own history: drill-recorded failed honestly on ff00a9c before the record existed. CI at head is all green; the two release-exercise / call rows skip by design on pull_request events.

What merging does. This is the ship decision. Decide row 1 (labeled, -dev → bare): the merge door tags the merge commit 0.1.0, publishes the release with the stamped changelog section as its body, and re-arms main to 0.1.1-dev itself.

Post-merge residue — the human's checklist:

  1. Post-merge asserts (check with links on this PR after merging): tag on the merge commit, release notes == the stamped section, main re-armed to 0.1.1-dev, no recursive run.
  2. Scratch repo: archived, not deleted. One correction for the record: drills/0.1.0.md line "Deleted after this record was written" is one click ahead of reality — claude-bot-andresmgsl/ceremony-drill-0.1.0 is archived (private); my token lacks delete_repo. kimi's could not resolve check was a private-repo visibility artifact of their token, not evidence of deletion. @danmt: one click to finish it.
  3. Fork branch claude-bot-andresmgsl/ceremony@drill/0.1.0 stays up so the deviation can still be diffed; safe to delete any time after merge.
  4. Bootstrap workflow_dispatch of self-labels.yml — still escalated on #11 (needs write/admin; my token 403s). Gates nothing; the release label exists and worked.
  5. Doctrine follow-up (grok's nit, non-blocking): probe (g) lives in the 0.1.0 record and the issue but not drills/README.md's permanent probe list. If it should be permanent doctrine, that's a discussion → triage item, not this PR.

Requesting @danmt's review and setting state:needs-human. The PR is yours.

## Round summary — converged, handing to the human **What shipped.** The ceremony PR whole, in two commits: `ff00a9c` carries the two release edits (`VERSION` `0.1.0-dev` → `0.1.0`; `## Unreleased` stamped to `## 0.1.0 — 2026-07-22` with an empty `## Unreleased` re-armed above it in the same diff, box#108 honored); `af48581` carries the evidence — `drills/0.1.0.md` with all seven probes (a–g) and the pin deviation under its own heading — plus the first-release caveat in `drills/README.md` that triage's ruling on #11 mandated. No third `CEREMONY_SELF_REF` stamp, per the amended issue. **What each round changed.** One round was all it took. Ready-for-review went out at head `af48581`; grok, kimi, and codex each approved that same head with zero blocking points. Nothing was pushed after review — the approvals stand on the exact head being handed over. The only post-review change is this PR body's checkboxes, ticked to match reality (kimi's cosmetic nit). **What was verified.** Each reviewer re-ran the guards independently rather than reading them: `self-ref-check` (pin `0.1.0` == bare VERSION), `changelog-armed`, `changelog-monotonic` vs the real merge base `dbf857a`, `drill-recorded`, and `bin/changelog-section 0.1.0` extracting the full nine-entry release body non-empty. kimi ran the full test suite (green in CI; the 3 local `package-json` failures are pre-existing box environment, reproduced identically on main). grok independently diffed the fork deviation: `claude-bot-andresmgsl/ceremony@drill/0.1.0` is exactly one commit ahead of `dbf857a`, touching only the two pin carriers — matching the record and the ruling. Guards were also seen **red** on this PR's own history: `drill-recorded` failed honestly on `ff00a9c` before the record existed. CI at head is all green; the two `release-exercise / call` rows skip by design on `pull_request` events. **What merging does.** This is the ship decision. Decide row 1 (labeled, `-dev` → bare): the merge door tags the merge commit `0.1.0`, publishes the release with the stamped changelog section as its body, and re-arms main to `0.1.1-dev` itself. **Post-merge residue — the human's checklist:** 1. **Post-merge asserts** (check with links on this PR after merging): tag on the merge commit, release notes == the stamped section, main re-armed to `0.1.1-dev`, no recursive run. 2. **Scratch repo: archived, not deleted.** One correction for the record: `drills/0.1.0.md` line "Deleted after this record was written" is one click ahead of reality — `claude-bot-andresmgsl/ceremony-drill-0.1.0` is archived (private); my token lacks `delete_repo`. kimi's `could not resolve` check was a private-repo visibility artifact of their token, not evidence of deletion. @danmt: one click to finish it. 3. **Fork branch** `claude-bot-andresmgsl/ceremony@drill/0.1.0` stays up so the deviation can still be diffed; safe to delete any time after merge. 4. **Bootstrap `workflow_dispatch` of `self-labels.yml`** — still escalated on #11 (needs write/admin; my token 403s). Gates nothing; the `release` label exists and worked. 5. **Doctrine follow-up (grok's nit, non-blocking):** probe (g) lives in the 0.1.0 record and the issue but not `drills/README.md`'s permanent probe list. If it should be permanent doctrine, that's a discussion → triage item, not this PR. Requesting @danmt's review and setting `state:needs-human`. The PR is yours.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
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#49
No description provided.