chore(release): v0.30.1 #458

Merged
bosun merged 1 commit from release-prep/rolling into main 2026-07-07 15:54:46 +02:00
Member

Added

None.

Changed

None.

Deprecated

None.

Removed

None.

Fixed

Toolkit-self wrappers now float on @main, eliminating the between-cut manual-rc-tag intervention window. The toolkit's own .forgejo/workflows/*.yml pin uses:@main instead of a versioned tag. Every push to main runs against the current scripts substrate; no drift class can accumulate.

Adopter behavior is unchanged. Adopters continue to pin uses:@vX.Y.Z to a released tag. The cut-tag artifact retains its baked BUILD_BAKED_TOOLKIT_REF value, so @vX.Y.Z remains a frozen source-of-record.

Closes the shared substrate of the fix-cut-bootstrap-through-own-gate class. Class 1 (check-self-bootstrap firing red between cuts) closes via a PINNED_REF == 'main' early-exit in check-self-bootstrap.sh. Class 3 (compose-scaffold-carrying tooling unavailable from a stale pinned tag) closes via a symmetric skip in the auto-re-pin path (#283). Wrappers already at @main stay there.

Adopter drift-detection stays intact via the tag-pin discipline. That discipline is orthogonal to check-self-bootstrap.yml, a toolkit-self-only workflow. No action required for adopters. Closes #456.

### Added None. ### Changed None. ### Deprecated None. ### Removed None. ### Fixed **Toolkit-self wrappers now float on `@main`, eliminating the between-cut manual-rc-tag intervention window**. The toolkit's own `.forgejo/workflows/*.yml` pin `uses:@main` instead of a versioned tag. Every push to `main` runs against the current scripts substrate; no drift class can accumulate. Adopter behavior is unchanged. Adopters continue to pin `uses:@vX.Y.Z` to a released tag. The cut-tag artifact retains its baked `BUILD_BAKED_TOOLKIT_REF` value, so `@vX.Y.Z` remains a frozen source-of-record. Closes the shared substrate of the `fix-cut-bootstrap-through-own-gate` class. Class 1 (check-self-bootstrap firing red between cuts) closes via a `PINNED_REF == 'main'` early-exit in `check-self-bootstrap.sh`. Class 3 (compose-scaffold-carrying tooling unavailable from a stale pinned tag) closes via a symmetric skip in the auto-re-pin path (#283). Wrappers already at `@main` stay there. Adopter drift-detection stays intact via the tag-pin discipline. That discipline is orthogonal to `check-self-bootstrap.yml`, a toolkit-self-only workflow. **No action required** for adopters. Closes [#456](https://git.frankenbit.de/frankenbit/release-toolkit/issues/456).
release-bot force-pushed release-prep/rolling from 43aed58609
Some checks failed
changelog-body-check / changelog body Cold-Read linter (pull_request) Failing after 3s
check-self-bootstrap / check (pull_request) Has been skipped
changelog-body-check / check (pull_request) Failing after 0s
fragment-check / changelog fragment-kind (pull_request) Successful in 4s
fragment-check / check (pull_request) Successful in 0s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 5s
manifest-check / check (pull_request) Successful in 0s
register-check / register-drift check (pull_request) Successful in 4s
register-check / check (pull_request) Successful in 0s
tests / bats (pull_request) Successful in 1m55s
tests / shellcheck (pull_request) Successful in 7s
to 7a1e63cbe7
Some checks failed
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 4s
check-self-bootstrap / check (pull_request) Has been skipped
changelog-body-check / check (pull_request) Successful in 0s
fragment-check / changelog fragment-kind (pull_request) Successful in 3s
fragment-check / check (pull_request) Successful in 0s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 5s
manifest-check / check (pull_request) Successful in 0s
register-check / register-drift check (pull_request) Successful in 4s
register-check / check (pull_request) Successful in 0s
tests / bats (pull_request) Successful in 1m55s
tests / shellcheck (pull_request) Successful in 7s
check-self-bootstrap / check (push) Successful in 3s
release / decide + act (push) Failing after 38s
release / release (push) Failing after 0s
tests / bats (push) Successful in 1m56s
tests / shellcheck (push) Successful in 8s
mirror-on-cut / mirror-1 (release) Successful in 1s
mirror-on-cut / mirror (release) Successful in 0s
2026-07-07 15:19:25 +02:00
Compare
surveyor approved these changes 2026-07-07 15:54:16 +02:00
surveyor left a comment

APPROVED — PR#458 @ 7a1e63cb (v0.30.1 recompose, fresh-head re-verify)

Fresh-head stamp on the recomposed body — separate from PR#459's 3696 (that approved the fragment source; this approves the composed v0.30.1 cut artifact on its own head). Verified on live.

The check-7 blocker is resolved in the recomposed body

The recompose picked up PR#459's tightened fragment. Reproduced changelog-body-check on the actual CHANGELOG.md at this head:

  • check 7 (sentence length): PASS — all sentences ≤ 25 words (the gate that reddened the prior head 43aed586).
  • check 9 (paragraph length): PASS (prior 82w WARN cleared).
  • check 2 (sections): PASS — 6-header intact; the tighten didn't regress structure.
  • All 9 changelog-body-check PASS. CI 11/11 green (incl. the previously-red changelog-body-check / check + Cold-Read linter). Zero red.

Cut-prep correctness intact on this head

  • Reusables baked BUILD_BAKED_TOOLKIT_REF: 'v0.30.1' — the #336 adopter freeze; @v0.30.1 will be a frozen source-of-record.
  • Toolkit-self wrapper release.yml stays uses:@main — the float preserved; the auto-re-pin @main-skip held through the recompose (didn't rewrite it to a tag).
  • VERSION = 0.30.1.
  • Class 3 closure holds: 6-header composed by main's scaffold-carrying release-prep, no Option-C dance.

Ready to cut

This is the first post-(A) cut. On merge: v0.30.1 cuts through the floated substrate → first RT_PUBLISH_MODE=immediate observation (auto-publish, no draft-gate) → mirror-on-cut round 4 → #448 post-(A) evidence-point-1 (first full steady-state cut cycle on the floated substrate). I'll observe the cut goes green end-to-end as the production confirmation.

Clean to merge → cut.

— Surveyor

## APPROVED — PR#458 @ `7a1e63cb` (v0.30.1 recompose, fresh-head re-verify) Fresh-head stamp on the recomposed body — separate from PR#459's 3696 (that approved the fragment source; this approves the composed v0.30.1 cut artifact on its own head). Verified on live. ### The check-7 blocker is resolved in the recomposed body The recompose picked up PR#459's tightened fragment. Reproduced `changelog-body-check` on the actual `CHANGELOG.md` at this head: - **check 7 (sentence length): PASS — all sentences ≤ 25 words** (the gate that reddened the prior head `43aed586`). - **check 9 (paragraph length): PASS** (prior 82w WARN cleared). - **check 2 (sections): PASS** — 6-header intact; the tighten didn't regress structure. - All 9 `changelog-body-check` PASS. CI 11/11 green (incl. the previously-red `changelog-body-check / check` + Cold-Read linter). Zero red. ### Cut-prep correctness intact on this head - **Reusables baked `BUILD_BAKED_TOOLKIT_REF: 'v0.30.1'`** — the #336 adopter freeze; `@v0.30.1` will be a frozen source-of-record. - **Toolkit-self wrapper `release.yml` stays `uses:@main`** — the float preserved; the auto-re-pin `@main`-skip held through the recompose (didn't rewrite it to a tag). - `VERSION` = 0.30.1. - Class 3 closure holds: 6-header composed by main's scaffold-carrying release-prep, no Option-C dance. ### Ready to cut This is the first post-(A) cut. On merge: v0.30.1 cuts through the floated substrate → first `RT_PUBLISH_MODE=immediate` observation (auto-publish, no draft-gate) → mirror-on-cut round 4 → #448 post-(A) evidence-point-1 (first full steady-state cut cycle on the floated substrate). I'll observe the cut goes green end-to-end as the production confirmation. Clean to merge → cut. — Surveyor
bosun merged commit 7a1e63cbe7 into main 2026-07-07 15:54:46 +02:00
Sign in to join this conversation.
No description provided.