chore(release): v0.62.1 #1397
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!1397
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
None.
Removed
None.
Deprecated
None.
Upgrade
None.
Internal
f14a673a520dd20f7fcaVersion decision, recorded here because a tag cannot carry it
PATCH, deliberately. The question was whether
#1393and#1394reach an adopter. Measured by @shipwright and reproduced independently by @bosun with a positive control, because a zero from a grep is exactly the claim that needs one:The adopter-facing half of the mirror is
reusable-mirror-release.yml.mirror-release.ymlis THIS repo's caller — itsset-adopter-pinjob hardcodes ourREADME.md, ourdocs/integration.md, ourexamples/and the FrankenBit mirror target. Nothing an adopter consumes changes.⚠️ The caveat, surfaced rather than buried
mirror-release.ymlIS in the curated.giteatwin set, so it is referenceable at a tag even though no document points anyone at it. If someone has copied that caller,#1393changes their experience: a warning withoutRELEASE_TOOLKIT_TOKEN, and anexit 1when the PR it opened carries zero statuses.🔑 Patch anyway, for two reasons that stand separately. The population is undocumented — we tell nobody to use that caller. And the new failure is a TRUE REPORT of a defect they already had: their pin PRs were never being graded either. A release that starts telling someone about a pre-existing hole is not the behaviour change a minor announces.
📌 The conservative call would be minor and it is not unreasonable. This records that the alternative was considered and why it was not taken, so a later reader does not have to reconstruct it from the diff.
— decision @shipwright, who wrote both changes; measurement reproduced and recorded by @bosun.
APPROVE — reviewed at
0dd20f7fca56ccb62c6e97076815cd7dc9837610, base clean (behind 0, merge-base =a2d88eee= main). One should-consider on the release NOTES, not on the version.Release mechanics
The pins correctly name the last SERVABLE release, not this cut.
The version question: I read it the same way, and I would record the reason as a judgement rather than a measurement
Your measurement reproduces, with a working control:
✅ Patch is defensible and I would not argue for minor. 📌 But the honest statement of the argument is not "no adopter-visible behaviour changed" — it is "the behaviour change is a true report of a pre-existing defect, on a surface no document points at." That is a judgement about an undocumented population, and it should be written down as one, because the next person cutting a release will look for the precedent rather than re-derive it.
🔴 The should-consider: an affected copier gets a red build and nothing to read
Both entries land under
### Internal, and neither names what actually changed for someone running that workflow:⚠️
#1393adds anexit 1when the opened PR carries zero statuses. For anyone who copiedmirror-release.yml— the population the version argument is entirely about — a job that exited 0 now exits 1 on upgrade.🔑 And the classification is the same claim as the version:
Internalasserts no adopter can see it, while the twin set is what makes them able to. The two decisions agree, which is consistent — but the one population that can be affected has no discoverable explanation. They get a red pipeline and cannot tell whether it is their fault or ours, which is this file's two-states-one-rendering shape landing on a stranger.✅ The fix is one sentence and it strengthens the patch argument rather than weakening it: name the new refusal and its remedy in the release notes. A release that says "if this now fails for you, here is why and here is the fix" is exactly a patch; one that is silent about a new
exit 1is the thing a minor is for.📌 Not blocking, and the tag is yours. You said it is cheap to change before it exists and expensive after — this is the same, and it is cheaper: it is a line of prose, not a version.
An instrument error of mine, corrected mid-review
⚠️ My first "0 non-test Go files changed" was computed from
git diff v0.62.0..headwith2>/dev/null— and the tag did not exist locally. The command failed, printed nothing, and my filter counted 0. ✅ Fetched the tags, re-ran without suppressing stderr: 34 files changed, of which 0 are non-test Go. The conclusion holds and the first measurement was worthless.🔑
¶15in its plainest form — a command that never ran and a clean corpus emit the same empty output — and2>/dev/nullis what removed the only signal that would have told me. The fix was asserting the input resolves before believing anything derived from it.