# Rust build output /target /target-seam **/*.rs.bk # Harness / SPT local state (machine-specific) .claude/ # OS junk Thumbs.db .DS_Store .gstack/ # mdBook build output (docs-site truth is src/; rendered book publishes via CI) docs-site/book/ # Gate/agent worktrees — ALL git worktrees live here (doyle convention 2026-07-05); # never as siblings of the project dir. Each carries its own throwaway target. .worktrees/ # Build-step benchmark ledger (releases#108). NEVER committed: a hand-maintained # ledger file in git is the conflict-magnet class every lane would touch and every # merge would fight over. CI emits its own per-run artifact instead. .bench-ledger/ # …and the CI wraps' default relative directory, which lands in the checkout itself. # Ignored for the same reason plus one more: an untracked directory in the workspace # reads as a DIRTY TREE to anything that asks git (debug-rollout stamps `git_dirty` # into an update set's provenance from `git status --porcelain`). bench-ledger/ # Agent scratch. Peer messages, commit/PR bodies, gate legs, run output and preserved # evidence — 152 entries / 277 MiB on the authoring box the day this landed, none of it # repo content, all of it staged by a `git add -A` at the root because nothing ignored it. # # SIX FILES MOVED OUT rather than behind this line, because the repo cites them: # .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 # .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 # launch-battery.py is the reason this list exists: its own docstring records that the # original was LOST to a `.spt/` sweep in 2026-09 and rebuilt at cost, while the register # cites it. An ignore line is the condition that produced that loss, so anything the repo # names moves out before the line goes in. # # Any `.spt/...` path cited from docs/ is MACHINE-BOUND EVIDENCE on the box that produced # it, never a repo path; this line neither tracks nor deletes it. Six such citations at # landing, none of them repo content. Deliberately a RULE and a COUNT, not a list: the # register gains evidence citations continuously (two arrived the same day this landed), # and an enumeration in an ignore comment is stale the next time anyone files a finding. .spt/ # Gate legs written at the REPO ROOT by battery/driver scripts. Root-anchored on # purpose (`/*.raw`, not `*.raw`): these patterns must not reach into crates/ or # docs/, where a `.raw` fixture would be repo content. # # 473 such files existed when this landed (268 .raw, 184 .exit, 7 .out, 4 .done, # 4 .log, 2 .stackdump, 2 .sh, 2 .txt — 45 MiB). Every one was checked for a # tracked citation first, word-bounded against the whole tracked corpus, and had # none; they were MOVED to .spt/preserved/root-gate-legs-2026-09-09/ with a # sha256 manifest, not deleted. # # Legs are the one class whose FUTURE instances are scratch by construction, so # ignoring them institutionalizes no loss — unlike a directory ignore, which is # how .spt/launch-battery.py was lost once already. A leg kept as evidence lives # under .spt/preserved/ and is cited by THAT path, never by a root path. # # Deliberately NOT ignored: `/*.md`, `/*.log`, `/*.sh`, `/*.txt`. A plan or a # script dropped at the root MUST keep showing as `??` so the next census # classifies it — that is the pattern which produced this repo's tracked root # corpus, and burying it would hide the next one. /*.raw /*.exit /*.done /*.out /*.stackdump