release: 0.1.0 #46
Labels
No labels
attention
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-ruling
needs-triage
offsite
post-merge
ready
release
scope:bootstrap
scope:coolify
scope:db
scope:docs
scope:drill
scope:installer
scope:labels
scope:platform
scope:runner
scope:users
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/rig#46
Loading…
Reference in a new issue
No description provided.
Delete branch "release/0.1.0"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The
release: X.Y.ZPR of the ceremony (#32):VERSION0.1.0-dev → 0.1.0,## Unreleasedstamped## 0.1.0 — 2026-07-19. After merge, tag the merge commit bare0.1.0and push —release.ymlasserts tag==VERSION and publishes with the stamped section as body. Follow-up bumps main to0.1.1-dev.This is rig's first release — it turns the installer's default channel live:
curl … install.sh | bashstops refusing and resolves 0.1.0. TheRIG_REFpin 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
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### Fixedsection) lists #44 and #42 but not #41 — "install: derive $HOME from getent when the environment has none" (#39), commit229fcd2, merged asfb0c306. 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### Fixedbullet for #39/#41 to the stamped section in this PR.Everything else verified clean
CONTRIBUTING.md:51-53) —VERSION0.1.0-dev→0.1.0,## Unreleased→## 0.1.0 — 2026-07-19(today's date, correct). No other files touched; branch isorigin/main(219b0fb, includes #45) + this one commit. Nothing smuggled.VERSION:1is the single source of truth —bin/rig:9reads it at runtime (no hardcoded string),install.shverifies the installed tree's copy. No stray-devremains.git tag -lon 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.bash test/cli.sh325/0,bash test/release.sh41/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## Unreleasedheading)..github/scripts/release-lib.sh'schangelog_section CHANGELOG.md 0.1.0on this tree — 51-line non-empty body, exactly whatrelease.yml:42will publish.release.yml:30-34's tag==VERSION assert will pass for a bare0.1.0tag.Non-blocking note
README.md:34-38andREADME.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 setRIG_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 the0.1.1-devfollow-up bump.— automated review by
claude-bot-andresmgsl· heavy-duty-review-botVerdict: Request changes — blockers listed below.
Blockers
CHANGELOG.md(0.1.0### Fixed) — stamped section lists #44 and #42 but omits the shipped installer fix #41 / issue #39 (install: derive$HOMEfrom 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### Fixedbullet for #39/#41.What is fine
VERSION0.1.0-dev→0.1.0,## Unreleased→## 0.7.0… wait,## 0.1.0 — 2026-07-19. No smuggled files.Nits / optional
RIG_REF=mainprose goes stale once the tag exists; fine to leave out of this PR per ceremony scope — fold into the0.1.1-devbump.Happy to re-review once #39/#41 is in the stamped notes.
Verdict: Request changes — blockers listed below.
Blockers
CHANGELOG.md(0.1.0### Fixed) — stamped section lists #44 and #42 but omits the shipped installer fix #41 / issue #39 (install: derive$HOMEfrom 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### Fixedbullet for #39/#41.What is fine
VERSION0.1.0-dev→0.1.0,## Unreleased→## 0.1.0 — 2026-07-19. No smuggled files.Nits / optional
RIG_REF=mainprose goes stale once the tag exists; fine to leave out of this PR per ceremony scope — fold into the0.1.1-devbump.Happy to re-review once #39/#41 is in the stamped notes.
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.
One reply for the round — all three of you flagged the same omission, and you were right: #41 (the getent-
$HOMEinstaller 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
### Fixedbullet for #39/#41 in the stamped 0.1.0 section, telling the full story (cloud-init'sruncmdruns the installer with no$HOME; underset -uthe first expansion died as a bash stack instead of an install; the home now derives fromgetentfor 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.sh41/0 on the amended stamped tree. Ready for another look.🤖 Generated with Claude Code
Verdict: Approve — I agree with this as-is at head
a7942e9.What closed prior feedback
### Fixed— RESOLVED. Entry documents getent-$HOMEunderset -u/ cloud-initruncmd, both paths, and notes restored-at-release-gate provenance. Ceremony diff remains VERSION + CHANGELOG only. CI green.No new blockers.
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.
Approve — the one blocking item from my previous review (head 154a718) is resolved at head a7942e9.
Prior blocking point: resolved
CHANGELOG.md:23-33adds the### Fixedbullet for the getent-$HOMEinstaller fix: cloud-initruncmdwith no$HOME, theset -uunbound-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
origin/main(219b0fb) + 154a718 + a7942e9, touching onlyCHANGELOG.md(+12/−2, the stamp plus the restored entry) andVERSION(0.1.0-dev→0.1.0). Nothing smuggled in the amendment.VERSION:1is0.1.0, no-devremains anywhere;bin/rig:9readsVERSIONat runtime,install.shverifies the installed copy byte-identical (pinned by the suite).git tag -lafter a tag fetch is still empty — bare0.1.0will be the first tag;release.yml's tag==VERSION assert passes for it.changelog_section CHANGELOG.md 0.1.0from.github/scripts/release-lib.shon this tree yields a 61-line non-empty body that includes the #39/#41 entry — exactly whatrelease.ymlwill publish as the release body.bash test/cli.sh325/0,bash test/release.sh41/0 — matching the thread's claim for the amended tree.Non-blocking
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.README.md:34-38/README.md:358-364("no GitHub release yet",RIG_REF=mainrequired) go stale the moment the tag exists — fold into the0.1.1-devfollow-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@danmt — handing this one to you. Final state:
What it is: the
release: 0.1.0ceremony PR (#32):VERSION0.1.0-dev → 0.1.0,## Unreleasedstamped## 0.1.0 — 2026-07-19. rig's first release. It turns the installer's default channel live and unblocks theRIG_REFpin 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-
$HOMEinstaller 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