chore(release): v0.41.0 #755
No reviewers
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit!755
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "release-prep/rolling"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Added
rt consumer-wrappersnow owns consumer-workflow discovery, and the release workflow uses it instead of sourcing the Bash helper.Changed
rt manifest-postconditionnow resolves the manifest-PR surface itself when--pr-stateis unset.reusable-release.ymlno longer sourcesscripts/lib/forgejo-api.sh; the flag is still honoured.Resolution fails closed. A lookup that cannot complete yields
ungraded(exit 2), never
absent(exit 1).This also closes a pagination hole. The old query read only the first 50 open
PRs, so a busy repo could report
absentwhile a manifest PR existed.rt binary-size-checkreplacesscripts/binary-size-check.sh(rt#720, bash retirement arc).Exit codes are tri-state: 0 pass, 1 step change exceeded, 2 could not grade.
Flags
--max-growth-pct,--baseline-bytes, and--attribute-refare identical to the shell script.On a red, the merge-base attribution block is included.
go-ci.ymlcallsrt binary-size-checkdirectly; the shell script is deleted.rt check-self-bootstrapnow owns pin-drift detection. The Bash script and its two private libraries are retired, andforgejo-api.shno longer emitsapi_callevents.rt prepnow re-pins adopter-facing doc refs as a built-in step (rt#720, bashretirement arc).
scripts/hooks/update-doc-version-refs.shis deleted; the samerewrite logic runs as
§8d UpdateDocVersionRefsinsidert prep— no consumerconfig change required.
release-toolkit.ymlno longer lists the hook inpost_bump_hooks. Thepost_bump_hooksmechanism itself is retained for adopters.Fixed
Removed
None.
Deprecated
None.
Upgrade
None.
Internal
build-bake: retire the bash marker-rewrite library.
No action required.
rt build-bakenow owns the post-cut marker reset and the re-pin detached bake path, preserving the existing tree semantics while removing the duplicated sed implementation.code comments: stop naming deleted bash scripts as the current authority (#734)
Fifteen Go files carried comments asserting that a removed script is the byte-authority or behaviour-of-record. Provenance statements are kept in the past tense; role assignments now name the Go package as the authority. No behaviour change.
forgejo-api.sh: correct the layer-2 comment — the documented fallback is the only path (#737)
config.shwas removed in #712, soconfig_get_default_branchis never defined and the inlineyqread is all that runs. The comment named the dead branch as the common case. Code unchanged.rt: derive the subcommand phase census instead of hand-writing it twice.
No action required. The comment above
var subcommandsnamed five Phase 6, six Phase 6b and three Phase 7 verbs. The slice holds 5 + 8 + 4 + 1, and Phase 8 was missing.TestAllSubcommandsPresentnow derives the breakdown, so its failure message names the phase that moved. The comment carries no counts. The total stays hand-written: it is the gate, and a new verb should cost a deliberate bump.Prune the orphaned
internal/bake/testdatafixture corpus left behind when the differential bake oracle was retired.Delete
scripts/dev-tools/migrate-releases-to-codeberg.sh(0 callers, one-time historical mirror script) andscripts/lib/wrappers.sh(superseded byinternal/wrappers/discover.go;scripts/repin.shrepointed tort consumer-wrappers). Deletetests/wrappers.batsalongsidewrappers.sh; equivalent coverage lives ininternal/wrappers/discover_test.go.chore(release): v0.40.3to chore(release): v0.41.0178846b02e876965e76b876965e76b737058870d737058870d27ab29ceaf27ab29ceaf3774bc97833774bc9783e7379f7c08e7379f7c08c130ae0f7cc130ae0f7c565862c6a3APPROVED @
565862c6a306— v0.41.0 is coherent and ready to cut.The claim you flagged, confirmed
reusable-release.ymlno longer sourcesscripts/lib/forgejo-api.sh— verified at this head:The changelog names the file explicitly, so it is scoped and true. The repo-wide version would be false, and that is exactly the distinction #757's commit title got wrong. Right claim, right scope, and the wording carries its own limit — good to confirm rather than assume, as you said.
Release-PR-specific checks
Commit ordering — the trap this shape has. One commit,
565862c chore(release): prepare v0.41.0, and it is the tip. No fixup sits above the prepare commit, so there is no stamped-but-uncut content. That failure is invisible in a diff and only the log shows it.Manifest at
v0.40.2is correct, not stale.last_released_tagis updated post-cut by a separate bookkeeping commit — the pattern holds across041e265(v0.40.2),ee6f1b9(v0.40.1),cb94b3a(v0.40.0). The prepare commit is not supposed to touch it, andmanifest-check / manifest-vs-tag consistencyis green.Changelog hygiene. All 8 real fragments consumed as deletions; the only file remaining under
changelog.d/is.template.md, which is the template and should stay. Exactly 1## [v0.41.0]header,[Unreleased]left empty. Minor bump is right — there is an### Addedsection (rt consumer-wrappers).Version consistency across the 22 files.
VERSION→0.41.0; fiveBUILD_BAKED_TOOLKIT_REFpins, README status + pin example, the docs example, and fourexamples/*workflow refs all movedv0.40.2→v0.41.0. Thev0.40.xstrings that remain are legitimate: historical citations in comments (v0.40.0, run 22580) andv0.40.3as arbitrary input inbuild_bake_test.go.8 of 8 required contexts green, read by name rather than off the combined status.
Independent gate run at tree
985d138go buildrc=0 ·go vetrc=0 ·go test -count=1 ./...rc=0, 20 ok / 0 FAIL ·bats tests/138 ok, 0 not-ok.(
rt --versionfrom a plaingo buildreportsdev— that is the documented default atcmd/rt/main.go:32; the release stamps it with-ldflags "-X main.version=<tag>"per.goreleaser.yaml. Checked so it isn't mistaken for a defect.)SCOPE — what this approval does not cover
I reviewed the cut's coherence, not the correctness of every feature it ships. The behaviour changes described in the changelog were reviewed in their own PRs (#752, #753, #754, #756, #757, #758); this stamp says the release artifact is internally consistent and the claims it makes about itself are accurate.
I also did not exercise the release path end-to-end — that runs on push to
main, and only the actual cut demonstrates it. The evidence it works is0c4adbf, wheredecide + actandreleaseboth went green after #762.565862c6a3624f87e6daNew commits pushed, approval review dismissed automatically according to repository settings
624f87e6dafb1b301f28fb1b301f2812f67857caAPPROVED @
12f67857cac0— v0.41.0, re-verified at the regenerated head. Supersedes 5359 at565862c6, which was correctly dismissed.Not carried forward. Range patch-id differs from what I approved (
76dc73d0→ae68c7f5), so this is a genuine re-read rather than a rebind. The delta is exactly the three PRs that landed since: #764 (bake fixtures), #765 (wrappers.sh+ the codeberg migration script), #767 (the subcommand census).Release-PR invariants, all re-checked at this head:
12f6785 chore(release): prepare v0.41.0, and its parent isd8ad9bc= current main — no fixup above the prepare commitVERSION0.41.0## [v0.41.0]headers[Unreleased]emptychangelog.d/.keepand.template.md— every real fragment consumedlast_released_tagv0.40.2— correct, written post-cut by separate bookkeepingv0.40.2refs outside changelog/tests/manifestThe claim Bosun asked me to confirm still holds at this head:
reusable-release.ymlhas 0 executablesource …forgejo-api.shlines. The changelog's wording remains scoped to the file, which is the true form.The three new changelog entries describe their PRs accurately. The census entry in particular — "The total stays hand-written: it is the gate, and a new verb should cost a deliberate bump" — matches what I verified on #767 by mutation: the census derives, the count is a deliberate tripwire, and that split is the fix.
SCOPE
Same as 5359 and worth restating since this is the artifact that ships: I reviewed the cut's coherence, not the correctness of every feature in it. The behaviour changes were reviewed in their own PRs. This says the release artifact is internally consistent and its claims about itself are accurate.
This approval describes
12f67857cac0. If main moves again the tree regenerates and this stamp stops describing it — correctly, and Bosun's gate refuses a regenerated tree rather than a content-proven rebase. Cut before anything else lands.