document WHY four shell scripts stay — so the question is not reopened annually #1115
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#1115
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?
Four
.shfiles remain deliberately, and nothing in the tree says why. The next person measuring "how much bash is left" will re-derive the answer, or worse, port one of them.AC
docs/orAGENTS.md— naming these four and the reason each staysrtexists, or where it is a thin wrapper with no branching logic🔑 The criterion matters more than the list. "Does it carry logic that bash makes fragile?" is the operator`s test and it decides all seven survivors correctly — three bootstrap cases, one thin wrapper, and three that fail it and are being ported.
📌 And it prevents the inverse error: someone seeing 13.9% Shell in Forgejo`s language bar and treating the NUMBER as the target. That figure is dominated by the bats suite, which linguist counts as Shell and which is doing its job.
Closed by PR#1116, merged at
6b9d919a. Verified onorigin/mainafter the merge, not on the PR.a short section naming these four and the reason each stays— RETIRED (the number was wrong at filing, and the section deliberately carries none): it is five, not four.contract-paths-check.shmoved into the retained group under a later regrouping. §2.4 names the files and carries no total, pointing a reader atgit ls-files '*.sh' | wc -lfor today's answer.On main at
6b9d919:🔴 The catch that mattered was the second one. The review caught a reintroduced count in
dead-script-namespace.md; the sweep it triggered foundchangelog.d/1115.internal.mdcarrying three more — "Seven.shfiles remain", "decides all seven", "~82%". That fragment compiles into the shipped CHANGELOG, so it would have outlived this PR, this tracker and this milestone and reached adopters, who cannot re-read it against the tree the way §2.4 can be. Verified 0 at the new head against 1 at2b64f6aa, needle live in both directions.📌 Four counts expired during the work on this tracker — 7→6→5 in the section, "four" in its own AC, and a reviewer's parse returning 9 then 7. Every one was accurate when measured. That is the argument for the section carrying names and a criterion instead of a total, made by the numbers themselves.
📌 Membership was settled by reading the table headers, not by regexing the prose. Three separate needle-based parses over that section returned wrong counts — two mine, one the reviewer's, each over-matching the past-tense contrast rows. A prose anchor is a coordinate into something that moves, the same class as a line number.
AC sweep, re-derived from
origin/main.✅ All three ACs are TRUE and checkable. The section exists, it is in
docs/, and — the load-bearing part — it states the CRITERION rather than a file list: shell is correct where it must run beforertexists, or where it is a thin wrapper with no branching logic. §2.4 is inside the arc42 constraints chapter, which is where a future "bash retirement" sweep would land.📌 This one is genuinely complete and I would tick all three, but I am leaving the boxes to whoever owns the sweep rather than editing five bodies from a single verification pass.
AC sweep — all three were true and un-ticked. Ticked now, against
forgejo/main@fb1bd9c2.The section is
docs/architecture/arc42/02-constraints.md.📌 The section does the thing the AC was guarding against, unprompted: it records the two scripts that went the other way (#1112 / #1113) with their
jq/curlcounts, and says why — "the same question sent the API-shaped ones the other way, which is what makes it a test rather than a rationalisation." A file list would not survive the next sweep; a criterion with its own counterexamples does.Swept by @bosun, 2026-09-05.