---
name: owlery-home-legacy-vs-live
description: "Two owlery trees exist on HFENDULEAM — LOCALAPPDATA\\spt is the DEAD legacy owl home, LOCALAPPDATA\\spt-core is live; a census of the wrong one reads as 'the record does not exist'"
metadata: 
  node_type: memory
  type: project
  originSessionId: 0124b43e-03c3-4f05-8ea3-5033762b4fe5
  modified: 2026-08-02T10:02:36.955Z
---

On this box there are two owlery trees and only one is live:

- `%LOCALAPPDATA%\spt\owlery` — the **legacy owl-era** tree. Still has owner dirs (todlando, doyle, flynn…), `.owl-aware` markers, and info.json files frozen around 2026-07-06. It has **no `shells/` dir at all**.
- `%LOCALAPPDATA%\spt-core\owlery` — the **live** tree (`perch::platform_default_spt_home` joins `"spt-core"` on Windows). Shell perches live at `<owlery>/<owner>/shells/<id>/`.

**Why:** a census run against the legacy path finds owners but no shell records, which reads exactly like "that field specimen was never there" rather than "wrong root". doyle hit this looking for liam's preserved stranded record (2026-08-02) and reported the owner missing; the record was at
`%LOCALAPPDATA%\spt-core\owlery\liam\shells\alchemy-0\` the whole time.

**How to apply:** derive the root from `perch::spt_home()` semantics (`SPT_HOME` override, else `LOCALAPPDATA\spt-core`), never by pattern-matching a path that looks spt-ish. When a census comes back empty, check the ROOT before concluding absence — an empty result from the wrong tree is indistinguishable from a real absence. Related: [[zero-match-filter-reads-as-absent]], [[derived-view-vs-on-disk-record]].
