chore(repo): ignore .spt/ scratch, after moving out the six files the repo cites `.spt/` is agent scratch — peer messages, commit and PR bodies, gate legs, run output, preserved evidence. 152 entries and 277 MiB on the authoring box the day this landed, none of it repo content, and nothing ignored it: a `git add -A` at the root staged every byte, including the 205 MiB `.spt/preserved/` tree. THE REASON THIS COMMIT MOVES FILES BEFORE IT ADDS THE LINE is written in one of them. `.spt/launch-battery.py`'s own docstring says the original was "lost with a `.spt/` sweep" in 2026-09 and rebuilt at cost — while the register cites the tool twice. An ignore line institutionalizes exactly the condition that produced that loss: a file the repo depends on, invisible to git, one sweep from gone. So every `.spt/` path the repo names moves out first, and the line goes in behind them. THE SIX MOVES, and why each destination: .spt/rig/twohost-web-local.sh -> .github/bench/twohost-web-local.sh .spt/preserved/pump-on-one-box-rig.patch -> docs/spikes/pump-on-one-box-rig.patch These two were TRACKED — added deliberately at 6f620ce4 as the W2 lane's record. A blanket ignore does not untrack a tracked file, so leaving them would have shipped a lane that believed `.spt/` was sealed while both kept reporting edits in `git status`. The rig script goes beside wrap.sh / link-probe.sh, the rig-script home; it names itself only by bare name, so no usage line changed. An unapplied rig patch carrying its measurement in the header is a spike record, and docs/spikes/ already exists. The patch's own "Restore with: git apply ..." header line was repointed at the new path — an instruction that names its old location is wrong the moment it moves, which is the exact failure this commit exists to end. .spt/RCA-FLEET-DAEMON-14444.md -> docs/RCA-FLEET-DAEMON-14444.md .spt/PID-KILL-CENSUS.md -> docs/PID-KILL-CENSUS.md .spt/launch-battery.py -> .github/bench/launch-battery.py .spt/RIDER-65S-DESIGN.md -> docs/design/RIDER-65S-DESIGN.md The RCA is linked four times from the register as [[RCA-FLEET-DAEMON-14444]] and existed nowhere but `.spt/`; docs/ already carries F-035-RCA.md and GATEWAY-RCA-STEP1.md at top level, and the wiki-links resolve by name. IR-81 names the census as its "Census body". launch-battery.py is a battery launcher, so it joins the other bench scripts (its docstring Usage block was repointed too; `--out .spt/...` stays, because scratch OUTPUT is what the ignore line is for). RIDER-65S-DESIGN is the design for a lane that is still LIVE — fix/ir84-pump-peer-budget-instrument is not an ancestor of main and IR-84 is absent from the register — so it lands as a design doc rather than behind the line. FOUR REGISTER PATHS FIXED, one of which a path grep does not find: :4267 (the ENV READ table row) and :4304 (IR-81's census body) cite the old paths directly. :4288 does not — it says "the ENV face's fix is a tool in `.spt/`, not product code", naming the DIRECTORY as a category, and the move makes that sentence false without any path for a grep to match. It now names the file. :4276 is deliberately UNCHANGED: it says `launch-battery.py` with no path, and that stays true. NINE OF THE FOURTEEN `.spt/` write-ups stay behind the line as dead scratch, each checked rather than assumed: the ir79..83 drafts all landed (IR-79..83 each appear once in the register), ir37-redundancy-evidence's substance is at :2264/:2281, pr-rigports-body's two rows are in FLAKE-LEDGER.md:50 and INFRA-REGISTER.md:3886 carrying the same sha256, and IR37-RIDER-NOTES, REAUDIT-REFS-6e075f7e and operator-brief-rc-panel have zero citations anywhere in the repo. WHAT THIS LINE DOES NOT TOUCH. Six `.spt/` citations remain in docs/ at landing. They are machine-bound evidence on the box that produced them — never repo paths: disk-local by design, already untracked, neither tracked nor deleted by this commit. The .gitignore comment states that as a RULE AND A COUNT rather than a list, on purpose: the register gains evidence citations continuously — two arrived from #211 the same day this landed — so an enumeration in an ignore comment is stale the next time anyone files a finding. Without that comment the next reader takes a register citation for a repo path and finds nothing. Separately, 561 untracked gate-leg files sit at the REPO ROOT (ASM22B_reap*, W2_check*, E276/W3/W4 legs); they are a bigger population than `.spt/` and are deliberately OUT OF SCOPE — this line does not grow root globs to chase them. Proof carried by the lane: all six files hash-identical across the move (sha256 before and after, and the two tracked ones verified as pure renames — same blob oid at the old and new path, not a name match); `traceable-reqs check` exit 0; `git status --short` shows zero `?? .spt/` rows with the six moved files tracked. The two new files under .github/bench/ were checked against the bench_row_parity sweep, which discovers ledger writers rather than listing them: the .py is dropped by the extension filter and the .sh emits no `"step":` line, so neither joins that gate and its wrap.sh/wrap.ps1 positive control still fires. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01WAw9XAcTR8oSwzYPsqZoY2 Co-authored by: hertz