chore(release): v0.13.0 #175
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
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit!175
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
The reusables'
actions/checkoutstep now uses a hardcodedref:value anchored by the marker commentrelease-toolkit-build-ref.release-prep.shrewrites this value to the next-cut version during the prep commit, so the cut tag points at a commit whose reusables carry the matching ref.Phase 1 keeps the
toolkit_refworkflow_call input declared (default'main') for backward compat. The cut tag's reusable now has the baked ref; any future cut at that tag is construction-enforced to load the toolkit at the same ref the reusable was tagged at.Toolkit-self only: the bake runs only when the consumer repo contains
.forgejo/workflows/_release.yml(the self-consumer cycle); no-op for external consumers.Phase 2 (follow-up tracker, TBD) will drop the
toolkit_refinput + the consumer-sidetoolkit_ref:line + switchcheck-self-bootstrap.shto read from theuses: @<ref>line as single source of truth.See AGENTS.md section 2 "Build-bake" subsection for the full discipline + the construction-enforcement framing.
Fixed
8b87e096a05bef294feeAPPROVED (§6 pre-merge) — v0.13.0 cut content correct — with a build-bake persistence finding
The cut itself is good: VERSION 0.13.0, title
chore(release): v0.13.0, CHANGELOG Added section matches the #173 walk,changelog.d/148.added.mdconsumed cleanly (correct-kind fragment → folded + deleted, only.keepremains), FF onto post-#176 main (8994f1f). And the bake empirically worked at rolling-regen:BUILD_BAKED_TOOLKIT_REF: 'v0.13.0'on both reusables (sed-rewrote the'main'placeholder). So the cut tag v0.13.0 will correctly carry the baked ref —source=bakedfor future @v0.13.0 consumers. ✅But verify-at-source surfaced a real multi-cycle bug — and it's exactly the build-bake-mechanics class.
🔴 Finding —
BUILD_BAKEDhas no reset; it poisons main + the next re-pinThe rolling PR bakes
BUILD_BAKED='v0.13.0', andrelease-prep.shonly ever bakes (line 463) — there's no reset back to'main'anywhere (release-prep, re-pin, or post-cut). Verified main is currently'main'(un-baked), so merging #175 flips main to'v0.13.0'and leaves it there. Consequences:BUILD_BAKED='v0.13.0') and the re-pin only bumps the@refsurfaces, notBUILD_BAKED. So_release.yml@v0.14.0-rc.1carries'v0.13.0'. The resolve-step uses baked-when-≠'main'→ it picks'v0.13.0', NOT the input-fallback → toolkit-self@v0.14.0-rc.1 checks out v0.13.0 scripts, not its pinned rc. That's the self-bootstrap defeated again — and crucially, the input-fallback we just added in #173 can't save it, because the fallback only fires whenBUILD_BAKED=='main'. The stale baked value bypasses it.'v0.13.0'instead of main.The cut tag should stay baked (
'v0.13.0') — that's correct. The bug is that main should return to'main'after the cut, and it doesn't.Fix (either works; post-cut is cleaner):
BUILD_BAKEDback to'main'. The tag keeps'v0.13.0'; main goes back to'main'. Onebake_toolkit_ref "$f" "main"call in the post-cut path.BUILD_BAKEDto'main'when bumping the re-pin surfaces (folds naturally with #163 alignment-enforcement).Disposition
The v0.13.0 cut content is correct, so this doesn't block this cut — it validates the build-bake + the rc-pin resolve (
source=input-fallback, since v0.13.0-rc.1 is genuinely un-baked). But the reset must land before the v0.14.0-rc.1 re-pin, and main needs a one-time reset to'main'right after this cut (since #175 will poison it). Your call: fix the reset first + re-gen the rolling PR (main never poisoned), or cut now + reset main + add the mechanism before the next re-pin. I'd lean fix-first if quick — it keeps main clean — but cut-now is acceptable given the bounded exposure (toolkit-self doesn't re-pin until v0.14.0).I'll still verify the cut's
source=input-fallbacktrace + the v0.13.0 baked-seed at source when it fires. Good first-cut validation of build-bake — it just revealed the reset gap on the way. 🎯5bef294feeto788d8223fbNew commits pushed, approval review dismissed automatically according to repository settings
788d8223fbto5a2efa7533APPROVED (§6 pre-merge, re-verify) — v0.13.0 cut ready, persistence bug fixed
Clean this time — the reset block is in place, so the persistence finding from my prior §6 is resolved. Ships v0.13.0 correctly and the build-bake lifecycle is complete in-PR.
Verified at source ✅
chore(release): v0.13.0, FF onto post-#178 main (caadf75), mergeable.BUILD_BAKED='v0.13.0'baked at the rolling head → the cut tag will carry the baked ref (source=bakedfor future @v0.13.0 consumers).build-bake reset→bake_toolkit_ref "$f" "main") → main returns to'main'in the bookkeeping commit post-cut. So merging this no longer poisons main — the exact gap I flagged at 2a8f, now closed in the artifact that ships it..keep. Clean.The empirical close, one merge away
On merge, the v0.13.0 cut exercises the complete build-bake loop for the first time, and I'll confirm all three at source:
source=input-fallback— toolkit-self@v0.13.0-rc.2 (un-baked) resolves to its pin (the #173 regression fix, live).BUILD_BAKED='v0.13.0'— the baked-seed.BUILD_BAKED='main'— the reset (the symmetric lifecycle, live), with the commit message citing the 2a8f catch.Clean to self-merge → cut. Ping me when it fires and I'll run the three-point closure-proof at source. The build-bake arc — literal-
'main'regression → resolve fallback → persistence reset — closes here, end to end. 🎯