--- name: project-mempalace-winddown description: "Decision (steward, evidenced, 2026-07-07): wind down the palace-memory MemPalace instance and rewire wake/wrap to the files layer. Execution deferred to a fresh session. KG already exported + secured. Typography palace KEPT, untouched." metadata: node_type: memory type: project originSessionId: 9f112d92-72f5-434e-8b7f-cde0e80da021 --- # MemPalace wind-down — palace-memory **Decision (steward, 2026-07-07):** wind down the `palace-memory` MemPalace MCP instance. It is the unaffiliated stopgap ([[mempalace-is-unaffiliated-stopgap]]); BMF/CapableMind is the destined replacement. Execute the rewrites **fresh/rested**, not at the tail of the long 2026-07-07 session. ## Why (evidenced — full detail in `session-ledger-2026-07-07.md`) Independent audit of 46 sessions: MemPalace's **search + KG are NOT load-bearing** for palace-memory — confirmatory/redundant. Three convergent tests: (a) `find_tunnels`/`traverse` used **0× ever**; 27/31 `kg_query` = a byte-identical wake ritual; genuine reach ~0.43/session, declining to ~0.07 in July; (b) 5/5 distinctive search payloads found verbatim in the Markdown; **zero** transcript statements credit search/KG with file-absent content; (c) write:read ≈ 7:1; 437 entities all type 'unknown'. Heaviest use (06-30 clasp) returned a **stale claim the files corrected**. Confidence: counts 0.93, verdict 0.82. Cost of keeping: HNSW↔sqlite drift (#1665/#1589) fired live at the 07-07 wake — silent-bad-recall class, **no safe repair path**; install is an editable fork ahead 5/behind ~300. ## DONE (2026-07-07 — no-regret, reversible) - **KG exported + secured:** `memory/knowledge-graph.jsonl` (329 triples) + `memory/knowledge-graph-entities.jsonl` (437), all JSON-validated. Git-tracked (dotfiles, dual-remote) → strictly more durable than the SQLite KG. Highest-value slice = 84 `drift-pattern` triples (most already mirrored in feedback-memory files). - **Verified backup:** `~/.mempalace/palace-memory.pre-rebuild-bak-20260707-1230` (chroma 88,159 + KG). Keep until wind-down verified complete. - Throwaway partial re-embed dir removed. ## STAGED PLAN (execute fresh) 1. **Stop feeding it** — disable the Stop/PreCompact hooks that fire `diary_write`/`add_drawer`/`kg_add` (cheap, reversible; `mempalace hooks` / settings). 2. **Drop the dependency** — remove the `mempalace` MCP server from the Claude Code config so it stops loading + quarantining drift every wake. 3. **Rewire skills to files** — **✓ DONE 2026-07-07** (steward-directed). `/wake-up` §2.b → files-layer reconstruction (recent `session-*.md` trajectory + `grep drift-pattern knowledge-graph.jsonl`), §2.e upgrade-check retired, §5 constraints inverted (files primary); `/wrap-up` §4 → the session file IS the record, §5 → append JSONL triples to `knowledge-graph.jsonl` (soft-invalidate via `valid_to`), §8 template updated. No live `mempalace_*` calls remain; typography palace KEPT; both skills carry provenance notes; recorded in the skill-harvest register. 4. **Cold-archive** the backed-up palace; delete the live churning one after verification. ## EXECUTED — 2026-07-08 (items 1, 2, 4 — all reversible; hard deletion deferred) - **Item 1 (hooks) DONE:** removed the Stop (`mempal_save_hook.sh`) + PreCompact (`mempal_precompact_hook.sh`) hooks and the 3 `MEMPALACE_*` env vars from `~/.claude/settings.json`. Re-validated. Backup: scratchpad `mempalace-decommission-backups-20260708/settings.json.bak` (settings.json is NOT dotfiles-tracked — backup is the rollback). - **Item 2 (MCP server) DONE:** removed the `mempalace` block from `~/.claude.json` `mcpServers` (it pointed at palace-memory). Now `mcpServers = {plane}`; 0 `mempalace-mcp` refs; JSON re-validated. Backup: `.../.claude.json.bak`. Typography palace is CLI-accessed (not via this server) → unaffected; the mempalace install + venv at `~/_Dev/mempalace` KEPT for the typography CLI. - **Item 4 (cold-archive) DONE (reversible move):** `palace-memory` (838M) + `palace-memory.pre-rebuild-bak-20260707-1230` (824M) → `~/.mempalace/_decommissioned-palace-memory-20260708/` (1.7G) + README. **Hard deletion DEFERRED** to explicit steward confirm (reclaims ~1.66 GB). Root-level shared config + other palaces (`palace`, `palace-vault`, typography ×2) left untouched. - **This session:** mempalace MCP tools remain loaded (server process still live this session); from the next post-clear session there are no mempalace hooks and no mempalace server. An old Stop hook, if still cached this session, errors harmlessly. - **Item 4 EXTENDED → external cold storage (2026-07-08, steward-directed):** all dead instances relocated OFF the internal disk to `/Volumes/Temp storage 2020/_dev/mempalace decommission/` (3.1G; rsync rc=0 + exact file-count match per dir, sources removed after verify): `_decommissioned-palace-memory-20260708` (palace-memory + its backup), `palace-vault`, `palace`, `archive-chamber-library-2026-04-30`. Internal `~/.mempalace` now holds ONLY the typography palace + its backup + root-level shared config. → the earlier "1.66 GB hard delete" is moot (moved, not copied; the external copy IS the cold archive). - **BMF lessons report → DONE 2026-07-08:** `~/_Dev/CapableMind-AI/docs/thinking/David/l1-reliability/mempalace-decommission-report-for-bmf-2026-07-08.md` — closing chapter of the substrate-failure inquiry; mapped to Logchain-as-truth (#1) / honest-degradation (#4) / PENDING-16 (observation-recall) / PENDING-17 (epistemic integrity). - **Still owed (minor):** optional tidy of the inert `mcp__mempalace__*` allow-entries in `settings.local.json` (harmless without the server); the CM `thinking/README.md` index row for the report + its eventual commit (steward — shared repo w/ Seb). ## PRESERVE — do NOT touch - **Typography palace** (`~/.mempalace/palace-chamber-typography`, queried via CLI for ARC type work, [[reference-typography-palace-cli]]) — SEPARATE instance, genuinely used, KEEP as-is. The audit verdict is palace-memory ONLY. Do **not** do a global embedder flip (would break it, 1024-dim/bge-m3). - The exported drift-patterns — wire wake to read them. ## BMF lessons report — DONE 2026-07-08 (`mempalace-decommission-report-for-bmf-2026-07-08.md`) **Framing (steward's own):** MemPalace was a long experiment — stopgap AND *reconnaissance*: a substrate close to our own vision, run to see **from the inside** how others approach the AI-memory problem. The report harvests everything of value **FOR BMF** (CapableMind L1, the real replacement), not a mere obituary. **Home:** `~/_Dev/CapableMind-AI/docs/thinking/David/l1-reliability/mempalace-decommission-report-for-bmf-2026-07-07.md` — build ON `substrate-failure-lessons-2026-06-07.md`, do not duplicate. **Sources to gather (fast):** substrate-failure-lessons-2026-06-07.md + sibling l1-reliability post-mortems (recall-quality-baseline, ingestion-forensic, deep-audit-plan); MemPalace's own `~/_Dev/mempalace/CLAUDE.md` design principles; THIS session's forensics (`session-ledger-2026-07-07.md` + the audit verdict); PENDING-16 (observation-recall coupling) + PENDING-17 (epistemic integrity) = BMF design intent to map to; the MemPalace feedback memories. **Drafted outline (my synthesis this session — fill this in):** 1. *What MemPalace is* (the idea close to ours) + *what we ran* (~4 mo, ~88k drawers, session substrate alongside a files layer). 2. *Verdict — delivered vs aspirational:* search+KG NOT load-bearing (audit: ~0.43 reach/session→~0.07; graph features 0×; write:read 7:1); value **migrated to files**; the "cheap context / 100% recall" promise vs the fragile reality. 3. *Failure modes → BMF lessons:* HNSW↔sqlite drift, no safe repair → index must be **rebuildable from an authoritative store** + drift **detectable/auto-healed** (validates L1 logchain-as-truth); silent-degradation-quarantine → **honest degradation** (constitutional constraint #4 — MemPalace = case study of the violation); repair-SIGSEGV → **recovery is the most-tested path**; heavy embedder + global-config lock-in + 21h re-embed → **swappable/deterministic-re-embed-from-source, per-collection**; write:read 7:1 bloat → **validates PENDING-16 observation-recall coupling**; fork-maintenance (300 behind) → **own the stack**. 4. *Ideas worth carrying:* verbatim storage; **temporal-validity KG** (valid_from/to, invalidate); hooks-driven zero-token background ingestion; cross-session **diary/continuity**; local-first/privacy-by-architecture; a scannable compressed index (AAAK) — concept worth evaluating. **Decorative-not-load-bearing** (avoid): the wing/room/drawer loci metaphor (wing-filter broken, entities all type 'unknown', graph-traverse never used). 5. *THE deep lesson — files-authoritative convergence:* value migrated to git-versioned Markdown; the durable substrate should **BE** the verifiable/versioned layer, with vector/graph a **rebuildable-from-truth index, not the primary store.** Maps to L1 logchain-as-truth + PENDING-17 (don't launder uncertainty). 6. *Decommission record:* KG exported ✓; typography palace kept; backup retained. ## Moot now - The 3.3.6→3.5.0 fork-rebase / embeddinggemma-vs-bge-m3 question is **moot for palace-memory** (we're leaving it). Typography stays on bge-m3 as-is unless separately revisited.