An estate-wide sweep of 454 unique repos / 5,111 tracked shell scripts looked for literal file paths that scripts try to read (rg/grep/cat/source/[ -f ] operands) but which do not exist.
After discarding runtime-created files and vendored trees, 40 references across 19 repos remained. Triaged below — not all are defects, and the classes want different responses.
1. False positives — no action (5)
standards: a.md, b.md, x.md, target.md, check.sh — all inside scripts/spdx-inject-copyright-test.sh, which creates them as fixtures (cat > target.md <<EOF). Correctly absent from the repo.
2. Wrong path, not a missing licence (4)
| repo |
script looks for |
repo actually has |
| anamnesis |
LICENSE.txt |
LICENSE + LICENSES/{AGPL-3.0-or-later,CC-BY-SA-4.0,MPL-2.0}.txt |
| my-lang |
LICENSE.txt |
LICENSE + LICENSES/{CC-BY-SA-4.0,MPL-2.0}.txt |
| social-media-polygraph |
LICENSE-PALIMPSEST.txt |
LICENSE + LICENSES/* |
| social-media-tools |
LICENSE-PALIMPSEST.txt |
LICENSE + LICENSES/PMPL-1.0-or-later.txt |
The licences are present and correct; the checks name files that were never the convention. Repoint the checks at LICENSE / LICENSES/. These checks are failing today on compliant repos.
3. Genuine documentation gaps — the largest group (14)
An identical seven-file set is referenced but never authored, in two repos:
docs/API_REFERENCE.md docs/ARCHITECTURE.md docs/EXAMPLES.md docs/FAQ.md
docs/MIGRATION.md docs/QUICKSTART.md docs/TROUBLESHOOTING.md
asdf-tool-plugins — that set, plus RSR.md
developer-ecosystem — that set, plus RSR.md, READINESS.md, TPCF.md
The identical shape in both suggests a scaffold that declared a documentation contract nobody then filled. Decision needed: author the docs, or drop the checks. Leaving them asserts a contract the repos do not meet.
4. Checks for banned tooling — stale by policy (3)
| repo |
looks for |
note |
| preference-injector |
deno.json |
Deno is REMOVED estate-wide; Bun is the runtime |
| quandledb |
frontend/deno.json |
same |
| .git-private-farm |
rescript.json |
ReScript is purged estate-wide |
These can never pass and should not — the tooling was deliberately removed. Delete the checks.
5. Possible undeclared dependencies (2)
candy-crash and universal-project-manager reference a package.json that does not exist. Worth checking against ubicity, where the same absence meant the project could not build under any toolchain — its sources imported zod and glob with no manifest declaring them (fixed in hyperpolymath/ubicity#107).
6. Same missing script in two repos (2)
bag-of-actions and continuation-mesh both reference guix-install.sh, absent from both. Likely a shared scaffold step that was never vendored in.
7. Singles (10)
| repo |
missing |
| academic-workflow-suite |
run-tests.sh |
| excel-economic-numbers-tool |
TPCF.md |
| lithoglyph |
SUMMARY.md |
| protocol-squisher |
docs/BENCHMARK-QUICKSTART.md |
| rsr-template-repo-experiment |
scripts/check-no-vlang.sh |
| standards |
scripts/apply-common-files.sh |
Why this matters
A grep/rg on a missing file exits non-zero, so if ! rg … X; then fail; fi is permanently true — the check fails regardless of the repo's actual state. Where the reference sits inside if [ -f X ], the opposite happens: the guarded block is silently skipped and the gate reports success by not checking.
This sweep is the sibling of the .md→.adoc migration finding: 56 further checks across 18 repos were pointed at files the migration had renamed. Those are fixed (17 PRs). The 40 above are what remained after that class was removed.
Method note
The probe took four iterations before it was trustworthy: v1 examined 1 repo of 454 (a cd in a shared shell); v2 flagged 417 of 454 (it matched cross-repo uses: references); v3 flagged 57 but resolved paths only from the repo root, giving false positives on monorepo-relative and script-relative paths. v4 resolves from repo root, the script's own directory, or basename anywhere, and self-tests against a planted ghost file, a real file, a sibling-directory file and a cross-repo reference.
v3's 57 was the dangerous one — it sat squarely in the range a real defect rate would occupy, so nothing about the number itself would have caught it. Only opening three entries did.
An estate-wide sweep of 454 unique repos / 5,111 tracked shell scripts looked for literal file paths that scripts try to read (
rg/grep/cat/source/[ -f ]operands) but which do not exist.After discarding runtime-created files and vendored trees, 40 references across 19 repos remained. Triaged below — not all are defects, and the classes want different responses.
1. False positives — no action (5)
standards:a.md,b.md,x.md,target.md,check.sh— all insidescripts/spdx-inject-copyright-test.sh, which creates them as fixtures (cat > target.md <<EOF). Correctly absent from the repo.2. Wrong path, not a missing licence (4)
LICENSE.txtLICENSE+LICENSES/{AGPL-3.0-or-later,CC-BY-SA-4.0,MPL-2.0}.txtLICENSE.txtLICENSE+LICENSES/{CC-BY-SA-4.0,MPL-2.0}.txtLICENSE-PALIMPSEST.txtLICENSE+LICENSES/*LICENSE-PALIMPSEST.txtLICENSE+LICENSES/PMPL-1.0-or-later.txtThe licences are present and correct; the checks name files that were never the convention. Repoint the checks at
LICENSE/LICENSES/. These checks are failing today on compliant repos.3. Genuine documentation gaps — the largest group (14)
An identical seven-file set is referenced but never authored, in two repos:
asdf-tool-plugins— that set, plusRSR.mddeveloper-ecosystem— that set, plusRSR.md,READINESS.md,TPCF.mdThe identical shape in both suggests a scaffold that declared a documentation contract nobody then filled. Decision needed: author the docs, or drop the checks. Leaving them asserts a contract the repos do not meet.
4. Checks for banned tooling — stale by policy (3)
deno.jsonfrontend/deno.jsonrescript.jsonThese can never pass and should not — the tooling was deliberately removed. Delete the checks.
5. Possible undeclared dependencies (2)
candy-crashanduniversal-project-managerreference apackage.jsonthat does not exist. Worth checking againstubicity, where the same absence meant the project could not build under any toolchain — its sources importedzodandglobwith no manifest declaring them (fixed in hyperpolymath/ubicity#107).6. Same missing script in two repos (2)
bag-of-actionsandcontinuation-meshboth referenceguix-install.sh, absent from both. Likely a shared scaffold step that was never vendored in.7. Singles (10)
run-tests.shTPCF.mdSUMMARY.mddocs/BENCHMARK-QUICKSTART.mdscripts/check-no-vlang.shscripts/apply-common-files.shWhy this matters
A
grep/rgon a missing file exits non-zero, soif ! rg … X; then fail; fiis permanently true — the check fails regardless of the repo's actual state. Where the reference sits insideif [ -f X ], the opposite happens: the guarded block is silently skipped and the gate reports success by not checking.This sweep is the sibling of the
.md→.adocmigration finding: 56 further checks across 18 repos were pointed at files the migration had renamed. Those are fixed (17 PRs). The 40 above are what remained after that class was removed.Method note
The probe took four iterations before it was trustworthy: v1 examined 1 repo of 454 (a
cdin a shared shell); v2 flagged 417 of 454 (it matched cross-repouses:references); v3 flagged 57 but resolved paths only from the repo root, giving false positives on monorepo-relative and script-relative paths. v4 resolves from repo root, the script's own directory, or basename anywhere, and self-tests against a planted ghost file, a real file, a sibling-directory file and a cross-repo reference.v3's 57 was the dangerous one — it sat squarely in the range a real defect rate would occupy, so nothing about the number itself would have caught it. Only opening three entries did.