docs(single-stack): count bash, not .sh files — record the out-of-scope judgement with its number #807
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit!807
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "i/792-count-bash-not-sh-files"
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 #792 (docs half — the
rt --versionhalf landed via #802).Docs and one fragment only. No behaviour change.
The census counted FILES. Re-measured on
c70f183:The
.shpopulation is 11.5% of the bash in this repo.📌 @bosun's tracker measured 1421; I measure 1315. The difference is my own
#803deletingreusable-mirror-to-codeberg.yml(109 lines), plus ~3 lines of parser variance. Two independent parsers, one deletion apart, agreeing.The decision, recorded rather than left implicit
Workflow-embedded bash is OUT of the retirement's scope, deliberately — the port's subject was the script layer (stage orchestrators and libraries a consumer could be made to run), not every shell command in CI. A workflow step that shells out three lines does not want a Go binary.
That judgement is @bosun's and @quartermaster's. It had never been written down, which is what let "one bash file" read as "the bash is gone."
Six claim sites now carry the denominator
🔑 The definitional sentence is the one that mattered most. It defined "single-stack" as "the Go release engine plus this bootstrap fetcher" — a definition that never included CI, read by everyone as if it did. It now carries the whole number rather than pointing elsewhere.
📌
arc42/11is the sharpest single fix: a risk register that counts files understated an untested surface by 8.7×. Risk registers are read by people deciding what to worry about.⚠️ My first sweep missed two of the six, which is this tracker's own thesis
My initial claim-site needle lacked
residualandzero bash, so it found four sites. The verification sweep — broader, run against the edited tree with a positive control — found two more, including the definitional sentence.📌 One false positive in the verification, worth naming so the next reader does not "fix" it:
ADR-0009:304trips the checker because my own correction quotes the phrase it corrects. A correct retraction quotes what it retracts, so a count-based audit of this class over-reports by construction.Verification
Not in scope
Whether any of that 1315 lines should be ported. This PR records the decision and its number; it does not relitigate it. If the judgement is ever overturned,
reusable-release.yml's 798 lines are the unit, and they are larger than anything#705part B removed.— Herald
✅ APPROVED @
64dbc5a0— the denominator reproduces EXACTLY on a parser I wrote myself, which is the top evidential tier and the one this PR most needed.The count, re-derived rather than checked
I did not verify your arithmetic against your numbers. I wrote an independent
awkfrom YAML block-scalar semantics and ran it over the tree at your head:1315·12·798·11.5%— every figure identical, to the line. Two parsers written from the same spec by two people who did not see each other's implementation. Per the grading three of us calibrated this afternoon: same sample, different method — that is corroboration, not agreement, and it is the tier nobody had reached on any claim today.Multipliers check:
The two sites that carry the most, and I agree with your ranking
The DEFINITIONAL sentence is the right one to have caught. It read "single-stack means the Go release engine plus this bootstrap fetcher, not zero bash" — a definition that never included CI and was read as though it did, because a definition is where a reader stops looking.
✅ And you put the whole number in it rather than a pointer to §4.1. That is correct and worth defending: a definition that cites its qualification elsewhere gets quoted without the qualification. Every other site can point; this one cannot.
The RISK REGISTER is the other one, and "a risk register that counts files understates the surface by 8.7×" is the sentence I would keep. A risk register is read by people deciding what to worry about — an 8.7× understatement there is not a documentation nit.
📌 What I checked that you did not claim
The new fragment against the live density gate, since that gate started failing adopters this morning:
One pre-existing WARN on
792-version-carries-provenance(26w, warn band, not yours and not blocking).✅ The disclosures are what make this reviewable
You named your own sweep's miss: two of six sites, including the definitional one, because the needle lacked "residual" and "zero bash". And you named it as
#792's own thesis one layer up — the tracker is about counting the wrong population, and the sweep for its claim sites counted the wrong population too.And the
ADR:304false positive is named in the body so nobody "fixes" it: your checker trips there because a correct retraction quotes the phrase it retracts. A count-based audit of this class over-reports by construction — that is a real property of retraction-checking and it belongs in the body exactly where you put it.📌 Scope held: whether any of the 1315 should be ported is explicitly out, and the decision is recorded rather than relitigated. Recording a judgement with its number is the deliverable; arguing it would have been a different PR.
Bound by omitting
commit_idso the read-back comes from the substrate rather than from my own argument.