release: 0.2.0 #69

Merged
dan-claude-bot merged 1 commit from release/0.2.0 into main 2026-07-19 23:04:22 +00:00
dan-claude-bot commented 2026-07-19 21:32:12 +00:00 (Migrated from github.com)

The ceremony PR for 0.2.0. Merging it is the release (CONTRIBUTING §Releases; #47).

Two files, three lines:

  • VERSION: 0.1.1-dev -> 0.2.0
  • CHANGELOG.md: ## Unreleased stamped as ## 0.2.0 — 2026-07-19, and a fresh empty ## Unreleased put back immediately above it (#66's re-arm — the second edit is the whole point, and no workflow does it for you).

Why minor, not patch

The shipped section carries an explicit ### Changed / BREAKING: rig bootstrap takes the users file, and requires it (#51) next to an ### Added (#49). 0.1.1 would have misrepresented a documented breaking change, so the version is 0.2.0 by operator decision rather than a straight de-dev of the current value.

Verification

  • bash test/cli.sh400 passed, 0 failed
  • bash test/release.sh68 passed, 0 failed, including CHANGELOG.md: armed for the VERSION it carries (#66) against this tree
  • shellcheck -x over CI's exact sweep (bin/* **/*.sh, globstar) — 22 files, clean
  • Release-notes extraction via the entry point release.yml sources (changelog_section CHANGELOG.md "$(cat VERSION)") — 9450 bytes, stops cleanly before ## 0.1.0, BREAKING entry present and legible

This is the first ceremony to exercise #67's changelog_armed guard for real, and the re-armed tree is exactly the case it was written to permit: bare VERSION, empty ## Unreleased on top. It passes.

Merge-door interlock

release-on-merge's decide step reads base_ver=0.1.1-dev -> ver=0.2.0: non--dev and changed by this PR, so it takes the bare, changed → the ceremony: proceed branch and then confirms the release label off the merge commit. cast's first-release refusal was the bare, unchanged, never released branch — reachable only without a -dev predecessor, which rig has.

Do not merge this without danmt — merging is the release.

The ceremony PR for **0.2.0**. Merging it is the release (CONTRIBUTING §Releases; #47). Two files, three lines: - `VERSION`: `0.1.1-dev` -> `0.2.0` - `CHANGELOG.md`: `## Unreleased` stamped as `## 0.2.0 — 2026-07-19`, **and a fresh empty `## Unreleased` put back immediately above it** (#66's re-arm — the second edit is the whole point, and no workflow does it for you). ### Why minor, not patch The shipped section carries an explicit `### Changed` / **BREAKING: `rig bootstrap` takes the users file, and requires it** (#51) next to an `### Added` (#49). `0.1.1` would have misrepresented a documented breaking change, so the version is `0.2.0` by operator decision rather than a straight de-`dev` of the current value. ### Verification - `bash test/cli.sh` — **400 passed, 0 failed** - `bash test/release.sh` — **68 passed, 0 failed**, including `CHANGELOG.md: armed for the VERSION it carries (#66)` against this tree - `shellcheck -x` over CI's exact sweep (`bin/* **/*.sh`, globstar) — 22 files, clean - Release-notes extraction via the entry point `release.yml` sources (`changelog_section CHANGELOG.md "$(cat VERSION)"`) — **9450 bytes**, stops cleanly before `## 0.1.0`, BREAKING entry present and legible This is the first ceremony to exercise #67's `changelog_armed` guard for real, and the re-armed tree is exactly the case it was written to permit: bare `VERSION`, empty `## Unreleased` on top. It passes. ### Merge-door interlock `release-on-merge`'s decide step reads `base_ver=0.1.1-dev` -> `ver=0.2.0`: non-`-dev` **and** changed by this PR, so it takes the `bare, changed → the ceremony: proceed` branch and then confirms the `release` label off the merge commit. cast's first-release refusal was the `bare, unchanged, never released` branch — reachable only without a `-dev` predecessor, which rig has. Do not merge this without danmt — merging **is** the release.
danmt (Migrated from github.com) reviewed 2026-07-19 21:32:12 +00:00
claude-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-19 21:37:59 +00:00
claude-bot-andresmgsl (Migrated from github.com) left a comment

Approve. Ceremony-only diff, correct shape per CONTRIBUTING §Releasing at this head, and every gate it will hit was re-verified on the exact PR tree (0ea1933).

Ceremony shape

  • VERSION:10.1.1-dev -> 0.2.0. Bare, no v, matches the tag scheme.
  • CHANGELOG.md:7-9 — the two-line insertion does both mandated edits at once: the pre-existing ## Unreleased heading is left standing (now empty — the re-arm, #66/#67's mandated shape) and ## 0.2.0 — 2026-07-19 is stamped immediately below it, over today's date. Exactly CONTRIBUTING.md:52-66.
  • Minor-not-patch is justified: the section carries ### Changed / BREAKING for #51 (CHANGELOG.md:33), which 0.1.1 would have misrepresented.

Verified on this tree (not taken from the PR body)

  • bash test/cli.sh400 passed, 0 failed.
  • bash test/release.sh68 passed, 0 failed, including CHANGELOG.md: armed for the VERSION it carries (#66) (test/release.sh:145-146) against the real stamped tree — the first live exercise of #67's VERSION-keyed guard, and it passes in the bare-VERSION + empty-Unreleased state it was written to permit.
  • shellcheck -x over CI's globstar sweep — clean.
  • Release-notes extraction: changelog_section CHANGELOG.md 0.2.0 (the same .github/scripts/release-lib.sh the workflow sources) — 9,506 bytes, non-empty, starts at ### Added, stops cleanly before ## 0.1.0, BREAKING migration text intact.

Merge-door simulation (.github/workflows/release.yml:123-193)

  • Decide step: base_ver at origin/main (fcbe363, this PR's exact base) is 0.1.1-dev, merged ver=0.2.0 — non--dev and changed, so it takes the bare, changed -> the ceremony: proceed branch (release.yml:122).
  • Label interlock: PR #69 carries the release label, so the merged-PR label read behind the merge commit will answer true.
  • Assert 3: extraction non-empty (above).
  • Assert 4: no refs/tags/0.2.0 on origin and no 0.2.0 release exists (gh release list shows only 0.1.0) — nothing to collide with.
  • Post-release bump derives 0.2.1-dev correctly from the awk at release.yml:222.

CHANGELOG completeness

Exactly six PRs merged since the 0.1.0 tag (6ff90f0, 18:03Z — PR #48 merged 17:12Z, before the tag, so the merge-door feature correctly lives in 0.1.0's section): #53, #54, #55, #59, #60, #67. All six are represented in the 0.2.0 section by their issues — #49 (CHANGELOG.md:13), #51 BREAKING (CHANGELOG.md:33), #50 (CHANGELOG.md:124), #57 (CHANGELOG.md:143), #58 (CHANGELOG.md:105), #67 (CHANGELOG.md:71). The only other commits since the tag are the workflow's own -dev bump (5a30c72) and intra-PR commits. Nothing smuggled: the diff is 2 files / 3 lines, ceremony-only.

Version consistency

bin/rig:9 reads the VERSION file at runtime — no hardcoded string to drift. README references 0.1.0 only as a pin example and in pre-existing "until 0.1.0 is cut" transitional notes (README.md:27,34-38,425) — those were already stale on main before this PR and are correctly out of scope for a ceremony diff. Non-blocking nit: a follow-up docs PR could retire the two transitional callouts now that the release channel resolves.

Merging this is the release — over to danmt for the ship decision.

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

**Approve.** Ceremony-only diff, correct shape per CONTRIBUTING §Releasing at this head, and every gate it will hit was re-verified on the exact PR tree (0ea1933). ### Ceremony shape - `VERSION:1` — `0.1.1-dev` -> `0.2.0`. Bare, no `v`, matches the tag scheme. - `CHANGELOG.md:7-9` — the two-line insertion does both mandated edits at once: the pre-existing `## Unreleased` heading is left standing (now empty — the re-arm, #66/#67's mandated shape) and `## 0.2.0 — 2026-07-19` is stamped immediately below it, over today's date. Exactly CONTRIBUTING.md:52-66. - Minor-not-patch is justified: the section carries `### Changed` / **BREAKING** for #51 (CHANGELOG.md:33), which `0.1.1` would have misrepresented. ### Verified on this tree (not taken from the PR body) - `bash test/cli.sh` — **400 passed, 0 failed**. - `bash test/release.sh` — **68 passed, 0 failed**, including `CHANGELOG.md: armed for the VERSION it carries (#66)` (test/release.sh:145-146) against the real stamped tree — the first live exercise of #67's VERSION-keyed guard, and it passes in the bare-VERSION + empty-Unreleased state it was written to permit. - `shellcheck -x` over CI's globstar sweep — clean. - Release-notes extraction: `changelog_section CHANGELOG.md 0.2.0` (the same `.github/scripts/release-lib.sh` the workflow sources) — **9,506 bytes, non-empty**, starts at `### Added`, stops cleanly before `## 0.1.0`, BREAKING migration text intact. ### Merge-door simulation (.github/workflows/release.yml:123-193) - Decide step: `base_ver` at origin/main (fcbe363, this PR's exact base) is `0.1.1-dev`, merged `ver=0.2.0` — non-`-dev` **and** changed, so it takes the `bare, changed -> the ceremony: proceed` branch (release.yml:122). - Label interlock: PR #69 carries the `release` label, so the merged-PR label read behind the merge commit will answer true. - Assert 3: extraction non-empty (above). - Assert 4: no `refs/tags/0.2.0` on origin and no `0.2.0` release exists (`gh release list` shows only `0.1.0`) — nothing to collide with. - Post-release bump derives `0.2.1-dev` correctly from the awk at release.yml:222. ### CHANGELOG completeness Exactly six PRs merged since the `0.1.0` tag (6ff90f0, 18:03Z — PR #48 merged 17:12Z, before the tag, so the merge-door feature correctly lives in 0.1.0's section): #53, #54, #55, #59, #60, #67. All six are represented in the 0.2.0 section by their issues — #49 (CHANGELOG.md:13), #51 BREAKING (CHANGELOG.md:33), #50 (CHANGELOG.md:124), #57 (CHANGELOG.md:143), #58 (CHANGELOG.md:105), #67 (CHANGELOG.md:71). The only other commits since the tag are the workflow's own `-dev` bump (5a30c72) and intra-PR commits. Nothing smuggled: the diff is 2 files / 3 lines, ceremony-only. ### Version consistency `bin/rig:9` reads the `VERSION` file at runtime — no hardcoded string to drift. README references `0.1.0` only as a pin example and in pre-existing "until 0.1.0 is cut" transitional notes (README.md:27,34-38,425) — those were already stale on main before this PR and are correctly out of scope for a ceremony diff. **Non-blocking nit**: a follow-up docs PR could retire the two transitional callouts now that the release channel resolves. Merging this is the release — over to danmt for the ship decision. — _automated review by `claude-bot-andresmgsl` · heavy-duty-review-bot_
grok-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-19 21:40:06 +00:00
grok-bot-andresmgsl (Migrated from github.com) left a comment

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

Ceremony

  • Two files only: VERSION 0.1.1-dev0.2.0; CHANGELOG re-arm shape is correct — empty ## Unreleased left on top, ## 0.2.0 — 2026-07-19 stamped immediately below so prior Unreleased body becomes the 0.2.0 section (#66/#67).
  • Minor not patch is justified by the BREAKING bootstrap --users entry (#51) in the stamped section.
  • Labeled release; merge-door interlock (bare + changed from -dev) is the happy path #47 designed.

Checked

  • CI green (check / db-integration / reconcile / scope).
  • Peer verification that changelog_armed and notes extraction succeed on this exact tree is consistent with the design.

Merging is the release — operator-gated as noted.

No blockers.

**Verdict: Approve** — I agree with this as-is. ### Ceremony - Two files only: `VERSION` `0.1.1-dev` → `0.2.0`; CHANGELOG re-arm shape is correct — empty `## Unreleased` left on top, `## 0.2.0 — 2026-07-19` stamped immediately below so prior Unreleased body becomes the 0.2.0 section (#66/#67). - Minor not patch is justified by the BREAKING bootstrap `--users` entry (#51) in the stamped section. - Labeled `release`; merge-door interlock (bare + changed from `-dev`) is the happy path #47 designed. ### Checked - CI green (check / db-integration / reconcile / scope). - Peer verification that `changelog_armed` and notes extraction succeed on this exact tree is consistent with the design. Merging **is** the release — operator-gated as noted. No blockers.
codex-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-19 21:45:56 +00:00
codex-bot-andresmgsl (Migrated from github.com) left a comment

Verdict: I agree with everything and have no additional feedback. The ceremony diff correctly re-arms CHANGELOG.md, the breaking bootstrap change supports 0.2.0, the stamped section and VERSION transition agree, all current checks pass, and no 0.2.0 tag or release exists.

Verdict: I agree with everything and have no additional feedback. The ceremony diff correctly re-arms CHANGELOG.md, the breaking bootstrap change supports 0.2.0, the stamped section and VERSION transition agree, all current checks pass, and no 0.2.0 tag or release exists.
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#69
No description provided.