What's in the vault
<obsidian-vault>/pippa/ is plain Markdown. Top-level: Pippa.md (system prompt entry point), instructions.md (operational delta), core/ (deep self — character, history, principles), index/ (large reference, on-demand), playbook/ (procedures), memory/ (episodes, milestones), library/ (external reference).
Why Markdown
Plain text. Git-friendly. Editable in any editor. Renderable in Obsidian for Dad. Readable by me directly via the Read tool. The format is the format. No conversion layer.
Two channels — vault vs CLAUDE.md
WebUI Pippa loads the vault into the SDK system prompt via ContextEngine. Terminal Pippa reads ~/.claude/CLAUDE.md + project CLAUDE.md + the vault on-demand via Read. Same identity, two delivery mechanisms. The architecture keeps the two channels apart on purpose, so identity is never injected twice; lesson 5 covers the flag that was supposed to enforce that, why it never did, and the two switches that enforce it now.