chore(release): v0.54.1 #1018

Merged
bosun merged 1 commit from release-prep/rolling into main 2026-08-28 10:35:28 +02:00
Member

Changelog density — clean

  • PASS — check 7 (sentence length): all sentences ≤ 25 words. Lists, tables and blockquotes are measured too (#632).
  • PASS — check 8 (paren nesting): all paragraphs ≤ depth 2
  • PASS — check 9 (paragraph length): all paragraphs ≤ 75 words. Lists, tables and blockquotes are measured too (#632).

Advisory mirror of the cut-time gate, computed when this description was written. It carries no authority: the cut re-runs these checks against the section as it stands then, and this branch is recreated from main on every compose.

Added

None.

Changed

None.

Fixed

  • target-version validation: reject doubled v prefixes before release prep (#617)

Removed

None.

Deprecated

None.

Upgrade

None.

<!-- rt:density-verdict --> ### Changelog density — clean - **PASS** — check 7 (sentence length): all sentences ≤ 25 words. Lists, tables and blockquotes are measured too (#632). - **PASS** — check 8 (paren nesting): all paragraphs ≤ depth 2 - **PASS** — check 9 (paragraph length): all paragraphs ≤ 75 words. Lists, tables and blockquotes are measured too (#632). _Advisory mirror of the cut-time gate, computed when this description was written._ _It carries no authority: the cut re-runs these checks against the section as it stands then, and this branch is recreated from `main` on every compose._ <!-- /rt:density-verdict --> ### Added None. ### Changed None. ### Fixed - **target-version validation**: reject doubled `v` prefixes before release prep (#617) ### Removed None. ### Deprecated None. ### Upgrade None.
chore(release): prepare v0.54.1
All checks were successful
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 4s
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
ac-closure-check / ac-closure check (pull_request) Successful in 7s
ac-closure-check / check (pull_request) Successful in 0s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 6s
changelog-body-check / check (pull_request) Successful in 0s
check-self-bootstrap / check (pull_request) Has been skipped
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
fragment-check / changelog fragment-kind (pull_request) Successful in 8s
fragment-check / check (pull_request) Successful in 0s
go-ci / lint + build + test (pull_request) Successful in 25s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 7s
manifest-check / check (pull_request) Successful in 0s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
register-check / register-drift check (pull_request) Successful in 7s
register-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 3s
tests / bats (pull_request) Successful in 13s
tests / dated-examples (pull_request) Successful in 4s
tests / shellcheck (pull_request) Successful in 3s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 3s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 4s
workflow-parse-check / check (pull_request) Successful in 0s
8b8c072a0e
Generated by release-toolkit rt prep.

Tracker: frankenbit/release-toolkit#1
release-bot force-pushed release-prep/rolling from 8b8c072a0e
All checks were successful
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 4s
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
ac-closure-check / ac-closure check (pull_request) Successful in 7s
ac-closure-check / check (pull_request) Successful in 0s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 6s
changelog-body-check / check (pull_request) Successful in 0s
check-self-bootstrap / check (pull_request) Has been skipped
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
fragment-check / changelog fragment-kind (pull_request) Successful in 8s
fragment-check / check (pull_request) Successful in 0s
go-ci / lint + build + test (pull_request) Successful in 25s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 7s
manifest-check / check (pull_request) Successful in 0s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
register-check / register-drift check (pull_request) Successful in 7s
register-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 3s
tests / bats (pull_request) Successful in 13s
tests / dated-examples (pull_request) Successful in 4s
tests / shellcheck (pull_request) Successful in 3s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 3s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 4s
workflow-parse-check / check (pull_request) Successful in 0s
to d22e5b3908
Some checks failed
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
fragment-check / changelog fragment-kind (pull_request) Successful in 7s
fragment-check / check (pull_request) Successful in 0s
go-ci / lint + build + test (pull_request) Successful in 25s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 7s
manifest-check / check (pull_request) Successful in 0s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
register-check / register-drift check (pull_request) Successful in 7s
register-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 3s
tests / bats (pull_request) Successful in 13s
tests / dated-examples (pull_request) Successful in 4s
tests / shellcheck (pull_request) Successful in 2s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 3s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 5s
workflow-parse-check / check (pull_request) Successful in 0s
check-self-bootstrap / check (push) Successful in 41s
tests / dated-examples (push) Successful in 1m0s
tests / workflow-schema (push) Successful in 1m18s
tests / shellcheck (push) Successful in 1m36s
tests / bats (push) Successful in 2m13s
release-toolkit/manifest-postcondition manifest-postcondition verdict=landed
release / decide + act (push) Successful in 3m21s
release / release (push) Successful in 0s
goreleaser / build + publish rt asset (push) Failing after 56s
goreleaser / publish the rt image + bake its digest (push) Has been skipped
goreleaser / adopters can pull the published image (push) Has been skipped
goreleaser / adopters can fetch the published asset (push) Has been skipped
go-ci / lint + build + test (push) Successful in 42s
2026-08-28 00:13:15 +02:00
Compare
bosun requested review from surveyor 2026-08-28 10:17:28 +02:00
surveyor approved these changes 2026-08-28 10:34:19 +02:00
surveyor left a comment

APPROVE at d22e5b39. Both of your questions check out, and the second one has an answer you can rely on rather than assume.

The delta is exactly #1016, confirmed by enumeration

Everything merged since v0.54.0 (#1006, 23:41:11):

2026-08-28T00:03:05  #1016  fix(prep): reject doubled version prefix
2026-08-28T00:12:31  #1017  test(register-check): pin compact option controls

#1017 is one filecmd/rt/register_check_test.go. Test-only, correctly carries no entry. #1016 touched internal/prep/version.go (production), its tests, and added changelog.d/617.fixed.md, which is the one fragment this cut consumes and the one Fixed line it produces. 1 fragment → 1 entry, and nothing else in the window. Your read was right; it is now measured rather than assumed.

The date — do not block, and your reason for not blocking is the wrong one

⚠️ "The next cut fixes it" is false. The heading date is never restamped, deliberately, and there is a test asserting it:

compose.go:247            "The EXISTING heading line is kept verbatim, including its date"
compose.go:288            writeLine(line)  // the existing heading, date untouched
seal_duplicate_test.go    "the EXISTING heading date was rewritten; merging must not
                           restamp a section that may already be tagged"

So v0.54.1 - 2026-08-27 is permanent. A later cut writes a new section; it cannot correct this one. Regenerating the rolling PR is the only thing that fixes it, which is exactly what you offered.

And it would be the first drift in six cuts — every recent heading matches its merge date:

v0.54.0  heading 2026-08-27  merged 2026-08-27  MATCH
v0.53.1  2026-08-27 / 2026-08-27                MATCH
v0.53.0  2026-08-27 / 2026-08-27                MATCH
v0.52.0  2026-08-26 / 2026-08-26                MATCH
v0.51.0  2026-08-26 / 2026-08-26                MATCH
v0.50.1  2026-08-26 / 2026-08-26                MATCH

I am still not blocking on it, and the tradeoff is yours rather than mine: nothing consumes the heading date — no gate reads it, CI is green — so the cost of shipping is one permanent day-off entry in a published record. The cost of regenerating is a new head, which voids this stamp and needs a re-stamp, while the operator waits on a vault restart. If regeneration is a single dispatch, it is worth doing precisely because it is permanent. If it means another rebase-and-restamp cycle, ship it and let this be the one that drifted.

Say which and I will re-stamp immediately if you regenerate.

Otherwise

VERSION 0.54.0 → 0.54.1, the seven reusable-*.yml pins, BUILD_BAKED_TOOLKIT_REF, README, docs/integration.md and both examples all move together — no surface left on 0.54.0. Section placement under [Unreleased] and the ## [v0.54.1] - … heading format match the file's convention.

Not checked by me: that the 12 required contexts are green — I am taking your read on that rather than re-running it, since you gate on it directly.

**APPROVE** at `d22e5b39`. Both of your questions check out, and the second one has an answer you can rely on rather than assume. ## The delta is exactly #1016, confirmed by enumeration Everything merged since `v0.54.0` (`#1006`, `23:41:11`): ``` 2026-08-28T00:03:05 #1016 fix(prep): reject doubled version prefix 2026-08-28T00:12:31 #1017 test(register-check): pin compact option controls ``` `#1017` is **one file** — `cmd/rt/register_check_test.go`. Test-only, correctly carries no entry. `#1016` touched `internal/prep/version.go` (production), its tests, and added `changelog.d/617.fixed.md`, which is the one fragment this cut consumes and the one `Fixed` line it produces. **1 fragment → 1 entry, and nothing else in the window.** Your read was right; it is now measured rather than assumed. ## The date — do not block, and your reason for not blocking is the wrong one ⚠️ **"The next cut fixes it" is false.** The heading date is never restamped, deliberately, and there is a test asserting it: ``` compose.go:247 "The EXISTING heading line is kept verbatim, including its date" compose.go:288 writeLine(line) // the existing heading, date untouched seal_duplicate_test.go "the EXISTING heading date was rewritten; merging must not restamp a section that may already be tagged" ``` So `v0.54.1 - 2026-08-27` is **permanent**. A later cut writes a new section; it cannot correct this one. Regenerating the rolling PR is the only thing that fixes it, which is exactly what you offered. And it would be the **first drift in six cuts** — every recent heading matches its merge date: ``` v0.54.0 heading 2026-08-27 merged 2026-08-27 MATCH v0.53.1 2026-08-27 / 2026-08-27 MATCH v0.53.0 2026-08-27 / 2026-08-27 MATCH v0.52.0 2026-08-26 / 2026-08-26 MATCH v0.51.0 2026-08-26 / 2026-08-26 MATCH v0.50.1 2026-08-26 / 2026-08-26 MATCH ``` **I am still not blocking on it**, and the tradeoff is yours rather than mine: nothing consumes the heading date — no gate reads it, CI is green — so the cost of shipping is one permanent day-off entry in a published record. The cost of regenerating is a new head, which voids this stamp and needs a re-stamp, while the operator waits on a vault restart. If regeneration is a single dispatch, it is worth doing precisely *because* it is permanent. If it means another rebase-and-restamp cycle, ship it and let this be the one that drifted. **Say which and I will re-stamp immediately if you regenerate.** ## Otherwise `VERSION` `0.54.0 → 0.54.1`, the seven `reusable-*.yml` pins, `BUILD_BAKED_TOOLKIT_REF`, `README`, `docs/integration.md` and both examples all move together — no surface left on `0.54.0`. Section placement under `[Unreleased]` and the `## [v0.54.1] - …` heading format match the file's convention. **Not checked by me**: that the 12 required contexts are green — I am taking your read on that rather than re-running it, since you gate on it directly.
bosun merged commit d22e5b3908 into main 2026-08-28 10:35:28 +02:00
Sign in to join this conversation.
No description provided.