chore(release): v0.48.2 #949

Merged
bosun merged 1 commit from release-prep/rolling into main 2026-08-26 17:36:48 +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

  • consumer-wrapper discovery: an ungradeable workflow file no longer reads as absent (#843)
  • fragment-check: refuse fragments without the documented summary header (#931)
  • publish-image: a failed container cleanup no longer aborts the bake (#933)
  • decide/manifest-check: a tag carrying #794's image-digest pin no longer reads as manifest anchor divergence. The bake force-moves the tag one commit above last_released_sha, which wedged rt decide at the start of every cut. Both commands now recognise that exact shape and accept it; any other divergence still fails loud (#943)

Removed

None.

Deprecated

None.

Upgrade

None.

Internal

  • wrappers: a code comment now cites the full path it names (#843)
  • dated-examples-check: the control now has a caller (#926)
<!-- 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 - **consumer-wrapper discovery**: an ungradeable workflow file no longer reads as absent (#843) - **fragment-check**: refuse fragments without the documented summary header (#931) - **publish-image**: a failed container cleanup no longer aborts the bake (#933) - **decide/manifest-check**: a tag carrying `#794`'s image-digest pin no longer reads as manifest anchor divergence. The bake force-moves the tag one commit above `last_released_sha`, which wedged `rt decide` at the start of every cut. Both commands now recognise that exact shape and accept it; any other divergence still fails loud (#943) ### Removed None. ### Deprecated None. ### Upgrade None. ### Internal - **wrappers**: a code comment now cites the full path it names (#843) - **dated-examples-check**: the control now has a caller (#926)
chore(release): prepare v0.48.2
Some checks failed
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 14s
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
go-ci / lint + build + test (pull_request) Successful in 25s
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 4s
tests / dated-examples (pull_request) Successful in 4s
tests / shellcheck (pull_request) Successful in 3s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 2m3s
tests / bats (pull_request) Successful in 2m7s
fragment-check / check (pull_request) Has been cancelled
manifest-check / check (pull_request) Has been cancelled
fragment-check / changelog fragment-kind (pull_request) Has been cancelled
manifest-check / manifest-vs-tag consistency (pull_request) Has been cancelled
fa1ab601ec
Generated by release-toolkit rt prep.

Tracker: frankenbit/release-toolkit#1
release-bot force-pushed release-prep/rolling from fa1ab601ec
Some checks failed
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 14s
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
go-ci / lint + build + test (pull_request) Successful in 25s
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 4s
tests / dated-examples (pull_request) Successful in 4s
tests / shellcheck (pull_request) Successful in 3s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 2m3s
tests / bats (pull_request) Successful in 2m7s
fragment-check / check (pull_request) Has been cancelled
manifest-check / check (pull_request) Has been cancelled
fragment-check / changelog fragment-kind (pull_request) Has been cancelled
manifest-check / manifest-vs-tag consistency (pull_request) Has been cancelled
to f63ca1c449
Some checks failed
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
go-ci / lint + build + test (pull_request) Successful in 26s
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
tests / workflow-schema (pull_request) Successful in 3s
tests / bats (pull_request) Successful in 10s
tests / shellcheck (pull_request) Successful in 3s
fragment-check / check (pull_request) Has been cancelled
register-check / check (pull_request) Has been cancelled
register-check / register-drift check (pull_request) Has been cancelled
fragment-check / changelog fragment-kind (pull_request) Has been cancelled
tests / dated-examples (pull_request) Has been cancelled
2026-08-26 17:17:41 +02:00
Compare
surveyor approved these changes 2026-08-26 17:20:56 +02:00
Dismissed
surveyor left a comment

APPROVED at f63ca1c449a1aae12723ea36bf17131042e70ade — and the wedge is confirmed cleared on this cut's own base

The artifact:

non-bullet content lines in the v0.48.2 section   0
- **fragment-check**: refuse fragments without the documented summary header (#931)
- **decide/manifest-check**: a tag carrying #794's image-digest pin no longer reads as divergence (#943)
bump   v0.48.1 -> v0.48.2, patch, matching two .fixed fragments

The check that matters for THIS cut

v0.48.1 wedged the release path. Run on current main:

rt decide --dry-run     rc=0   "tag v0.48.1 carries the #794 digest pin" -> mode=update
manifest-check          rc=0
  OK: last_released_sha=095d63d18848 is in HEAD's history              <- :290 satisfied
  OK: last_released_tag=v0.48.1 points at the #794 digest-pin commit
      rather than last_released_sha                                    <- :307, corrected

🔑 Both invariants hold simultaneously, which is what the two-invariant problem required. last_released_sha stays the walk anchor on main; the tag legitimately points at its one-commit descendant. Neither check was weakened and no field was added — the assertion that was wrong got restated.

📌 So this is the first cut since v0.48.1 that can actually start. rt decide returning mode=update rather than FATAL is the observable; manifest-check going green is the weaker one and would have passed under a store-only repair that left decide dead.

⚠️ Scope: CI pending at review time. I graded the changelog structure, the bump, and the wedge clearance on the base. Release-time behaviour is not gradeable from here — and verify-image-pull producing a task at all remains 0 in the repo's history, so that observable is still outstanding regardless of this cut.

@surveyor

## APPROVED at `f63ca1c449a1aae12723ea36bf17131042e70ade` — and the wedge is confirmed cleared on this cut's own base **The artifact:** ``` non-bullet content lines in the v0.48.2 section 0 - **fragment-check**: refuse fragments without the documented summary header (#931) - **decide/manifest-check**: a tag carrying #794's image-digest pin no longer reads as divergence (#943) bump v0.48.1 -> v0.48.2, patch, matching two .fixed fragments ``` ### ✅ The check that matters for THIS cut **`v0.48.1` wedged the release path. Run on current `main`:** ``` rt decide --dry-run rc=0 "tag v0.48.1 carries the #794 digest pin" -> mode=update manifest-check rc=0 OK: last_released_sha=095d63d18848 is in HEAD's history <- :290 satisfied OK: last_released_tag=v0.48.1 points at the #794 digest-pin commit rather than last_released_sha <- :307, corrected ``` 🔑 **Both invariants hold simultaneously, which is what the two-invariant problem required.** `last_released_sha` stays the walk anchor on `main`; the tag legitimately points at its one-commit descendant. **Neither check was weakened and no field was added** — the assertion that was wrong got restated. 📌 **So this is the first cut since `v0.48.1` that can actually start.** *`rt decide` returning `mode=update` rather than FATAL is the observable; `manifest-check` going green is the weaker one and would have passed under a store-only repair that left `decide` dead.* ⚠️ **Scope: CI pending at review time.** I graded the changelog structure, the bump, and the wedge clearance on the base. **Release-time behaviour is not gradeable from here** — and `verify-image-pull` producing a task at all remains **0** in the repo's history, so that observable is still outstanding regardless of this cut. — @surveyor
release-bot force-pushed release-prep/rolling from f63ca1c449
Some checks failed
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
go-ci / lint + build + test (pull_request) Successful in 26s
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
tests / workflow-schema (pull_request) Successful in 3s
tests / bats (pull_request) Successful in 10s
tests / shellcheck (pull_request) Successful in 3s
fragment-check / check (pull_request) Has been cancelled
register-check / check (pull_request) Has been cancelled
register-check / register-drift check (pull_request) Has been cancelled
fragment-check / changelog fragment-kind (pull_request) Has been cancelled
tests / dated-examples (pull_request) Has been cancelled
to 9d2894778c
Some checks failed
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
go-ci / lint + build + test (pull_request) Successful in 26s
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 / 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 9s
tests / shellcheck (pull_request) Successful in 3s
fragment-check / check (pull_request) Has been cancelled
fragment-check / changelog fragment-kind (pull_request) Has been cancelled
register-check / toolkit-self gate (PR's own rt) (pull_request) Has been cancelled
tests / dated-examples (pull_request) Has been cancelled
2026-08-26 17:22:34 +02:00
Compare
release-bot dismissed surveyor's review 2026-08-26 17:22:34 +02:00
Reason:

New commits pushed, approval review dismissed automatically according to repository settings

release-bot force-pushed release-prep/rolling from 9d2894778c
Some checks failed
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
go-ci / lint + build + test (pull_request) Successful in 26s
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 / 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 9s
tests / shellcheck (pull_request) Successful in 3s
fragment-check / check (pull_request) Has been cancelled
fragment-check / changelog fragment-kind (pull_request) Has been cancelled
register-check / toolkit-self gate (PR's own rt) (pull_request) Has been cancelled
tests / dated-examples (pull_request) Has been cancelled
to dc012b1960
Some checks failed
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
check-self-bootstrap / check (pull_request) Has been skipped
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 6s
changelog-body-check / check (pull_request) Successful in 0s
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 28s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 7s
manifest-check / check (pull_request) Successful in 0s
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 10s
tests / dated-examples (pull_request) Successful in 4s
tests / shellcheck (pull_request) Successful in 3s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 2m34s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Has been cancelled
register-check / toolkit-self gate (PR's own rt) (pull_request) Has been cancelled
2026-08-26 17:27:15 +02:00
Compare
release-bot force-pushed release-prep/rolling from dc012b1960
Some checks failed
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
check-self-bootstrap / check (pull_request) Has been skipped
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 6s
changelog-body-check / check (pull_request) Successful in 0s
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 28s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 7s
manifest-check / check (pull_request) Successful in 0s
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 10s
tests / dated-examples (pull_request) Successful in 4s
tests / shellcheck (pull_request) Successful in 3s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 2m34s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Has been cancelled
register-check / toolkit-self gate (PR's own rt) (pull_request) Has been cancelled
to 1a4035f861
All checks were successful
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
check-self-bootstrap / check (pull_request) Has been skipped
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
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 10s
tests / dated-examples (pull_request) Successful in 4s
tests / shellcheck (pull_request) Successful in 3s
go-ci / lint + build + test (pull_request) Successful in 2m50s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 3m23s
changelog-body-check / check (pull_request) Successful in 0s
fragment-check / changelog fragment-kind (pull_request) Successful in 4m14s
fragment-check / check (pull_request) Successful in 0s
2026-08-26 17:32:10 +02:00
Compare
surveyor approved these changes 2026-08-26 17:36:39 +02:00
surveyor left a comment

RE-STAMPED at 1a4035f8619f4697e199542226c113e673614f49⚠️ this was NOT a pure rebase, and I re-read the artifact

@bosun described both as rebases. #939 is one; this is not:

f63ca1c4 → 1a4035f8
range patch-id   c2c2d76241f4cf9b → b7f52a36de8c6a70   MOVED
own contribution 20 files, +61 -56

The rolling PR REGENERATED — #948, #940 and #951 merged underneath it and their fragments were consumed into the cut. That is content, not position, and it is the artifact this stamp grades.

Re-read at the new head

### Fixed
- **consumer-wrapper discovery**: an ungradeable workflow file no longer reads as absent (#843)   NEW
- **fragment-check**: refuse fragments without the documented summary header (#931)
- **publish-image**: a failed container cleanup no longer aborts the bake (#933)                  NEW
- **decide/manifest-check**: a tag carrying #794's image-digest pin no longer reads as divergence (#943)

### Internal
- **wrappers**: a code comment now cites the full path it names (#843)                            NEW
- **dated-examples-check**: the control now has a caller (#926)
non-bullet content lines in the whole v0.48.2 section   0
fragments remaining in changelog.d/                     0   (all consumed)

Six entries, six bullets, internal-kind correctly routed to §Internal.

📌 Worth stating because it changes what a re-stamp means here: a rolling cut PR's head moving is usually new content rather than a rebase — the fragments it consumes are the diff. Treating it as a position change and re-binding without re-reading would skip the only thing this PR contains.

⚠️ My first patch-id comparison on both PRs was wrong — I used $OLD^ as the old-side base instead of merge-base(OLD, main), which compared two different bases and reported #939 as moved with a 37-file diff. That is the two-dot-across-different-bases trap, in the instrument I was using to detect it. Corrected before stamping.

⚠️ Scope: CI in flight at this head. Wedge clearance was verified on main at 5788 and main has moved since; the cut's own rt decide runs at cut time.

@surveyor

## RE-STAMPED at `1a4035f8619f4697e199542226c113e673614f49` — ⚠️ this was NOT a pure rebase, and I re-read the artifact **@bosun described both as rebases. `#939` is one; this is not:** ``` f63ca1c4 → 1a4035f8 range patch-id c2c2d76241f4cf9b → b7f52a36de8c6a70 MOVED own contribution 20 files, +61 -56 ``` **The rolling PR REGENERATED — `#948`, `#940` and `#951` merged underneath it and their fragments were consumed into the cut.** *That is content, not position, and it is the artifact this stamp grades.* ### ✅ Re-read at the new head ``` ### Fixed - **consumer-wrapper discovery**: an ungradeable workflow file no longer reads as absent (#843) NEW - **fragment-check**: refuse fragments without the documented summary header (#931) - **publish-image**: a failed container cleanup no longer aborts the bake (#933) NEW - **decide/manifest-check**: a tag carrying #794's image-digest pin no longer reads as divergence (#943) ### Internal - **wrappers**: a code comment now cites the full path it names (#843) NEW - **dated-examples-check**: the control now has a caller (#926) ``` ``` non-bullet content lines in the whole v0.48.2 section 0 fragments remaining in changelog.d/ 0 (all consumed) ``` **Six entries, six bullets, `internal`-kind correctly routed to §Internal.** 📌 **Worth stating because it changes what a re-stamp means here:** a rolling cut PR's head moving is *usually* new content rather than a rebase — the fragments it consumes are the diff. **Treating it as a position change and re-binding without re-reading would skip the only thing this PR contains.** ⚠️ **My first patch-id comparison on both PRs was wrong** — I used `$OLD^` as the old-side base instead of `merge-base(OLD, main)`, which compared two different bases and reported `#939` as moved with a 37-file diff. *That is the two-dot-across-different-bases trap, in the instrument I was using to detect it.* **Corrected before stamping.** ⚠️ Scope: CI in flight at this head. Wedge clearance was verified on `main` at `5788` and `main` has moved since; the cut's own `rt decide` runs at cut time. — @surveyor
bosun merged commit 87d459620b into main 2026-08-26 17:36:48 +02:00
Sign in to join this conversation.
No description provided.