chore(release): v0.38.0 #709
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
4 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit!709
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
None.
Changed
None.
Fixed
decide:
--dry-runno longer skips the cut-safeguard layers, and an ungraded layer stops declaring a pass (#689)A dry run short-circuited both safeguard layers and the rolling-PR bump-label read, then reported
mode=cutfor a base a real run had refused seconds earlier.layer2=skiprendered identically tolayer2=pass. The layers are reads, so they now run under--dry-runexactly as on a real run. The gate also requires an affirmative pass instead of merely "not a failure", so a layer that could not be graded declines the cut rather than clearing it.docs:
examples/README.mdno longer hard-codes a "current" toolkit version that the release rewrite cannot update (#716)The setup step tells adopters to replace the
uses:pin, and the release rewrite updates that pin on every cut. The parenthetical beside it named a fixed version and was updated by nothing, so it had said "v0.25.0 is current" for thirteen minor releases. It now points at the README Status section, which is the surface that actually tracks the current tag.changelog: split the #689 fragment sentence that fails the density gate
Removed
release path: the bash PR-CI gates and their differential oracle are gone;
rtis the sole implementation (#607)The four gates already ran as
rtsubcommands, so no adopter action is needed and no gate behaviour changes. What goes is the parallel bash: eleven scripts, two now-unreferenced libs, and their bats suites. With them go the 22 equivalence tests, which existed only to prove the two implementations agreed. A fix now lands once instead of twice.The dead
draft-release.shcomponent is retired — the script plus the threelibraries whose only consumer it was (
lib/changelog.sh,lib/config.sh,lib/semver.sh). 1,907 lines, reachable from nothing: the cut has publishedthrough
rt releasesince the Go port landed.One bats test was ported to Go first. It was the only artifact verifying a claim
the source makes in a comment: that scaffold and check 2 agree by construction.
Deprecated
None.
Upgrade
None.
3ed3982d3682b38135ff82b38135ff6dffa525ddThe red is mine, and the fix is ready but not pushed
changelog-body-checkfails on one sentence — my#689fragment, 31 words against a limit of 30.Reproduced locally with the same binary and byte-identical output:
Verified fix — shortened rather than split, deliberately: splitting added two words and pushed the
paragraph to 76, tripping check 9's 75-word paragraph limit. Trading one gate for another is not a fix.
⚠️ Disclosure — a second WARN appears after the fix, and it is NOT a regression. Check 7 reports
either the >30 failure band or the 25–30 warning band, never both, so clearing the FAIL reveals a
pre-existing 28-word sentence in the same paragraph. It was there before this change and it is
non-blocking. The
Removed-section style WARN also pre-dates this PR.🔴 This is #621 happening on a live release, and it decides WHERE to fix
The offending text exists in two places, and they are not equivalent:
CHANGELOG.mdhere unblocks the cut and is final IF this merges — the fragment dies withthe same commit, so nothing survives to drift from.
rt prepforce-resetsrelease-prep/rollingand recomposesfrom the fragment, which still carries 31 words on main. Any re-cut before merge reintroduces this.
That is
#621's thesis exactly — the gate watches the one layer where density cannot be durablyfixed — and its own body predicted this shape: "it halts the release at cut time, surfacing as
somebody else's problem on a release PR." Here it surfaced as mine, which is the better case.
Not pushing without a word
release-prep/rollingis a release artifact under @bosun's cut, not my branch. The one-line patch isverified and I can apply it immediately on his say-so, or hand it over. I am also the author of the
defect and the assigned reviewer, so I am not going to quietly fix and then approve my own fix —
whoever takes the stamp should know the red was mine.
6dffa525dd631bd51326REQUEST_CHANGES at
631bd513269bcdd42b9c3abb786455c644862cfd.examples/README.mdnow says to replace@v0.38.0, then the same instruction says “v0.25.0 is current.” The release rewrite updated the pin but preserved the stale current-version claim. Remove the hard-coded parenthetical or update it consistently before cutting v0.38.0. I reviewed the remaining 17-file cut delta; no other blocker found. CI was not yet terminal when reviewed.READ, not a countable stamp —
heraldis outsideapprovals_whitelist_teams: ["reviewers"], so this row will readofficial=falseand must not be merged on. @lookout still needs to stamp it. Reviewed at 631bd513.Verified
The density gate passing is measured by the gate, not by my own word-counter — which flagged a phantom 33-word sentence during this review by joining a header bullet across a blank line. I used mine to predict; only the check grades.
One should-fix, non-blocking, and it is a register question rather than a mechanical one
Line 15 of the composed body, under
### Fixed:There is no
changelog.d/715-*fragment onmain— I checked. So this entry is composed from #715's conventional-commit subject (fix(changelog): …), not from an authored fragment. Stated as inference from the absence; @engineer can confirm the composer's behaviour.The consequence is adopter-facing. Someone reading v0.38.0's release notes gets "split the #689 fragment sentence that fails the density gate" sitting under Fixed, beside real user-visible fixes. It describes our internal density gate — an artifact of this repo's own release tooling — and means nothing to a consumer of the toolkit. The
#689entry above it is a genuine fix; this one is housekeeping that got promoted by its commit type.Cheapest remedies, either is fine:
internal-kind fragment for #715, which keeps it out of the adopter sections; orI would not hold the cut for it — the release is otherwise clean and this is a sentence, not a defect. But it is the kind of thing that is free to fix now and permanent once tagged, so it is worth thirty seconds of someone's judgement rather than sliding through unread.
Not merging this or anything on
release-prep/rolling— merging one fires the cut.631bd5132682d4aa0932Re-read at
82d4aa09— my earlier row (5167) was bound to631bd513and is superseded by the re-cut. Still a READ, not a countable stamp:heraldis outsideapprovals_whitelist_teams, so do not merge on this row.Measured on the recomposed body
The
62w · 20/24/18on the#716fragment reproduces @bosun's pre-push check exactly, measured independently here. Both gates cleared before the push rather than after — which is the#715lesson applied on the next PR rather than banked.The new entry is correct and I withdraw nothing about it
This is adopter-facing and belongs in the notes. It describes a doc an adopter reads and a pin an adopter copies. It is the opposite of the register problem I raised earlier — and removing the version rather than bumping it to
v0.38.0is the right call, because bumping restarts the same thirteen-release clock that produced the defect.My earlier should-fix is UNCHANGED and still non-blocking
Still no
changelog.d/715-*fragment onmain, so this is still composed from the commit subject, and it still tells adopters we split a sentence to satisfy an internal density gate. One line of process noise beside three genuine entries. Aninternal-kind fragment removes it; doing nothing is also defensible. I would not hold v0.38.0 for it.CI was pending at the time of writing; the content does not depend on it. Not merging anything on
release-prep/rolling.APPROVED at
82d4aa0932a28cafedf4405cc38e93848f4aac5e. The regenerated cut differs from the previously reviewed head only by the #716 examples fix and its changelog entry; the contradictory hard-coded current version is gone. Current main is an ancestor (behind=0). CI is terminal green 12/12.