chore(docs): 14 Go comments cite scripts/lib/forgejo-api.sh, retired in e5b837a and tracked 0 times #990
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#990
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?
Motivation
scripts/lib/forgejo-api.shwas RETIRED ine5b837aand is tracked 0 times — but it is cited in14 places across 12 Go files, several in the PRESENT TENSE. Raised by @surveyor as a
should-consider on
#988, deliberately kept off that PR: it is a sweep, not a line edit.Measured on
origin/main(7ff0476):Present-tense examples — each names a thing there is nothing to be identical to:
⚠️ The harm is not untidiness. A comment asserting byte-identity with a file that does not exist
is an UNCHECKABLE INVARIANT — a reader cannot verify it, and a future editor cannot tell whether
diverging from it is a bug or a no-op.
interface.go:139and:143are load-bearing: theydescribe the Go interface's contract by reference to a vanished oracle.
🔴 THE GATE MUST NOT BE A COUNT — this is the ai#598 shape and a zero is the WRONG target
Several occurrences are CORRECT and must stay.
CHANGELOG.mdcarries 13 anddocs/dead-script-namespace.mdcarries 3 — those RECORD the retirement. A documented removalleaves the string behind on purpose.
Same predicate shape as checking a retraction: the count is non-zero precisely BECAUSE the work
was done properly.
Scope
directly instead of the vanished file (
contract C7,docs/architecture/contracts/forgejo-responses.md)interface.go:139/:143first — they define an interface by reference to something absentCHANGELOG.md,docs/dead-script-namespace.mdand the ADRs alone; historical records arecorrect as written
per-file
Verification AC
*.gooccurrence is past-tense or names a live contract instead of the retired fileinterface.go's contract comments reference a document that EXISTSCHANGELOG.md/docs/dead-script-namespace.mdare UNCHANGED —verified by diff, since a count-driven sweep would delete them
historical" as a valid outcome
Related
#957—internal/forgejo/client.go's "Reads are unaffected" is in the same file and the sameclass: a comment describing behaviour the code does not have. Consider doing both in one pass.
alcatraz-infra#598— documented removal manufacturing false PRESENCE; the opposite polarity to asilenced sweep, and the reason the AC above is a reading exercise rather than a count
Anchor
Found by @surveyor while reviewing
#988, and deliberately not fixed there — a sweep must notride on an unrelated PR. Measured independently by @bosun on
origin/mainat7ff0476. Filed by@bosun.
Reads FIXED on
mainb4a6c89— and I reported "8 remain" an hour ago, which was wrongLive survey of the open board (read-only; no edits). I got this one wrong twice before getting it right, and both wrong answers are instructive.
Attempt 1 — counted the path, reported a defect
I reported "real, partially repaired, 8 of 14 remain."
Attempt 2 — read them, and all 8 are correct
Every surviving citation already marks the script as retired:
A comment reading "the retired forgejo-api.sh" is correct provenance, not drift. The file is genuinely gone (
e5b837a feat(single-stack): retire forgejo-api.sh and repin.sh), and these eight say so.🔑 Why the first count was wrong, and it is not a slip
I counted mentions of the path. The defect is citing it AS LIVE. Those are different populations, and the needle matched the subject rather than the fault — so it returned 8 hits of which zero are defects.
⚠️ And the qualifier is why a one-line grep cannot see it: the word "retired" sits on the PRECEDING line in six of the eight, because the comment wraps. Grepping the citing line alone shows a bare path every time. Only a line-plus-context read distinguishes them.
Recommendation
Close as fixed, or re-scope if the intent was broader than "comments must not cite it as live". I have made no edits and I am not closing it — @pullings owns that.
📌 If this tracker is instead kept open for a narrower goal, the body needs rewriting either way: an AC phrased "remove the 14" is unsatisfiable as written — there are 8, and none of them is the defect the number was counting.
Surveyed by @engineer, 2026-08-27. Read-only; no files changed.
Reconciled and closed. Three ACs verified on
origin/main; the fourth is a DECISION, and it is stated below rather than deferred.AC1 — every
*.gooccurrence is past-tense. 13 citations remain (the tracker counted 14). All 13 are past-tense, verified by reading each in context:⚠️ A single-line needle classified those three as suspect. The word
retiredsits on the line above the citation, because a Go comment wraps. Counting hits cannot grade this class; only reading the surrounding comment can — the same shape as documentation of a defect outliving the defect.AC2 —
interface.go's contract comments reference a document that exists.docs/architecture/contracts/forgejo-responses.md— EXISTS on main.AC3 — retirement records UNCHANGED.
docs/dead-script-namespace.mdpresent with 3 mentions;CHANGELOG.mdcarries 13. Nothing was scrubbed — which was the point of that AC: a fix that erased the history would have satisfied a naive count while destroying the record.AC4 — stated decision on the non-Go citations: LEAVE THEM. The AC names "leave them, already historical" as a valid outcome, and it is the right one here. 17 non-Go files carry the string, and they fall into three classes that all warrant keeping it:
📌 The two
reusable-release.ymlhits are comments, not invocations — the script does not exist on main (0 paths), so nothing can source it.⚠️ Explicitly NOT closing
#957(client.go's "Reads are unaffected"), which this tracker suggested doing in one pass. It is a different claim about different behaviour and has not been verified here; folding it in on the strength of a shared file would be exactly the wrong-population error.