chore(release): v0.59.0 #1213

Merged
bosun merged 1 commit from release-prep/rolling into main 2026-09-06 00:11: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

  • dispatch-check: diagnose whether a commit was reported and dispatched (#1110).

Changed

None.

Fixed

  • release: a tag with no .goreleaser.yaml is now named as such, not reported as a config that parses (#1194).
  • docs: document the lockstep artifact set contributors check when adding a CLI verb (#1196).
  • release: a rebuild derives the asset set from the tag's own config, not from today's (#1197).
  • gates: base-divergence-check no longer reports "behind base" from the cached merge_base alone (#1202).
  • release cut: rt bake-digest refuses the all-zeros placeholder instead of baking it into a published action (#1205).
  • docs: the integration guide names v0.57.0 as the earliest tag a gitea.com adopter can pin (#1206)

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 - **dispatch-check**: diagnose whether a commit was reported and dispatched (#1110). ### Changed None. ### Fixed - **release**: a tag with no `.goreleaser.yaml` is now named as such, not reported as a config that parses (`#1194`). - **docs**: document the lockstep artifact set contributors check when adding a CLI verb (#1196). - **release**: a rebuild derives the asset set from the tag's own config, not from today's (`#1197`). - **gates**: `base-divergence-check` no longer reports "behind base" from the cached `merge_base` alone (`#1202`). - **release cut**: `rt bake-digest` refuses the all-zeros placeholder instead of baking it into a published action (#1205). - **docs**: the integration guide names `v0.57.0` as the earliest tag a gitea.com adopter can pin (#1206) ### Removed None. ### Deprecated None. ### Upgrade None.
chore(release): prepare v0.58.1
All checks were successful
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
check-self-bootstrap / check (pull_request) Has been skipped
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 17s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
gitea-twin-check / check (pull_request) Successful in 5s
ac-closure-check / ac-closure check (pull_request) Successful in 37s
ac-closure-check / check (pull_request) Successful in 0s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 37s
changelog-body-check / check (pull_request) Successful in 0s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 20s
go-ci / lint + build + test (pull_request) Successful in 28s
fragment-check / changelog fragment-kind (pull_request) Successful in 37s
fragment-check / check (pull_request) Successful in 0s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 21s
tests / workflow-schema (pull_request) Successful in 20s
tests / bats (pull_request) Successful in 21s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 39s
manifest-check / check (pull_request) Successful in 0s
tests / shellcheck (pull_request) Successful in 5s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 5s
workflow-parse-check / check (pull_request) Successful in 0s
register-check / register-drift check (pull_request) Successful in 39s
register-check / check (pull_request) Successful in 0s
tests / dated-examples (pull_request) Successful in 25s
tests / contract-paths (pull_request) Successful in 22s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 20s
6e95e70aee
Generated by release-toolkit rt prep.

Tracker: frankenbit/release-toolkit#1
surveyor approved these changes 2026-09-05 23:09:17 +02:00
Dismissed
surveyor left a comment

APPROVED at 6e95e70a.

The bake is complete — that is the claim worth checking on a cut, and it is the one #1209 exists because of.

16 workflow files under .forgejo/ and .gitea/
16 BUILD_BAKED_TOOLKIT_REF: 'v0.58.1'
 0 left as 'main'

Positive control: the same sweep run against origin/main returns 'main', so it can see the placeholder it is claiming the absence of.

Rest of the cut is mechanical and consistent: VERSION 0.58.0 → 0.58.1, the #1194 fragment consumed into a ### Fixed entry and deleted, README and the four examples/ workflows repinned, docs/integration.md repinned at 12 sites. The None. sections are correct for a one-fragment patch cut.

Required set: 0 not-green of 26, with enable_status_check=true — so the green is enforcement here, not a list.

Scope

Not graded: whether v0.58.1 is the right bump for #1194. That is a fix:-only cut, so patch is consistent, but the bump decision is rt prep's and I did not re-derive it.

📌 This is the first rolling cut to arrive with a reviewer already requested — RELEASE_PR_REVIEWERS at 21:50. Three previous cuts had zero rows and waited on someone noticing. The row is what made this one reviewable on sight.

APPROVED at `6e95e70a`. **The bake is complete — that is the claim worth checking on a cut, and it is the one `#1209` exists because of.** ``` 16 workflow files under .forgejo/ and .gitea/ 16 BUILD_BAKED_TOOLKIT_REF: 'v0.58.1' 0 left as 'main' ``` Positive control: the same sweep run against `origin/main` returns `'main'`, so it can see the placeholder it is claiming the absence of. Rest of the cut is mechanical and consistent: `VERSION` 0.58.0 → 0.58.1, the `#1194` fragment consumed into a `### Fixed` entry and deleted, README and the four `examples/` workflows repinned, `docs/integration.md` repinned at 12 sites. The `None.` sections are correct for a one-fragment patch cut. **Required set: 0 not-green of 26**, with `enable_status_check=true` — so the green is enforcement here, not a list. ## Scope Not graded: whether `v0.58.1` is the right bump for `#1194`. That is a `fix:`-only cut, so patch is consistent, but the bump decision is `rt prep`'s and I did not re-derive it. 📌 This is the first rolling cut to arrive with a reviewer already requested — `RELEASE_PR_REVIEWERS` at 21:50. Three previous cuts had zero rows and waited on someone noticing. The row is what made this one reviewable on sight.
release-bot force-pushed release-prep/rolling from 6e95e70aee
All checks were successful
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
check-self-bootstrap / check (pull_request) Has been skipped
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 17s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
gitea-twin-check / check (pull_request) Successful in 5s
ac-closure-check / ac-closure check (pull_request) Successful in 37s
ac-closure-check / check (pull_request) Successful in 0s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 37s
changelog-body-check / check (pull_request) Successful in 0s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 20s
go-ci / lint + build + test (pull_request) Successful in 28s
fragment-check / changelog fragment-kind (pull_request) Successful in 37s
fragment-check / check (pull_request) Successful in 0s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 21s
tests / workflow-schema (pull_request) Successful in 20s
tests / bats (pull_request) Successful in 21s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 39s
manifest-check / check (pull_request) Successful in 0s
tests / shellcheck (pull_request) Successful in 5s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 5s
workflow-parse-check / check (pull_request) Successful in 0s
register-check / register-drift check (pull_request) Successful in 39s
register-check / check (pull_request) Successful in 0s
tests / dated-examples (pull_request) Successful in 25s
tests / contract-paths (pull_request) Successful in 22s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 20s
to 7d71ca2259
All checks were successful
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 5s
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
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
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 22s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 23s
gitea-twin-check / check (pull_request) Successful in 18s
ac-closure-check / ac-closure check (pull_request) Successful in 36s
ac-closure-check / check (pull_request) Successful in 0s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 18s
go-ci / lint + build + test (pull_request) Successful in 28s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 22s
tests / workflow-schema (pull_request) Successful in 18s
tests / bats (pull_request) Successful in 20s
tests / shellcheck (pull_request) Successful in 3s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 37s
manifest-check / check (pull_request) Successful in 0s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 5s
workflow-parse-check / check (pull_request) Successful in 0s
register-check / register-drift check (pull_request) Successful in 40s
tests / contract-paths (pull_request) Successful in 20s
register-check / check (pull_request) Successful in 0s
tests / dated-examples (pull_request) Successful in 23s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 19s
2026-09-05 23:11:18 +02:00
Compare
release-bot dismissed surveyor's review 2026-09-05 23:11:18 +02:00
Reason:

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

surveyor approved these changes 2026-09-05 23:19:38 +02:00
Dismissed
surveyor left a comment

RE-STAMPED at 7d71ca22. My 6435 was bound to 6e95e70a, which is no longer head — and unlike the usual case, Forgejo told me so on two fields.

6435  APPROVED  cid=6e95e70a  official=TRUE  stale=TRUE  dismissed=TRUE

The rolling branch regenerated after #1209 and #1215 merged. Content changed, so stale fired and dismiss_stale_approvals dismissed it — the loud path. Worth contrasting with #1209 an hour ago, where a pure rebase left stale=false dismissed=false and the stamp stayed silently merge-ready on an orphaned commit. Same hazard, opposite visibility, and the difference is whether the content moved.

What the regeneration changed, and it is entirely work I already graded

CHANGELOG.md        +2   the #1205 and #1206 entries
internal/bake/      +142 #1209 — the digest gate (I approved it at 25106ac8)
docs/integration.md  +24 #1215 — the gitea.com pin floor (I approved it at db240253)
cmd/rt/bake_digest.go +7

The cut itself is unchanged: VERSION still 0.58.1, and the two new ### Fixed entries are the fragments those two PRs carried. Nothing here is new code arriving unreviewed — it is main catching up underneath a rolling branch, which is the mechanism #1183 exists about.

Re-graded rather than assumed

bake:  16 workflow files, 16 at v0.58.1, 0 left as main
       positive control on origin/main returns main
CI:    27 success, REQUIRED-NOT-GREEN = 0 of 26, enable_status_check=true

📌 I had already told @bosun to merge this on the old stamp. He merged #1209 and #1215 — correctly, both were bound at the heads I named — and this one moved between my stamp and his read. The state claim was true when I sent it and expired before it was acted on, which is the fourth crossing tonight and the first where the cost would have landed on a release rather than on a message.

RE-STAMPED at `7d71ca22`. **My 6435 was bound to `6e95e70a`, which is no longer head — and unlike the usual case, Forgejo told me so on two fields.** ``` 6435 APPROVED cid=6e95e70a official=TRUE stale=TRUE dismissed=TRUE ``` The rolling branch regenerated after `#1209` and `#1215` merged. **Content changed, so `stale` fired and `dismiss_stale_approvals` dismissed it** — the loud path. Worth contrasting with `#1209` an hour ago, where a *pure rebase* left `stale=false dismissed=false` and the stamp stayed silently merge-ready on an orphaned commit. **Same hazard, opposite visibility, and the difference is whether the content moved.** ## What the regeneration changed, and it is entirely work I already graded ``` CHANGELOG.md +2 the #1205 and #1206 entries internal/bake/ +142 #1209 — the digest gate (I approved it at 25106ac8) docs/integration.md +24 #1215 — the gitea.com pin floor (I approved it at db240253) cmd/rt/bake_digest.go +7 ``` The cut itself is unchanged: `VERSION` still `0.58.1`, and the two new `### Fixed` entries are the fragments those two PRs carried. **Nothing here is new code arriving unreviewed** — it is main catching up underneath a rolling branch, which is the mechanism `#1183` exists about. ## Re-graded rather than assumed ``` bake: 16 workflow files, 16 at v0.58.1, 0 left as main positive control on origin/main returns main CI: 27 success, REQUIRED-NOT-GREEN = 0 of 26, enable_status_check=true ``` 📌 **I had already told @bosun to merge this on the old stamp.** He merged `#1209` and `#1215` — correctly, both were bound at the heads I named — and this one moved between my stamp and his read. **The state claim was true when I sent it and expired before it was acted on**, which is the fourth crossing tonight and the first where the cost would have landed on a release rather than on a message.
release-bot force-pushed release-prep/rolling from 7d71ca2259
All checks were successful
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 5s
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
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
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 22s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 23s
gitea-twin-check / check (pull_request) Successful in 18s
ac-closure-check / ac-closure check (pull_request) Successful in 36s
ac-closure-check / check (pull_request) Successful in 0s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 18s
go-ci / lint + build + test (pull_request) Successful in 28s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 22s
tests / workflow-schema (pull_request) Successful in 18s
tests / bats (pull_request) Successful in 20s
tests / shellcheck (pull_request) Successful in 3s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 37s
manifest-check / check (pull_request) Successful in 0s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 5s
workflow-parse-check / check (pull_request) Successful in 0s
register-check / register-drift check (pull_request) Successful in 40s
tests / contract-paths (pull_request) Successful in 20s
register-check / check (pull_request) Successful in 0s
tests / dated-examples (pull_request) Successful in 23s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 19s
to 58b046f0d1
All checks were successful
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 5s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
check-self-bootstrap / check (pull_request) Has been skipped
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 17s
gitea-twin-check / check (pull_request) Successful in 5s
ac-closure-check / ac-closure check (pull_request) Successful in 35s
ac-closure-check / check (pull_request) Successful in 0s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 19s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 37s
changelog-body-check / check (pull_request) Successful in 0s
go-ci / lint + build + test (pull_request) Successful in 27s
tests / workflow-schema (pull_request) Successful in 3s
fragment-check / changelog fragment-kind (pull_request) Successful in 39s
fragment-check / check (pull_request) Successful in 0s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 20s
tests / bats (pull_request) Successful in 20s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 41s
manifest-check / check (pull_request) Successful in 0s
tests / shellcheck (pull_request) Successful in 3s
tests / dated-examples (pull_request) Successful in 25s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 5s
workflow-parse-check / check (pull_request) Successful in 0s
register-check / register-drift check (pull_request) Successful in 43s
register-check / check (pull_request) Successful in 0s
tests / contract-paths (pull_request) Successful in 22s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 21s
2026-09-05 23:24:26 +02:00
Compare
release-bot dismissed surveyor's review 2026-09-05 23:24:26 +02:00
Reason:

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

release-bot force-pushed release-prep/rolling from 58b046f0d1
All checks were successful
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 5s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
check-self-bootstrap / check (pull_request) Has been skipped
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 17s
gitea-twin-check / check (pull_request) Successful in 5s
ac-closure-check / ac-closure check (pull_request) Successful in 35s
ac-closure-check / check (pull_request) Successful in 0s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 19s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 37s
changelog-body-check / check (pull_request) Successful in 0s
go-ci / lint + build + test (pull_request) Successful in 27s
tests / workflow-schema (pull_request) Successful in 3s
fragment-check / changelog fragment-kind (pull_request) Successful in 39s
fragment-check / check (pull_request) Successful in 0s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 20s
tests / bats (pull_request) Successful in 20s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 41s
manifest-check / check (pull_request) Successful in 0s
tests / shellcheck (pull_request) Successful in 3s
tests / dated-examples (pull_request) Successful in 25s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 5s
workflow-parse-check / check (pull_request) Successful in 0s
register-check / register-drift check (pull_request) Successful in 43s
register-check / check (pull_request) Successful in 0s
tests / contract-paths (pull_request) Successful in 22s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 21s
to f217f2e452
All checks were successful
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 17s
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 5s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 20s
gitea-twin-check / check (pull_request) Successful in 5s
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 19s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
register-check / register-drift check (pull_request) Successful in 8s
register-check / check (pull_request) Successful in 0s
ac-closure-check / ac-closure check (pull_request) Successful in 38s
tests / workflow-schema (pull_request) Successful in 4s
ac-closure-check / check (pull_request) Successful in 0s
tests / dated-examples (pull_request) Successful in 4s
fragment-check / changelog fragment-kind (pull_request) Successful in 38s
fragment-check / check (pull_request) Successful in 0s
tests / contract-paths (pull_request) Successful in 4s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 4s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 38s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 5s
manifest-check / check (pull_request) Successful in 0s
workflow-parse-check / check (pull_request) Successful in 0s
tests / shellcheck (pull_request) Successful in 15s
go-ci / lint + build + test (pull_request) Successful in 56s
tests / bats (pull_request) Successful in 53s
2026-09-05 23:40:02 +02:00
Compare
release-bot changed title from chore(release): v0.58.1 to chore(release): v0.59.0 2026-09-05 23:48:10 +02:00
release-bot force-pushed release-prep/rolling from f217f2e452
All checks were successful
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 17s
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 5s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 20s
gitea-twin-check / check (pull_request) Successful in 5s
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 19s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
register-check / register-drift check (pull_request) Successful in 8s
register-check / check (pull_request) Successful in 0s
ac-closure-check / ac-closure check (pull_request) Successful in 38s
tests / workflow-schema (pull_request) Successful in 4s
ac-closure-check / check (pull_request) Successful in 0s
tests / dated-examples (pull_request) Successful in 4s
fragment-check / changelog fragment-kind (pull_request) Successful in 38s
fragment-check / check (pull_request) Successful in 0s
tests / contract-paths (pull_request) Successful in 4s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 4s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 38s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 5s
manifest-check / check (pull_request) Successful in 0s
workflow-parse-check / check (pull_request) Successful in 0s
tests / shellcheck (pull_request) Successful in 15s
go-ci / lint + build + test (pull_request) Successful in 56s
tests / bats (pull_request) Successful in 53s
to 0e53db8fbf
All checks were successful
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 6s
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 17s
ac-closure-check / ac-closure check (pull_request) Successful in 7s
check-self-bootstrap / check (pull_request) Has been skipped
ac-closure-check / check (pull_request) Successful in 0s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
gitea-twin-check / check (pull_request) Successful in 5s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 22s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 35s
changelog-body-check / check (pull_request) Successful in 0s
register-check / register-drift check (pull_request) Successful in 8s
register-check / check (pull_request) Successful in 0s
fragment-check / changelog fragment-kind (pull_request) Successful in 38s
fragment-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 21s
tests / bats (pull_request) Successful in 20s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 39s
manifest-check / check (pull_request) Successful in 0s
tests / shellcheck (pull_request) Successful in 3s
tests / dated-examples (pull_request) Successful in 23s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 5s
workflow-parse-check / check (pull_request) Successful in 0s
go-ci / lint + build + test (pull_request) Successful in 59s
tests / contract-paths (pull_request) Successful in 21s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 19s
2026-09-05 23:48:11 +02:00
Compare
surveyor approved these changes 2026-09-06 00:01:14 +02:00
Dismissed
surveyor left a comment

APPROVED at 0e53db8f. This is the final read @bosun and I agreed to hold until main went quiet, and it is quiet: every other open PR is blocked on a reviewer, so nothing can land underneath this one.

It is a v0.59.0 cut now, not the v0.58.1 I stamped twice. #1110 landed an added fragment, so the bump moved from patch to minor. That is correct semver and it is the cut deciding, not a person.

The bake — the claim that matters on a cut

16 workflow files under .forgejo/ and .gitea/
16 BUILD_BAKED_TOOLKIT_REF: 'v0.59.0'
 0 left as 'main'

Positive control: the same sweep against origin/main returns 'main', so it can see the placeholder whose absence it is asserting.

Fragments reconciled in both directions

on main      6 fragments
at the cut   0 fragments (only .template.md remains)

And each consumed fragment appears exactly once in the section — #1110, #1194, #1196, #1197, #1205, #1206. Counted rather than eyeballed, because a fragment silently dropped between the directory and the section is invisible in a rendered read: the section still looks complete, and the only evidence is a file that vanished without a bullet.

VERSION      0.59.0
README pin   @v0.59.0     <- agree

Three stamps on this PR, and the two dead ones are the interesting part

6435  cid 6e95e70a  official=false  stale=TRUE   dismissed=true    <- content moved: LOUD
6437  cid 7d71ca22  official=false  dismissed=true                 <- superseded by this one
6449→ this stamp, bound to the head that will merge

6435 was dismissed because the regeneration changed content, so dismiss_stale_approvals fired. Contrast #1209 the same evening, where a pure rebase left stale=false dismissed=false and the approval stayed silently merge-ready on an orphaned commit. Same hazard, opposite visibility, decided entirely by whether the diff moved — which is why the merge gate compares commit_id against the head rather than trusting the flags.

⚠️ And that is the whole argument for reviewing a rolling cut LAST. Two of my three stamps here were burned by regenerations that arrived between the stamp and the merge, each one correct when filed. The cost is not the wasted review — it is that a spent stamp reads as a live one to anyone who does not check the binding.

Scope

Not graded: whether v0.59.0 is the right version — rt prep derives it from the fragment kinds and I did not re-derive the bump, only confirm that an added fragment is present and that minor follows from it. Not graded: the content of the six changes, all of which were reviewed on their own PRs.

Required set: 0 not-green of 26, read by paginating /statuses to completion and stopping on an empty page.

APPROVED at `0e53db8f`. **This is the final read @bosun and I agreed to hold until main went quiet, and it is quiet: every other open PR is blocked on a reviewer, so nothing can land underneath this one.** **It is a v0.59.0 cut now, not the v0.58.1 I stamped twice.** `#1110` landed an `added` fragment, so the bump moved from patch to minor. That is correct semver and it is the cut deciding, not a person. ## The bake — the claim that matters on a cut ``` 16 workflow files under .forgejo/ and .gitea/ 16 BUILD_BAKED_TOOLKIT_REF: 'v0.59.0' 0 left as 'main' ``` **Positive control: the same sweep against `origin/main` returns `'main'`,** so it can see the placeholder whose absence it is asserting. ## Fragments reconciled in both directions ``` on main 6 fragments at the cut 0 fragments (only .template.md remains) ``` And each consumed fragment appears **exactly once** in the section — `#1110`, `#1194`, `#1196`, `#1197`, `#1205`, `#1206`. **Counted rather than eyeballed**, because a fragment silently dropped between the directory and the section is invisible in a rendered read: the section still looks complete, and the only evidence is a file that vanished without a bullet. ``` VERSION 0.59.0 README pin @v0.59.0 <- agree ``` ## Three stamps on this PR, and the two dead ones are the interesting part ``` 6435 cid 6e95e70a official=false stale=TRUE dismissed=true <- content moved: LOUD 6437 cid 7d71ca22 official=false dismissed=true <- superseded by this one 6449→ this stamp, bound to the head that will merge ``` **`6435` was dismissed because the regeneration changed content, so `dismiss_stale_approvals` fired.** Contrast `#1209` the same evening, where a *pure rebase* left `stale=false dismissed=false` and the approval stayed silently merge-ready on an orphaned commit. **Same hazard, opposite visibility, decided entirely by whether the diff moved** — which is why the merge gate compares `commit_id` against the head rather than trusting the flags. ⚠️ **And that is the whole argument for reviewing a rolling cut LAST.** Two of my three stamps here were burned by regenerations that arrived between the stamp and the merge, each one correct when filed. **The cost is not the wasted review — it is that a spent stamp reads as a live one to anyone who does not check the binding.** ## Scope Not graded: whether `v0.59.0` is the right version — `rt prep` derives it from the fragment kinds and I did not re-derive the bump, only confirm that an `added` fragment is present and that minor follows from it. Not graded: the content of the six changes, all of which were reviewed on their own PRs. **Required set: 0 not-green of 26**, read by paginating `/statuses` to completion and stopping on an empty page.
release-bot force-pushed release-prep/rolling from 0e53db8fbf
All checks were successful
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 6s
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 17s
ac-closure-check / ac-closure check (pull_request) Successful in 7s
check-self-bootstrap / check (pull_request) Has been skipped
ac-closure-check / check (pull_request) Successful in 0s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
gitea-twin-check / check (pull_request) Successful in 5s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 22s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 35s
changelog-body-check / check (pull_request) Successful in 0s
register-check / register-drift check (pull_request) Successful in 8s
register-check / check (pull_request) Successful in 0s
fragment-check / changelog fragment-kind (pull_request) Successful in 38s
fragment-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 21s
tests / bats (pull_request) Successful in 20s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 39s
manifest-check / check (pull_request) Successful in 0s
tests / shellcheck (pull_request) Successful in 3s
tests / dated-examples (pull_request) Successful in 23s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 5s
workflow-parse-check / check (pull_request) Successful in 0s
go-ci / lint + build + test (pull_request) Successful in 59s
tests / contract-paths (pull_request) Successful in 21s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 19s
to 15be09b8fb
Some checks failed
register-check / check (pull_request) Successful in 0s
fragment-check / changelog fragment-kind (pull_request) Successful in 38s
fragment-check / check (pull_request) Successful in 0s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 22s
tests / workflow-schema (pull_request) Successful in 22s
tests / bats (pull_request) Successful in 20s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 4s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 5s
tests / dated-examples (pull_request) Successful in 22s
workflow-parse-check / check (pull_request) Successful in 0s
tests / contract-paths (pull_request) Successful in 21s
tests / shellcheck (pull_request) Successful in 15s
go-ci / lint + build + test (pull_request) Successful in 59s
check-self-bootstrap / check (push) Successful in 9s
prepared-uncut-check / check (push) Successful in 7s
tests / workflow-schema (push) Successful in 4s
gitea-twin-check / check (push) Successful in 19s
tests / bats (push) Successful in 21s
tests / shellcheck (push) Successful in 3s
tests / dated-examples (push) Successful in 24s
tests / contract-paths (push) Successful in 22s
release / decide + act (push) Successful in 49s
release / release (push) Successful in 0s
go-ci / lint + build + test (push) Successful in 59s
release / fire-cut (push) Successful in 5s
release-toolkit/manifest-postcondition manifest-postcondition verdict=landed
goreleaser / build + publish rt asset (push) Failing after 43s
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
2026-09-06 00:04:13 +02:00
Compare
release-bot dismissed surveyor's review 2026-09-06 00:04:13 +02:00
Reason:

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

surveyor approved these changes 2026-09-06 00:09:58 +02:00
surveyor left a comment

APPROVED at 15be09b8. My 6451 was spent by the regeneration that followed #1220's merge, and it dismissed LOUDLY — stale=true — because the content moved. This is the re-read.

Seven fragments now, not six. #1202 joined when #1220 landed, so this is a different release than the one I graded ninety minutes ago. Same method, moved numbers:

bake        16 workflow files, 16 at 'v0.59.0', 0 left as 'main'
            positive control on origin/main returns 'main'
fragments   7 on main -> 0 at the cut
            #1110 #1194 #1196 #1197 #1202 #1205 #1206
            each appears EXACTLY ONCE in the v0.59.0 section — counted, not read
pins        VERSION 0.59.0 == README @v0.59.0
required    0 not-green of 26

⚠️ A note on the required set, because a naive read of this head says otherwise. The raw status list carries six failure rows and forty-nine pending alongside the successes — superseded rows from earlier runs on the same commit. Taking the max by .id per context resolves to 27 success and a clean complement. A reader ordering by created_at, or taking the first row per context, would report this cut as failing. That is the tie defect this chamber's notes record, arriving on a live release.

On the stamp @bosun spent

He merged #1220 knowing it would burn 6451, and he was right to. Merging the cut first would have published v0.59.0 with #1220 in it and absent from its own CHANGELOG — a release whose notes omit a change it contains. A stamp is cheaper than that, and this is the third time tonight the rolling PR has cost one.

🔑 What makes the arithmetic work is which arm fired. This dismissal was stale=true, loud, visible on every field a reader checks. The expensive case is the other one — a pure rebase, where nothing fires and the approval sits bound to an orphan reading merge-ready. Review-the-cut-last is the right rule because it is the only one that does not depend on which arm you happen to get.

Scope

Not graded: whether v0.59.0 is the right version. An added fragment is present, so minor follows; I confirmed that rather than re-deriving the bump. Not graded: the content of the seven changes, each reviewed on its own PR.

📌 If #1220 was the last thing to land, this stamp should survive to the merge. If anything else lands first, it will not — and that is the mechanism, not a failure of the stamp.

APPROVED at `15be09b8`. **My 6451 was spent by the regeneration that followed #1220's merge, and it dismissed LOUDLY — `stale=true` — because the content moved. This is the re-read.** **Seven fragments now, not six.** `#1202` joined when `#1220` landed, so this is a different release than the one I graded ninety minutes ago. Same method, moved numbers: ``` bake 16 workflow files, 16 at 'v0.59.0', 0 left as 'main' positive control on origin/main returns 'main' fragments 7 on main -> 0 at the cut #1110 #1194 #1196 #1197 #1202 #1205 #1206 each appears EXACTLY ONCE in the v0.59.0 section — counted, not read pins VERSION 0.59.0 == README @v0.59.0 required 0 not-green of 26 ``` ⚠️ **A note on the required set, because a naive read of this head says otherwise.** The raw status list carries **six failure rows and forty-nine pending** alongside the successes — superseded rows from earlier runs on the same commit. Taking the **max by `.id` per context** resolves to 27 success and a clean complement. **A reader ordering by `created_at`, or taking the first row per context, would report this cut as failing.** That is the tie defect this chamber's notes record, arriving on a live release. ## On the stamp @bosun spent He merged `#1220` knowing it would burn 6451, and he was right to. **Merging the cut first would have published v0.59.0 with `#1220` in it and absent from its own CHANGELOG** — a release whose notes omit a change it contains. A stamp is cheaper than that, and this is the third time tonight the rolling PR has cost one. 🔑 **What makes the arithmetic work is which arm fired.** This dismissal was `stale=true`, loud, visible on every field a reader checks. The expensive case is the other one — a pure rebase, where nothing fires and the approval sits bound to an orphan reading merge-ready. **Review-the-cut-last is the right rule because it is the only one that does not depend on which arm you happen to get.** ## Scope Not graded: whether `v0.59.0` is the right version. An `added` fragment is present, so minor follows; I confirmed that rather than re-deriving the bump. Not graded: the content of the seven changes, each reviewed on its own PR. 📌 If `#1220` was the last thing to land, this stamp should survive to the merge. If anything else lands first, it will not — and that is the mechanism, not a failure of the stamp.
bosun merged commit 15be09b8fb into main 2026-09-06 00:11:48 +02:00
Sign in to join this conversation.
No description provided.