release: 0.1.0 #46

Merged
dan-claude-bot merged 2 commits from release/0.1.0 into main 2026-07-19 18:03:35 +00:00
dan-claude-bot commented 2026-07-19 14:23:57 +00:00 (Migrated from github.com)

The release: X.Y.Z PR of the ceremony (#32): VERSION 0.1.0-dev → 0.1.0, ## Unreleased stamped ## 0.1.0 — 2026-07-19. After merge, tag the merge commit bare 0.1.0 and push — release.yml asserts tag==VERSION and publishes with the stamped section as body. Follow-up bumps main to 0.1.1-dev.

This is rig's first release — it turns the installer's default channel live: curl … install.sh | bash stops refusing and resolves 0.1.0. The RIG_REF pin step in box's templates (box#81) unblocks after this ships.

Evidence (2026-07-19, twice — before and after the fix round): suites 325/0 + 41/0 + db-integration 12/0; tenant guests minted and converged on real incus; real GitHub runner lifecycle; coolify install 4.1.2 + backup install; ceremony rehearsed on a scratch fork (both failure guards firing, real path publishing, live default-channel install from the rehearsal release). This PR's own CI is the first to prove #44's fix on a genuinely stamped tree — 41/0 where the pre-fix suite read 39/2.

🤖 Generated with Claude Code

The `release: X.Y.Z` PR of the ceremony (#32): `VERSION` 0.1.0-dev → **0.1.0**, `## Unreleased` stamped `## 0.1.0 — 2026-07-19`. After merge, tag the merge commit bare `0.1.0` and push — `release.yml` asserts tag==VERSION and publishes with the stamped section as body. Follow-up bumps main to `0.1.1-dev`. **This is rig's first release** — it turns the installer's default channel live: `curl … install.sh | bash` stops refusing and resolves 0.1.0. The `RIG_REF` pin step in box's templates (box#81) unblocks after this ships. **Evidence (2026-07-19, twice — before and after the fix round):** suites 325/0 + 41/0 + db-integration 12/0; tenant guests minted and converged on real incus; real GitHub runner lifecycle; `coolify install 4.1.2` + backup install; ceremony rehearsed on a scratch fork (both failure guards firing, real path publishing, live default-channel install from the rehearsal release). This PR's own CI is the first to prove #44's fix on a genuinely stamped tree — 41/0 where the pre-fix suite read 39/2. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
danmt (Migrated from github.com) reviewed 2026-07-19 14:23:57 +00:00
claude-bot-andresmgsl (Migrated from github.com) requested changes 2026-07-19 14:38:00 +00:00
claude-bot-andresmgsl (Migrated from github.com) left a comment

Requesting changes — one blocking item: the stamped 0.1.0 notes omit a shipped fix.

Blocking: CHANGELOG.md is missing #39/#41

CHANGELOG.md:9-35 (the 0.1.0 ### Fixed section) lists #44 and #42 but not #41 — "install: derive $HOME from getent when the environment has none" (#39), commit 229fcd2, merged as fb0c306. That is a user-facing installer fix of exactly the same class as the #42 entry, and it ships in 0.1.0.

The preamble's "history before 0.1.0 lives in git" (CHANGELOG.md:3-5) does not cover it: that sentence scopes to history before the file started, and #41 merged after the changelog and its convention landed in #40 (CONTRIBUTING.md:43-45 — "Feature PRs land their changelog entry as part of the PR"; #41 skipped it). This release PR is the last gate before the section becomes the permanent release body and the tagged tarball's CHANGELOG — please add a ### Fixed bullet for #39/#41 to the stamped section in this PR.

Everything else verified clean

  • Diff scope: exactly the ceremony's step 1 (CONTRIBUTING.md:51-53) — VERSION 0.1.0-dev0.1.0, ## Unreleased## 0.1.0 — 2026-07-19 (today's date, correct). No other files touched; branch is origin/main (219b0fb, includes #45) + this one commit. Nothing smuggled.
  • Version consistency: VERSION:1 is the single source of truth — bin/rig:9 reads it at runtime (no hardcoded string), install.sh verifies the installed tree's copy. No stray -dev remains.
  • First release: git tag -l on the fetched repo is empty — 0.1.0 is genuinely the first tag; the "first release" framing and the installer's default-channel story are accurate.
  • Suites on the stamped tree (head 154a718): bash test/cli.sh 325/0, bash test/release.sh 41/0 — matching the PR body, and proving #45's fix on a genuinely stamped tree (the pre-fix guard would have failed on the missing ## Unreleased heading).
  • Release-notes extraction: ran .github/scripts/release-lib.sh's changelog_section CHANGELOG.md 0.1.0 on this tree — 51-line non-empty body, exactly what release.yml:42 will publish. release.yml:30-34's tag==VERSION assert will pass for a bare 0.1.0 tag.

Non-blocking note

README.md:34-38 and README.md:358-364 ("rig has no GitHub release yet", "Until rig cuts 0.1.0 there is no release to resolve, so the seed must set RIG_REF=main") go stale the moment the tag exists — and are frozen that way inside the 0.1.0 tarball. The ceremony scopes this PR to VERSION + CHANGELOG, so fine to leave, but fold the cleanup into the 0.1.1-dev follow-up bump.

automated review by claude-bot-andresmgsl · heavy-duty-review-bot

**Requesting changes — one blocking item: the stamped 0.1.0 notes omit a shipped fix.** ## Blocking: CHANGELOG.md is missing #39/#41 `CHANGELOG.md:9-35` (the 0.1.0 `### Fixed` section) lists #44 and #42 but not **#41 — "install: derive $HOME from getent when the environment has none" (#39)**, commit 229fcd2, merged as fb0c306. That is a user-facing installer fix of exactly the same class as the #42 entry, and it ships in 0.1.0. The preamble's "history before 0.1.0 lives in git" (`CHANGELOG.md:3-5`) does not cover it: that sentence scopes to history before the file started, and #41 merged *after* the changelog and its convention landed in #40 (`CONTRIBUTING.md:43-45` — "Feature PRs land their changelog entry as part of the PR"; #41 skipped it). This release PR is the last gate before the section becomes the permanent release body and the tagged tarball's CHANGELOG — please add a `### Fixed` bullet for #39/#41 to the stamped section in this PR. ## Everything else verified clean - **Diff scope**: exactly the ceremony's step 1 (`CONTRIBUTING.md:51-53`) — `VERSION` `0.1.0-dev` → `0.1.0`, `## Unreleased` → `## 0.1.0 — 2026-07-19` (today's date, correct). No other files touched; branch is `origin/main` (219b0fb, includes #45) + this one commit. Nothing smuggled. - **Version consistency**: `VERSION:1` is the single source of truth — `bin/rig:9` reads it at runtime (no hardcoded string), `install.sh` verifies the installed tree's copy. No stray `-dev` remains. - **First release**: `git tag -l` on the fetched repo is empty — 0.1.0 is genuinely the first tag; the "first release" framing and the installer's default-channel story are accurate. - **Suites on the stamped tree** (head 154a718): `bash test/cli.sh` **325/0**, `bash test/release.sh` **41/0** — matching the PR body, and proving #45's fix on a genuinely stamped tree (the pre-fix guard would have failed on the missing `## Unreleased` heading). - **Release-notes extraction**: ran `.github/scripts/release-lib.sh`'s `changelog_section CHANGELOG.md 0.1.0` on this tree — 51-line non-empty body, exactly what `release.yml:42` will publish. `release.yml:30-34`'s tag==VERSION assert will pass for a bare `0.1.0` tag. ## Non-blocking note `README.md:34-38` and `README.md:358-364` ("rig has **no GitHub release yet**", "Until rig cuts 0.1.0 there is no release to resolve, so the seed must set `RIG_REF=main`") go stale the moment the tag exists — and are frozen that way inside the 0.1.0 tarball. The ceremony scopes this PR to VERSION + CHANGELOG, so fine to leave, but fold the cleanup into the `0.1.1-dev` follow-up bump. — _automated review by `claude-bot-andresmgsl` · heavy-duty-review-bot_
grok-bot-andresmgsl (Migrated from github.com) requested changes 2026-07-19 14:39:52 +00:00
grok-bot-andresmgsl (Migrated from github.com) left a comment

Verdict: Request changes — blockers listed below.

Blockers

  1. CHANGELOG.md (0.1.0 ### Fixed) — stamped section lists #44 and #42 but omits the shipped installer fix #41 / issue #39 (install: derive $HOME from getent when the environment has none, merged 2026-07-18). That is user-facing install behavior of the same class as #42 and it is in this release tarball. Agree with @claude-bot-andresmgsl: the preamble “history before 0.1.0 lives in git” does not cover it — #41 merged after the changelog convention landed in #40, and this PR is the last gate before the section becomes the permanent GitHub release body. Please add a ### Fixed bullet for #39/#41.

What is fine

  • Diff is pure ceremony: VERSION 0.1.0-dev0.1.0, ## Unreleased## 0.7.0… wait, ## 0.1.0 — 2026-07-19. No smuggled files.
  • CI green on the stamped tree (check / db-integration / reconcile / scope) — #45’s release-suite fix holds.
  • First-release framing and default-channel installer story are coherent.

Nits / optional

  • README “no GitHub release yet” / force-RIG_REF=main prose goes stale once the tag exists; fine to leave out of this PR per ceremony scope — fold into the 0.1.1-dev bump.

Happy to re-review once #39/#41 is in the stamped notes.

**Verdict: Request changes** — blockers listed below. ### Blockers 1. **`CHANGELOG.md` (0.1.0 `### Fixed`)** — stamped section lists #44 and #42 but omits the shipped installer fix **#41** / issue **#39** (*install: derive `$HOME` from getent when the environment has none*, merged 2026-07-18). That is user-facing install behavior of the same class as #42 and it is in this release tarball. Agree with @claude-bot-andresmgsl: the preamble “history before 0.1.0 lives in git” does not cover it — #41 merged *after* the changelog convention landed in #40, and this PR is the last gate before the section becomes the permanent GitHub release body. Please add a `### Fixed` bullet for #39/#41. ### What is fine - Diff is pure ceremony: `VERSION` `0.1.0-dev` → `0.1.0`, `## Unreleased` → `## 0.7.0`… wait, `## 0.1.0 — 2026-07-19`. No smuggled files. - CI green on the stamped tree (check / db-integration / reconcile / scope) — #45’s release-suite fix holds. - First-release framing and default-channel installer story are coherent. ### Nits / optional - README “no GitHub release yet” / force-`RIG_REF=main` prose goes stale once the tag exists; fine to leave out of this PR per ceremony scope — fold into the `0.1.1-dev` bump. Happy to re-review once #39/#41 is in the stamped notes.
grok-bot-andresmgsl (Migrated from github.com) requested changes 2026-07-19 14:40:04 +00:00
grok-bot-andresmgsl (Migrated from github.com) left a comment

Verdict: Request changes — blockers listed below.

Blockers

  1. CHANGELOG.md (0.1.0 ### Fixed) — stamped section lists #44 and #42 but omits the shipped installer fix #41 / issue #39 (install: derive $HOME from getent when the environment has none, merged 2026-07-18). That is user-facing install behavior of the same class as #42 and it ships in this release. Agree with @claude-bot-andresmgsl: the preamble “history before 0.1.0 lives in git” does not cover it — #41 merged after the changelog convention landed in #40, and this PR is the last gate before the section becomes the permanent GitHub release body. Please add a ### Fixed bullet for #39/#41.

What is fine

  • Diff is pure ceremony: VERSION 0.1.0-dev0.1.0, ## Unreleased## 0.1.0 — 2026-07-19. No smuggled files.
  • CI green on the stamped tree (check / db-integration / reconcile / scope) — #45’s release-suite fix holds.
  • First-release framing and default-channel installer story are coherent.

Nits / optional

  • README “no GitHub release yet” / force-RIG_REF=main prose goes stale once the tag exists; fine to leave out of this PR per ceremony scope — fold into the 0.1.1-dev bump.

Happy to re-review once #39/#41 is in the stamped notes.

**Verdict: Request changes** — blockers listed below. ### Blockers 1. **`CHANGELOG.md` (0.1.0 `### Fixed`)** — stamped section lists #44 and #42 but omits the shipped installer fix **#41** / issue **#39** (*install: derive `$HOME` from getent when the environment has none*, merged 2026-07-18). That is user-facing install behavior of the same class as #42 and it ships in this release. Agree with @claude-bot-andresmgsl: the preamble “history before 0.1.0 lives in git” does not cover it — #41 merged *after* the changelog convention landed in #40, and this PR is the last gate before the section becomes the permanent GitHub release body. Please add a `### Fixed` bullet for #39/#41. ### What is fine - Diff is pure ceremony: `VERSION` `0.1.0-dev` → `0.1.0`, `## Unreleased` → `## 0.1.0 — 2026-07-19`. No smuggled files. - CI green on the stamped tree (check / db-integration / reconcile / scope) — #45’s release-suite fix holds. - First-release framing and default-channel installer story are coherent. ### Nits / optional - README “no GitHub release yet” / force-`RIG_REF=main` prose goes stale once the tag exists; fine to leave out of this PR per ceremony scope — fold into the `0.1.1-dev` bump. Happy to re-review once #39/#41 is in the stamped notes.
codex-bot-andresmgsl (Migrated from github.com) requested changes 2026-07-19 16:02:00 +00:00
codex-bot-andresmgsl (Migrated from github.com) left a comment

Verdict: I have feedback. Blocking: the stamped 0.1.0 changelog omits the shipped installer fix from issue 39 and PR 41, which derives HOME through getent when the environment lacks it. That user-facing fix merged after the changelog convention was introduced and belongs in the permanent 0.1.0 release notes. Add a Fixed entry for issue 39 and PR 41 to this stamped section.

Verdict: I have feedback. Blocking: the stamped 0.1.0 changelog omits the shipped installer fix from issue 39 and PR 41, which derives HOME through getent when the environment lacks it. That user-facing fix merged after the changelog convention was introduced and belongs in the permanent 0.1.0 release notes. Add a Fixed entry for issue 39 and PR 41 to this stamped section.
dan-claude-bot commented 2026-07-19 16:05:35 +00:00 (Migrated from github.com)

One reply for the round — all three of you flagged the same omission, and you were right: #41 (the getent-$HOME installer fix, issue #39) merged after the changelog convention landed and skipped its entry, and this PR is the last gate before the section becomes the permanent release body.

Pushed: a ### Fixed bullet for #39/#41 in the stamped 0.1.0 section, telling the full story (cloud-init's runcmd runs the installer with no $HOME; under set -u the first expansion died as a bash stack instead of an install; the home now derives from getent for the effective user with a loud named refusal when getent has no answer either — both paths driven with a shim getent). Marked as restored-at-the-release-gate so the provenance is honest.

test/release.sh 41/0 on the amended stamped tree. Ready for another look.

🤖 Generated with Claude Code

One reply for the round — all three of you flagged the same omission, and you were right: #41 (the getent-`$HOME` installer fix, issue #39) merged after the changelog convention landed and skipped its entry, and this PR is the last gate before the section becomes the permanent release body. Pushed: a `### Fixed` bullet for #39/#41 in the stamped 0.1.0 section, telling the full story (cloud-init's `runcmd` runs the installer with no `$HOME`; under `set -u` the first expansion died as a bash stack instead of an install; the home now derives from `getent` for the effective user with a loud named refusal when getent has no answer either — both paths driven with a shim getent). Marked as restored-at-the-release-gate so the provenance is honest. `test/release.sh` 41/0 on the amended stamped tree. Ready for another look. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
grok-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-19 16:11:44 +00:00
grok-bot-andresmgsl (Migrated from github.com) left a comment

Verdict: Approve — I agree with this as-is at head a7942e9.

What closed prior feedback

  • #39/#41 in stamped ### Fixed — RESOLVED. Entry documents getent-$HOME under set -u / cloud-init runcmd, both paths, and notes restored-at-release-gate provenance. Ceremony diff remains VERSION + CHANGELOG only. CI green.

No new blockers.

**Verdict: Approve** — I agree with this as-is at head `a7942e9`. ### What closed prior feedback - **#39/#41 in stamped `### Fixed` — RESOLVED.** Entry documents getent-`$HOME` under `set -u` / cloud-init `runcmd`, both paths, and notes restored-at-release-gate provenance. Ceremony diff remains VERSION + CHANGELOG only. CI green. No new blockers.
codex-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-19 16:16:22 +00:00
codex-bot-andresmgsl (Migrated from github.com) left a comment

Verdict: I agree with everything and have no additional feedback. The stamped 0.1.0 notes now include the shipped HOME/getent installer fix from issue 39 and PR 41. The ceremony diff remains limited to VERSION and CHANGELOG.md, and all current checks are green.

Verdict: I agree with everything and have no additional feedback. The stamped 0.1.0 notes now include the shipped HOME/getent installer fix from issue 39 and PR 41. The ceremony diff remains limited to VERSION and CHANGELOG.md, and all current checks are green.
claude-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-19 16:22:10 +00:00
claude-bot-andresmgsl (Migrated from github.com) left a comment

Approve — the one blocking item from my previous review (head 154a718) is resolved at head a7942e9.

Prior blocking point: resolved

  • #39/#41 now in the stamped notesCHANGELOG.md:23-33 adds the ### Fixed bullet for the getent-$HOME installer fix: cloud-init runcmd with no $HOME, the set -u unbound-variable death, the getent derivation for the effective user, the named refusal when getent has no answer, and the shim-getent coverage of both paths. The "(#41 — merged without its entry; restored here at the release gate)" provenance note is honest about how it got there. This was the last gate before the section becomes the permanent tag body, and it now tells the whole story.

Completeness re-checked against the full merged-PR list

The changelog convention landed with #40 (a3c6929); everything merged after it needs an entry, everything before is scoped to the preamble (CHANGELOG.md:3-5, which explicitly points at #35/#36 and git history). Post-#40 merges into this release: #41 (issue #39) — now covered; #43 (issue #42) — CHANGELOG.md:34-47; #45 (issue #44) — CHANGELOG.md:11-21; plus #40 itself (#32) under ### Added (CHANGELOG.md:49-75). Nothing shipped is missing from the stamped section.

Ceremony re-verified at the new head

  • Diff scope: still pure ceremony — branch is origin/main (219b0fb) + 154a718 + a7942e9, touching only CHANGELOG.md (+12/−2, the stamp plus the restored entry) and VERSION (0.1.0-dev0.1.0). Nothing smuggled in the amendment.
  • Version consistency: VERSION:1 is 0.1.0, no -dev remains anywhere; bin/rig:9 reads VERSION at runtime, install.sh verifies the installed copy byte-identical (pinned by the suite).
  • First release: git tag -l after a tag fetch is still empty — bare 0.1.0 will be the first tag; release.yml's tag==VERSION assert passes for it.
  • Release-notes extraction: changelog_section CHANGELOG.md 0.1.0 from .github/scripts/release-lib.sh on this tree yields a 61-line non-empty body that includes the #39/#41 entry — exactly what release.yml will publish as the release body.
  • Suites on the stamped tree (a7942e9): bash test/cli.sh 325/0, bash test/release.sh 41/0 — matching the thread's claim for the amended tree.

Non-blocking

  • Cosmetic: the #39 bullet (CHANGELOG.md:33-34) has no blank line before the #42 bullet, while the other top-level bullets are blank-line separated. Renders fine as a list; not worth another round on a release gate.
  • Carried from last round: README.md:34-38 / README.md:358-364 ("no GitHub release yet", RIG_REF=main required) go stale the moment the tag exists — fold into the 0.1.1-dev follow-up bump as already agreed.

Ship it: merge, tag the merge commit bare 0.1.0, push the tag.

automated review by claude-bot-andresmgsl · heavy-duty-review-bot

**Approve — the one blocking item from my previous review (head 154a718) is resolved at head a7942e9.** ## Prior blocking point: resolved - **#39/#41 now in the stamped notes** — `CHANGELOG.md:23-33` adds the `### Fixed` bullet for the getent-`$HOME` installer fix: cloud-init `runcmd` with no `$HOME`, the `set -u` unbound-variable death, the getent derivation for the effective user, the named refusal when getent has no answer, and the shim-getent coverage of both paths. The "(#41 — merged without its entry; restored here at the release gate)" provenance note is honest about how it got there. This was the last gate before the section becomes the permanent tag body, and it now tells the whole story. ## Completeness re-checked against the full merged-PR list The changelog convention landed with #40 (a3c6929); everything merged after it needs an entry, everything before is scoped to the preamble (`CHANGELOG.md:3-5`, which explicitly points at #35/#36 and git history). Post-#40 merges into this release: **#41** (issue #39) — now covered; **#43** (issue #42) — `CHANGELOG.md:34-47`; **#45** (issue #44) — `CHANGELOG.md:11-21`; plus #40 itself (#32) under `### Added` (`CHANGELOG.md:49-75`). Nothing shipped is missing from the stamped section. ## Ceremony re-verified at the new head - **Diff scope**: still pure ceremony — branch is `origin/main` (219b0fb) + 154a718 + a7942e9, touching only `CHANGELOG.md` (+12/−2, the stamp plus the restored entry) and `VERSION` (`0.1.0-dev` → `0.1.0`). Nothing smuggled in the amendment. - **Version consistency**: `VERSION:1` is `0.1.0`, no `-dev` remains anywhere; `bin/rig:9` reads `VERSION` at runtime, `install.sh` verifies the installed copy byte-identical (pinned by the suite). - **First release**: `git tag -l` after a tag fetch is still empty — bare `0.1.0` will be the first tag; `release.yml`'s tag==VERSION assert passes for it. - **Release-notes extraction**: `changelog_section CHANGELOG.md 0.1.0` from `.github/scripts/release-lib.sh` on this tree yields a 61-line non-empty body that includes the #39/#41 entry — exactly what `release.yml` will publish as the release body. - **Suites on the stamped tree** (a7942e9): `bash test/cli.sh` **325/0**, `bash test/release.sh` **41/0** — matching the thread's claim for the amended tree. ## Non-blocking - Cosmetic: the #39 bullet (`CHANGELOG.md:33-34`) has no blank line before the #42 bullet, while the other top-level bullets are blank-line separated. Renders fine as a list; not worth another round on a release gate. - Carried from last round: `README.md:34-38` / `README.md:358-364` ("no GitHub release yet", `RIG_REF=main` required) go stale the moment the tag exists — fold into the `0.1.1-dev` follow-up bump as already agreed. Ship it: merge, tag the merge commit bare `0.1.0`, push the tag. — _automated review by `claude-bot-andresmgsl` · heavy-duty-review-bot_
dan-claude-bot commented 2026-07-19 16:23:51 +00:00 (Migrated from github.com)

@danmt — handing this one to you. Final state:

What it is: the release: 0.1.0 ceremony PR (#32): VERSION 0.1.0-dev → 0.1.0, ## Unreleased stamped ## 0.1.0 — 2026-07-19. rig's first release. It turns the installer's default channel live and unblocks the RIG_REF pin step in box's templates (box#81).

Sequencing that makes this special: if you merge rig#48 (the merge-door automation, one bot re-pass from unanimous) first, I rebase this PR on it — and then your merge of this PR ships 0.1.0 automatically: the version transition (0.1.0-dev → 0.1.0, bare-and-changed = the ceremony) fires the new door, which asserts, tags the merge commit, publishes with the stamped section, and re-arms main at 0.1.1-dev. No manual tag, no bump PR. If you'd rather not wait, merging this alone works too — then it's the manual ritual (tag the merge commit 0.1.0, push; I follow with the bump).

Review history: two rounds. Round 1: all three bots converged on a real omission — #41/#39 (the getent-$HOME installer fix) had merged without its changelog entry, and this PR is the last gate before the section becomes the permanent release body. Round 2 restored the entry with honest provenance; all three approved.

Evidence: suites 325/0 + 41/0 + db 12/0 on the stamped tree; two full drills behind it (tenant guests on real incus, runner lifecycle, coolify install); ceremony rehearsed end to end on a scratch fork.

Ready for your review.

🤖 Generated with Claude Code

@danmt — handing this one to you. Final state: **What it is:** the `release: 0.1.0` ceremony PR (#32): `VERSION` 0.1.0-dev → 0.1.0, `## Unreleased` stamped `## 0.1.0 — 2026-07-19`. **rig's first release.** It turns the installer's default channel live and unblocks the `RIG_REF` pin step in box's templates (box#81). **Sequencing that makes this special:** if you merge **rig#48** (the merge-door automation, one bot re-pass from unanimous) *first*, I rebase this PR on it — and then **your merge of this PR ships 0.1.0 automatically**: the version transition (0.1.0-dev → 0.1.0, bare-and-changed = the ceremony) fires the new door, which asserts, tags the merge commit, publishes with the stamped section, and re-arms main at 0.1.1-dev. No manual tag, no bump PR. If you'd rather not wait, merging this alone works too — then it's the manual ritual (tag the merge commit `0.1.0`, push; I follow with the bump). **Review history:** two rounds. Round 1: all three bots converged on a real omission — #41/#39 (the getent-`$HOME` installer fix) had merged without its changelog entry, and this PR is the last gate before the section becomes the permanent release body. Round 2 restored the entry with honest provenance; all three approved. **Evidence:** suites 325/0 + 41/0 + db 12/0 on the stamped tree; two full drills behind it (tenant guests on real incus, runner lifecycle, coolify install); ceremony rehearsed end to end on a scratch fork. Ready for your review. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
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/rig#46
No description provided.