# Root-scratch census 2026-09-09 15:4xZ (doyle, classify-only; nothing moved, nothing deleted)

Population: `git status --porcelain --untracked-files=all` on main b0b67aaa = 561 `??` rows, ALL at repo root,
0 in subdirs (`.spt/` ignored since #212). 50,034,994 bytes (47.7 MiB). Method = #212's: census by prefix
group (root_census.txt), tracked-corpus citation grep by filename (python substring, then word-bounded
`git grep -F` on every hit), docs/ twin scan (none). Citations from other ROOT scratch or from the memory
dir are NOT repo cites (the #212 discount).

## Class A — REPO-CITED (16 files): relocate INTO the repo + repoint, same as #212. NEVER ignored.
| file | cited from |
|---|---|
| W5-211-DESIGN.md | crates/spt-store/src/access.rs:4928, crates/spt/tests/intra_node_degrade.rs:4 (CODE cites) |
| WAX-SEAL-21-JIT.md | docs/INFRA-REGISTER.md:95, traceable-reqs.toml:7186,:7211 |
| WAX-SEAL-W3-JIT.md | traceable-reqs.toml:7248 |
| SIGNET-218-JIT.md | traceable-reqs.toml:7277 |
| FIELD-SEAL-63-JIT.md | traceable-reqs.toml:7345 |
| WEBSERVE-272-W3-DRIFT-RIDERS.md | traceable-reqs.toml:7566 |
| CONCIERGE-183-JIT.md | docs/INFRA-REGISTER.md:105 |
| KEYSTONE-182-JIT.md | docs/INFRA-REGISTER.md:120 |
| REGISTER-SWEEP-0671-DRAFT.md | docs/INFRA-REGISTER.md:15 |
| REGISTER-SWEEP-242-DRAFT.md | docs/INFRA-REGISTER.md:59 |
| RCA-242-R2-LINUX.md | docs/INFRA-REGISTER.md:709 |
| RCA-274-R1-LINUX.md | docs/FLAKE-LEDGER.md:46 |
| ASM-241-GATE-VERDICT.md | docs/INFRA-REGISTER.md:3157 |
| EMISSION-RESIDUAL-CENSUS-FINDING.md | docs/INFRA-REGISTER.md:3671 |
| EMISSION-RESIDUAL-CENSUS-METER.py | docs/INFRA-REGISTER.md:3688 ("repo root, untracked; version-control rides #243's lane" -- check whether #243 landed it elsewhere first) |
| GATE-W2-272-CHECKLIST.md | docs/INFRA-REGISTER.md:4535 -- LIVE (doyle appends rows hourly) |
Destinations (ruled): *-JIT.md wave maps -> docs/intake/ (new dir); W5-211-DESIGN.md -> docs/design/;
RCA-* / ASM-241-GATE-VERDICT / REGISTER-SWEEP-* / EMISSION-*-FINDING -> docs/; EMISSION-*-METER.py ->
.github/bench/ (beside launch-battery.py); GATE-W2-272-CHECKLIST.md -> docs/gate-records/ (tracked; later
rows ride docs batches -- a live record under an ignore line is the launch-battery loss again).
Every cite line repointed in the same commit; git mv is not available (untracked) so add at the new path and
prove content sha256 before/after per file. Line numbers above are at b0b67aaa; re-grep at the lane base.

## Class B — GATE LEGS (~470 files, ~45 MiB): .raw .exit .done .log .out .stackdump + asm22.sh/asm22b.sh.
ZERO tracked cites. Three substring hits FALSIFIED by the word-bounded grep: `test.raw` (matches
`nextest.raw`-class tokens), `treqs.exit` (matches `<lane>_treqs.exit`), `build.raw` (a `$OUT/build.raw`
path in .github/bench/twohost-web-local.sh, not root). Ruling: preserve-before-reap -- mv (not cp) into
.spt/preserved/root-gate-legs-2026-09-09/ with a manifest (original name, size, sha256), then root-anchored
ignore lines `/*.raw` `/*.exit` `/*.done` `/*.out` `/*.stackdump` with a rule comment: a leg cited as
evidence lives under .spt/preserved/ and is cited by THAT path, never at root. Legs are the one class
whose future instances are scratch by construction, so the ignore line does not institutionalize a loss.
The two .sh leg scripts and the two .stackdump crash dumps go to the same preserved dir (nothing deleted).

## Class C — UNCITED ROOT .md (~74 files: JIT plans, RCAs, drafts, notes): mv into
.spt/preserved/root-md-2026-09-09/ with the same manifest. NO `/*.md` ignore line: a future plan dropped at
root MUST keep showing as `??` so it gets classified; this is the 2026-08 pattern (JIT plans authored at
root, then cited from treqs/register) that produced Class A. Two are cited only from other root scratch
(W3-196-CENSUS.md <- W3-196-JIT.md; WEBSERVE-272-JIT.md <- W3-272-MEASUREMENTS.md): both sides move
together, cites stay as history. Going forward: author JIT plans under .spt/ (ignored) and promote to
docs/intake/ the moment a tracked file cites one.

Sequence: hertz lane AFTER owlery-noun lands; one PR, my read before ff; treqs 0; status must show zero
`??` rows at root after; check-ignore by PATH with a populated pattern field for each new ignore line
(the bare-directory probe trap). Register entry IR-91 rides the same PR.
