The trap
git status --porcelain compares the worktree against HEAD. A clone with an
empty index but a real HEAD therefore reports its entire tree as
staged-deleted. This is not a corruption signal and not a deletion.
This manufactured a false emergency on 2026-09-08: an estate scan reported
83,441 staged deletions. The true figure was two orders of magnitude smaller.
The correct instrument
Use git ls-files --deleted — "in the index, missing from the worktree". That is
the question a deletion audit is actually asking.
Re-measured across 1,043 repos with the correct instrument:
| Measure |
Value |
| True deletions |
2,642 |
| Repos affected |
199 |
| Empty-index clones (the artefact source) |
45 |
| Unreadable repos (excluded, not clean) |
6 |
Largest residues: julia-ecosystem 695, polystack 338, meta-repos/stapeln
137, nextgen-databases 130.
Positive rule (not just the trap)
- Report deletions from
git ls-files --deleted, never from git status.
- Print the empty-index count alongside every total. A total without it is
unfalsifiable — the reader cannot tell a real mass deletion from 45 clones
with no index.
- Report the unreadable count separately. Unmeasurable is not clean; folding
6 unreadable repos into "0 deletions" is a silent false negative.
- Assert the population is non-zero before reporting any total. A sweep that
errors everywhere prints a confident zero.
Why this is worth an issue
The artefact is stable and reproducible — those 45 clones will keep
manufacturing the same false emergency in any status-based scan until they are
either repaired or excluded by name. The next agent to run a deletion census
will rediscover the 83,441 figure and may act on it.
Related: the empty-index clones themselves need a disposition (repair vs delete
vs exclude) — that is a separate owner decision.
The trap
git status --porcelaincompares the worktree against HEAD. A clone with anempty index but a real HEAD therefore reports its entire tree as
staged-deleted. This is not a corruption signal and not a deletion.
This manufactured a false emergency on 2026-09-08: an estate scan reported
83,441 staged deletions. The true figure was two orders of magnitude smaller.
The correct instrument
Use
git ls-files --deleted— "in the index, missing from the worktree". That isthe question a deletion audit is actually asking.
Re-measured across 1,043 repos with the correct instrument:
Largest residues:
julia-ecosystem695,polystack338,meta-repos/stapeln137,
nextgen-databases130.Positive rule (not just the trap)
git ls-files --deleted, never fromgit status.unfalsifiable — the reader cannot tell a real mass deletion from 45 clones
with no index.
6 unreadable repos into "0 deletions" is a silent false negative.
errors everywhere prints a confident zero.
Why this is worth an issue
The artefact is stable and reproducible — those 45 clones will keep
manufacturing the same false emergency in any
status-based scan until they areeither repaired or excluded by name. The next agent to run a deletion census
will rediscover the 83,441 figure and may act on it.
Related: the empty-index clones themselves need a disposition (repair vs delete
vs exclude) — that is a separate owner decision.