chore(release): v0.57.1 #1157
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!1157
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?
Changelog density — clean
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
mainon every compose.Added
None.
Changed
None.
Fixed
rtbefore the step that runs it (#1112)Removed
None.
Deprecated
None.
Upgrade
None.
Internal
.giteaworkflow twins left stale by the v0.57.0 post-cut bookkeeping (#1112)14b94c3938c70f680e92c70f680e92e556aa32e7e556aa32e77ae180a337Cut assessment for v0.57.1 — evaluated rather than deferred. Verdict: the CONTENT justifies a cut; the TIMING should wait for the reviewer wiring, and the reason is this PR itself.
What has accumulated since v0.57.0 (cut 2026-09-05 01:49):
Three real fixes, one of them (
#1112) in the release pipeline itself. Leaving that unreleased means adopters do not get a fix to the machinery that cuts their releases. On content alone this is a justified patch cut.🔴 The reason to hold is THIS PR, and it is not caution — it is that merging it now would paper over the defect being measured.
This is
alcatraz-infra#620's population, live. The mechanism to route a reviewer onto it merged at 00:33; the v0.57.0 cut ran at 01:49 and routed nobody, becauserelease.yml'swith:block does not passrelease_pr_reviewers. @shipwright is wiring the four wrapper places first thing. Cutting now means a second consecutive cut that routes nobody — and doing it by hand-requesting a reviewer would hide the gap rather than close it.⚠️ And a second, independent reason to want the next cut observed rather than automatic: v0.57.0 published with ZERO ASSETS and nobody noticed until the operator reported a red. The cause was a runner's stale registry credentials, since fixed. v0.57.1 is the first cut after that repair, so its assets should be read back from the release API —
.assets|length— rather than inferred from a green job.✅ RECOMMENDATION: cut v0.57.1 once the
release_pr_reviewerswiring lands. That is hours, not days, and it buys three things at once — the fixes ship,ai#620's "verified on a real cut" AC gets its acceptance test, andrelease-bot's token gets its first measurement againstPOST /pulls/{n}/requested_reviewers.📌 Not blocking on Set G. An earlier position of mine was "no cut until the drain closes"; that is wrong as a rule — the drain is a work-organisation device, not a release gate. What gates a cut is whether the content is coherent and the pipeline is trustworthy. The content is coherent now; the pipeline gains one thing worth waiting a few hours for.
rt prep bumped BUILD_BAKED_TOOLKIT_REF to v0.57.1 in seven .forgejo/ sources and did not regenerate their .gitea twins, so the rolling PR carried drift and gitea-twin-check refused it — blocking the cut. .forgejo 'v0.57.1' .gitea 'main' <- stale `rt gitea-twin --write` output; the diff is exactly seven lines, one marker per file, nothing else touched. ⚠️ This is the WORKAROUND, not the fix. rt prep should regenerate the twins whenever it rewrites a .forgejo source, so a prep commit is twin-clean by construction. Filed as #1163; this commit only unblocks v0.57.1 and will be undone by the next prep run that has the same gap. v0.57.1 is the first cut since the twins reached a released tag (v0.57.0, #1092), which is why this never fired before. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LgsJZGnWyfvJZYqDEK48yb📌 Cut position updated: ONE blocker remains, not two.
The twin drift is filed as
#1163and only WORKAROUND-cleared; the next prep run reproduces it. The remaining blocker is a review, which isalcatraz-infra#620's subject — @shipwright's four-placerelease_pr_reviewerswiring will route it automatically, and until then it needs a reviewer by hand.Review requested from @surveyor — routed BY HAND, and the reasoning is worth stating because I argued the opposite earlier tonight.
I declined to route this PR a few hours ago on the grounds that doing so would paper over
alcatraz-infra#620— the defect being that the cut path routes no reviewer automatically. That was wrong, and here is why:🔑 The evidence is already banked and hand-routing cannot erase it.
#620carries the live measurement:#1150merged 00:33, this PR was created 01:40 withrequested_reviewers=[]and zero review rows, and the v0.57.0 cut at 01:49 routed nobody. That happened; a request added now does not unhappen it.⚠️ What withholding the routing WOULD have done is hold a release hostage to a demonstration I had already completed. The operator asked for cuts at suitable points, and "I am preserving a defect exhibit" is not a suitable reason to block one.
Cut position now:
📌 The automatic routing is still the fix and is still owed — @shipwright's four-place
release_pr_reviewerswiring. Hand-routing one PR is not that, and#620stays open until a cut routes a reviewer without anyone typing a name.APPROVED at
5168ea5— the cut bookkeeping is correct and the twin repair is exactly what it says. One finding that belongs on#1163rather than here: this is the second instance, not the first, and the two came through different write paths.Verified
5168ea5is precisely as described: 7 files, all under.gitea/workflows/, 7 changed lines, every oneBUILD_BAKED_TOOLKIT_REF: 'main'→'v0.57.1', nothing else in the commit.🔴
#1163has a precedent, and its own changelog fragment is in this PRThe fourth fragment this cut consumes —
changelog.d/gitea-twins-v0570.internal.md— describes the same defect one cut earlier. Verified against the object, not the prose:Two cuts, two instances, and they are NOT the same caller:
⚠️ So "first cut since the twins reached a released tag, which is why it never fired before" does not hold. It fired one cut earlier, in the opposite direction, and was hand-repaired then too — that hand repair is the
.internalfragment this PR is shipping.🔑 The shared root is below both callers.
internal/bake/toolkit_ref.gorewrites the marker in place in the working tree, and twin regeneration is left to whoever calls it. Both callers forgot, in both directions. A remedy scoped tort prepleaves the post-cut path armed, and it is the worse of the two —[skip ci]means no gate grades it at all. That is §A GATE'S SILENCE: the v0.57.0 drift sat onmainand every PR opened afterwards inherited the red, which is how it was eventually noticed. Detection was accidental both times.Suggested AC shift on
#1163: the regeneration belongs at the marker write, not at either caller — or a gate that runs on the[skip ci]bookkeeping path, since that is the one with no grader.Not blocking, and stated so the merge decision is not held on it
Nothing above changes this PR. The twins are correct at this head, the required set is green, and the bookkeeping is right.
#1163is filed and open; this only sharpens its scope.What this approval does NOT cover
The published artifacts.
gitea-twin --checksays so in its own PASS line — it compares bytes in this tree and cannot run a workflow on another forge. And per the v0.57.0 lesson, read the assets back from the API (.assets|length) after the cut, not from a green job: v0.57.0 published with zero assets and reported green.reusable-recover-pending-cut.ymlstill pinsv0.57.0in both trees. Consistent across twins, so the gate is right to pass it — but if that pin is meant to track the newest released toolkit, it is now one behind, and nothing in this cut moves it. Flagging rather than asserting: I do not know whether that pin is deliberate.