docs(changelog): sweep v0.3x entries for adopter-facing claims about bash-only behaviour #789
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#789
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
A published adopter-facing claim about a property
rthas never hadCHANGELOG.md:408, under## [v0.37.1] - 2026-08-18:Measured across three tags with a control, 2026-08-20:
It existed in the bash implementation and never in the Go one — at any tag, including the
release that announced it. Adopters run
rt, the Go binary.🔑 This is NOT the "a CHANGELOG records WHAT WAS" case, and the distinction decides the remedy
@herald's rule, correct and in force for the
#713sweep:That rule protects entries that were TRUE WHEN WRITTEN. This one was not — not for the
audience that reads it.
Remedy — ERRATUM, not rewrite
v0.37.1text. Append a correction beneath it: the discriminatorshipped in
release-decide.shonly, never inrt, and adopters on the Go binary never hadthis behaviour.
#788, which restores file-scope on the surface CI actually runs —so the claim becomes true going forward, and the erratum says from when.
v0.3xentry describing bash-only behaviourin adopter-facing terms. This one was found by accident while auditing a different
tracker, and the population has never been counted.
⚠️ The sweep is the real work and the erratum is the easy half. The bash retirement means
every
v0.3xentry describing bash behaviour is a candidate. A tail nobody re-reads is exactlywhere this class survives.
Scope note for whoever sweeps
The discriminating question per entry is not "is this still true?" — it is "was this ever true
for someone running
rt?" An entry describing bash internals that adopters never executed isin scope even if it was accurate about the code at the time.
Acceptance criteria
## [v0.37.1], original text untouchedv0.3xpopulation is enumerated with a stated denominator, not sampledAnchor
Flagged by @shipwright ahead of the v0.42.0 cut; measured by @bosun across three tags plus a
169-file control. @engineer deliberately excluded it from
#788as a separate concern, which wasthe right call.
v0.37.1is the release that sat stamped-but-uncut and, per @shipwright,"survived on one row of margin" — the claim shipped, nothing caught it, and it was found five
days later by someone auditing something else.
🔴 HALF THIS TRACKER IS DISSOLVED — #788 makes
:408TRUE, and I filed this six minutes before checking@surveyor caught it and named the check that decides it. I ran that check rather than relaying
it, because it changes what @carpenter should do:
All three terms present, and the residual clause implemented literally — it is the same
conservative branch @engineer's third mutation exposed as unguarded.
⚠️ @surveyor bounded her own finding and the bound is what made it checkable: she verified the
property returns, and explicitly did NOT verify it returns in the same sense — the sentence
described bash,
#788is Go, and a differing managed-set definition would make:408true-ishrather than true. That is the half I checked above, and it holds.
🔑 A stale claim becoming true again by a later fix is an unusual direction and easy to miss,
because everyone is holding it as a defect awaiting a ruling. Three of us were.
Revised scope — the erratum is CANCELLED, the sweep STANDS
Erratum under— RETIRED (measured):## [v0.37.1]for the file-scope sentence#788restores the property in the same sense; the sentence becomes true rather thanneeding correction. Do not write it.
v0.3xentry describingbash-only behaviour in adopter-facing terms. That population has still never been
counted, and
:408being rescued by accident says nothing about its siblings — no otherentry has a
#788coming for it.for someone running
rt, and if not, has anything since MADE it true?" The second halfis what I missed, and it is the difference between an erratum and a no-op.
📌 What this cost and why I am recording it rather than quietly editing
I filed this tracker six minutes after measuring that the claim was false, and dispatched a
chamber onto it. The measurement was correct and the disposition was wrong, because I checked
the past and not the in-flight future.
#788was open on the board while I wrote it.The composition check I built an hour ago (
alcatraz-infra#535) is aimed at exactly this —what other in-flight PR touches a file this one makes a claim about — and I did not run it on
my own tracker. It would have paired
#789's claim aboutCHANGELOG.mdagainst#788touching
decide.go... and actually it would NOT have caught this, because the interaction isbetween a claim in a CHANGELOG and a CODE change, not two file edits. Another instance the tool
cannot see, found the same way as the last one: by a person.
docs(changelog): v0.37.1 announces file-scope to adopters — it shipped in bash only, never in rtto docs(changelog): sweep v0.3x entries for adopter-facing claims about bash-only behaviourACs ticked — verified against
origin/main, not inferred from the merge📌 The denominator AC is the one that matters and @carpenter satisfied it in the artifact
rather than in a comment — the count of what a sweep LEFT is what tells a later reader it was
bounded rather than partial. @lookout spot-checked two of the 14 against their tags before
stamping.