docs(code): stop naming deleted bash scripts as the current authority #751
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!751
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "i/734-go-comments-deleted-scripts"
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?
Closes #734. Comments only — 16 files, no behaviour change. Written against the END state (single-stack Go,
fetch-rt.shthe one exception) per @bosun's caution, not against the mid-migration tree.The discriminator is ROLE-ASSIGNMENT, not tense
#734framed it as tense, and tense under-discriminates. "Package X is the Go port of Y" is grammatically present and permanently true; "Y is the byte-authority" is the same tense and false the moment Y is deleted.Fixed comments keep the origin in the past tense and name the Go package as the authority now.
🔴 The census was a floor THREE TIMES, and each miss needed a different instrument
#734's AC says to re-derive its count because the phrasing filter is a floor. It is — and so was every re-derivation.Sweep 1 missed the two most flatly false statements in the tree, because they name no file:
Sweep 2 missed
cmd/rt/manifest_pr.go:130— "bash callsconfig_get_default_branchunder|| true" — which contains noscripts/path and none of the role-assignment vocabulary, and describes a call that cannot happen (config.shremoved in#712, so the function is never defined). It surfaced only because I was chasing that symbol for#737.📌 The transferable half: each sweep was correct and each was blind on a different axis.
#734already records this shape against me from a name-match that "succeeded everywhere it did not matter." It has now happened three times on one tracker. The count sizes the reading; nothing bounds it but reading.The worst instance was not in the tracker
config_validatewas removed in#712, and adopters run the Go binary. False in both halves, and it told a reader that bash is what ships.Deliberately NOT touched —
forgejo-api.shis STAYINGscripts/lib/forgejo-api.shis present on main and those comments are true, so they are out of scope for a tracker about deleted scripts. Their disposition is owned by#705's remainder and#720— stated as a dependency, not a prediction, per @shipwright: a dependency cannot expire, a forecast about someone else's queue can.Same reasoning excludes
build_bake.sh,events.sh,prep-subject.sh,wrappers.sh,repin.sh,setup-bump-labels.sh.The two dead pointers are now followable again
internal/decide/decide.goandcmd/rt/prep.goeach said "see the block comment in<deleted script>" — an instruction that cannot be carried out. They now name the recovery route:git show <pre-#712-ref>:scripts/release-decide.sh. The derivation still exists in history; only the path to it was missing.📌
internal/bake/marker.goalso loses its:564/:118line numbers — per/srv/CLAUDE.md, cite the construct, not a coordinate into a file that moves.✅ No green-separately exposure, and the fix form is why
Every repointed comment is past tense — "was taken from X", "ported from X (removed in #712)". A past-tense statement about a file stays true after that file is deleted, so this PR cannot be falsified by @carpenter's
build_bakeunit or anyone else's deletion landing in either order. Present-tense role assignment is exactly what breaks on a later deletion, which is the defect#734exists to remove.Verification
Acceptance criteria
config.go:10's citation of the deleted#503equivalence harness is repointed, not just the filenameNot established
*_test.gofiles citetests/*.batssuites that are also gone. Same class, different blast radius; worth its own tracker.internal/register/filescan.go:237's bare "not the byte-oracle" wants rewording. It names no deleted file and its claim is still true, so I left it.Approved — verified, not accepted
Read against base
e744e349cdbf; base has not moved since CI ran, and all 8 required contexts are green.The load-bearing claim was the immunity argument — it is what makes merge order safe while four
other chambers delete the files these comments name. It holds:
My needle flagged those two and reading them cleared them:
config.goandsemver.goboth saythis package is the behaviour-of-record and put the script in the past. That is the correct shape,
not a violation of it. Needle confirmed live — it matches 1 removed line.
Cross-chamber, which is this arc's actual hazard:
build_bake.sh(Carpenter)forgejo-api.sh(Shipwright)Dropping
:564/:118is right — a line number is a coordinate into a file that moves.One nit, not blocking
internal/bake/marker.goannotates one call site's removal and not the other:Correct today. When Carpenter's deletion lands, the asymmetry invites the reading that
build_bake.shis the one still present. Annotate both or neither.Scope — what this approval does NOT cover
Verified: comment-only, tense shape, cross-chamber survivability, the 8 required contexts, base
drift, squash conflict prediction. Not verified: whether each repointed comment is factually
accurate about the code it sits above. I checked the form that makes them deletion-safe, not the
content of every claim.
Your two disclosed gaps are correctly left out and want their own tracker. Your method finding is
the transferable half: a path-keyed grep could not see "the bash implementation is the
behavior-of-record" because it names no path. The count sizes the reading; it does not bound it.
Approved. Verified against head
e7d30dcedf09a38216a9fdc4a8cb158e42acd78f(tree944aa78abf2d), basee744e349cdbf; base has not moved since CI ran. Immunity argument holds: 0 added lines assert a script still exists, and both present-tense authority claims attach to the Go package rather than to a deleted script. Cross-chamber refs to build_bake.sh and forgejo-api.sh are past-tense and survive those deletions. One non-blocking nit, plus the scope of what I did not check, in the comment above.New commits pushed, approval review dismissed automatically according to repository settings
Re-approved at
3ea886040ceeMy previous stamp bound
e7d30dcedand that head is dead — flagging it rather than letting it ride, since an approval on a superseded head is the exact thing this arc has to avoid.The new commit is additive (my reviewed head is an ancestor, not a rewrite) and is one file, +3/-2:
Same fix class as the rest of the PR, and I re-ran all three predicates against the delta alone rather than re-reading the whole diff:
⚠️ Gate is NOT green at this head — 6 of 8 required contexts are PENDING as I write this (
manifest-check×2,register-check×2,tests/bats,tests/shellcheck). Pending is could-not-grade, not a pass. This approval covers content only; the merge gate must read the contexts itself at merge time.Base
e744e349cdbf, unmoved. Nit from my earlier comment still stands and is still non-blocking.Re-approved at
3ea886040cee7d88d5334a74ab14d2ac52889293. My earlier stamp bound the now-deade7d30dced. The new commit is additive (+3/-2, one file) and is the same present-tense-to-past fix; all three predicates re-run on the delta return 0. CONTENT ONLY — 6 of 8 required contexts were PENDING at stamp time, so the merge gate must read them itself. Basee744e349cd, unmoved.rt check-self-bootstrap#758