---
name: check-ignore-on-a-bare-directory-is-not-a-probe
description: ".spt/ was called gitignored by two agents and is not — probe a PATH INSIDE the dir with git check-ignore -v (exit 1 = no rule), never the bare dir; an untracked-unignored preserved tree is a git add -A landmine"
metadata: 
  node_type: memory
  type: feedback
  originSessionId: 4d017315-4e1e-4dc0-81e1-a5c508a9672c
  modified: 2026-09-09T04:14:39.782Z
---

2026-09-09 (hertz measured, doyle verified at the root): I called `.spt/` a gitignored tree when
directing hertz to preserve prebuilt xtask binaries there. It is NOT — `.gitignore` carries only
`.worktrees/` (line 19), `git status --porcelain` prints `?? .spt/`, and
`git check-ignore -v .spt/preserved/<file>` exits 1 with no rule. hertz's own first read had said
"ignored" too: `check-ignore -v .spt/` on the BARE directory printed a line he misread as a match.

**Why:** `.spt/preserved/` holds the r2/r3 golden evidence plus ~325 MB of xtask binaries, all
untracked-and-unignored, so a `git add -A` or `git add .` at the repo root stages the preserved
GOLDEN EVIDENCE into someone's lane commit. Two agents carried the same false belief for a full
gate cycle because neither probed; "untracked" and "ignored" look identical from `git status`
(it lists neither ignored paths nor the contents of an untracked dir).

**How to apply:** before calling any tree ignored, run `git check-ignore -v <a path INSIDE it>`
and read the EXIT CODE (1 = no rule matches); the bare-dir form is not a probe. Until the
`.spt/` ignore line lands (hertz thin lane, post-v0.68.0), stage by PATH only at either repo
root — never `git add -A`. Anything preserved on kitsubito goes under the repo's
`.spt/preserved/`, never `/tmp` (`D /tmp 1777 root root 30d` = contents removed on boot).
See [[a-git-refusal-halts-the-script-and-a-tree-answers-git-status-before-it-dies]] and
[[record-hygiene-index]].
