System Layers
Layer 1: Ground Truth Complete
SQLite

- 1,831+ conversations, 34,400+ messages
- Sources: ChatGPT export, Claude Code sessions, Claude web
- Immutable ground truth — raw conversations never modified

Layer 2: Semantic Memory Complete + Expanding
ChromaDB + MiniLM (384-dim)

- message_embeddings (30K)
- turn_pair_embeddings (13K)
- summary_embeddings (pending)
- fact_embeddings (4,704)

Layer 3: Memory Control Active
Qwen 2.5 14B via Ollama (RTX 3080) — extraction only, NO narrative generation

- Fact extraction (AUDN), scoring, embedding, fact selection
- Contradiction detection: MiniLM filters → Opus 4.6 judges

3A Summarization 3B Surprise Scoring 3C Fact Extraction 3D Active Probing 3E Consolidation
Layer 4: Context Projection Implemented
assemble_brief.py — no LLM in assembly path, all code-based
Brief assembled from three blocks (~1,500–2,600 tokens total):
Block 1: Identity
~1,000–1,200 tokens
Always-on. Authored in Claude Code sessions.
Block 2: Themes
~700–800 tokens
Retrieved. 60% similarity + 40% importance.
Block 3: Episodes
~500–600 tokens
Retrieved. 50% sim + 30% recency + 20% base.
Layer 5: Reasoning Model Active
Claude API — Sonnet for daily, Opus for complex

- Stateless — all memory comes from injected brief
- Claude Code for identity block authoring ($0 cost)

Data Flow