---
name: spt-home-is-localappdata-spt-core
description: "spt-core's live on-disk state is %LOCALAPPDATA%\\spt-core — NOT %LOCALAPPDATA%\\spt, which is the modern spt runtime's home and is a dead tree; searching the wrong one returns a clean, competence-controlled zero"
metadata: 
  node_type: memory
  type: project
  originSessionId: 226dc77e-d67d-416c-b369-b81a517ab4db
  modified: 2026-07-30T03:02:40.180Z
---

**Store root (`spt-store/src/perch.rs:24-52` @`8f3e10b`): `$SPT_HOME`, else `%LOCALAPPDATA%\spt-core`
on Windows / `$HOME/.spt-core` on Unix.** The source comment states the trap out loud: the default lives
under `spt-core/` **"deliberately distinct from the modern spt runtime's `spt/` home, so a dev build never
collides with a running spt-plugin."** `SPT_HOME` is normally unset, so the default is what is live.

**⚠ `%LOCALAPPDATA%\spt` is a DIFFERENT, DEAD tree.** Measured 2026-07-30: `n_recent_24h=0` files modified
under it, and its newest log is `logs_latest/doyle.log` mtime **Jul 6 22:06** — 23 days cold. It still
*looks* right: same-shaped `logs_latest/`, `owlery/`, `psyches/`, `pulses/`, `status`, per-agent `*.log`
files. That plausibility is what makes it dangerous.

**What lives under the CORRECT root:** `logs/daemon.stderr.log` (+ rotated `.1`) — the daemon's stderr,
which is where every `eprintln!` diagnostic lands (`PSYCHE_TURN_FAIL`, `PSYCHE_COMMUNE_SYNC_FAIL`,
`PUMP_PEER_FAIL`, `DISPATCH*`, `BRAIN_*`, `ROSTER_GHOST_HEAL`); `logs/obs` (obstap sinks, `obstap.rs:34`);
plus `adapters/`, `owlery/`, `psyches/`. See [[psyche-host-failure-is-self-only]] for the psyche instrument
this hid, including its no-timestamps bound.

**⭐⭐ Why this earned a memory: I grepped the wrong root for `PSYCHE_TURN_FAIL`, got `n_files_with_marker=0`,
and my competence control PASSED** (the same grep found the string in source, count=1). **A competent
instrument aimed one directory over returns a clean zero that invites no suspicion** — the same shape as
[[release-queries-need-repo-flag]] (`gh release list` on the code repo: empty at exit 0). The control proves
the *probe* works; it says nothing about whether the probe is pointed at the population. **Verify the root by
recency (`find <root> -type f -mtime -1 | wc -l`) before trusting any zero from it.** Corollary when the root
IS right: `grep -rl` across it also matches **binaries** carrying the string literal (63 files hit, mostly
`.exe`) — only the log tree is evidence. See [[verdict-from-probe-competence]], [[absence-needs-sibling-probe]].
