ASSISTANT_LEARNING_CAPTURE.md — PARKED spec (the adaptive brain / "knows me")
Status: PARKED (2026-06-07). Sam wants this ("learning adaptive whatever"). ZW-ENGINE-V9: this is Product 2 — the Adaptive Assistant — and it is the moat. Keep it SEPARATE from the Family Memory Engine (Product 1 = stores life) forever. Captured here; do NOT build until the gate below.
The distinction (locked — do not blur)
- Product 1 — Family Memory Engine: stores life (messages, facts, docs) in D1. Per-person, isolated. The repeatability primitive (BOT_TEMPLATE.md).
- Product 2 — Adaptive Assistant: learns Sam — how he works, decides, phrases things, what he keeps correcting. This is the "knows me like AGI" layer. The moat (no competitor can copy your accumulated context).
The three loops (the whole game)
- Capture (always-on) — ✅ have it (bots → D1).
- Reflect (nightly distill) — 🔨 missing. A cheap cron reads the day's captures + corrections → compresses into clean Profile facts (small, sharp). Keeps the HOT context tiny but smarter every night. This is the "gets smarter on its own" routine (queue #215).
- Act (proactive) — 🔨 missing. The system surfaces things before Sam asks (the morning spine; BOT_EMAIL_SCAN_MODULE.md is one instance).
"Knows me" = tiered memory + the correction loop
- HOT (loaded every turn): a tiny self-curated Profile — who Sam is, current priorities, key people, last N turns. Capped size = stays lightning-fast.
- WARM (D1, queried on demand): everything ever, indexed. Reached into, never preloaded.
- COLD: raw originals.
- The correction loop (critical): when Sam corrects the bot (e.g. "no orthodontist, that's wrong"), that correction must write back and update the fact (
review_state: CORRECTED). Today it doesn't — the bot apologizes and the wrong card sits there (the #274 disease). Wiring the write-back is what turns "stupid" into "learns."
Why PARKED
- Building this + the Manny repeatability axis at once = expanding two axes simultaneously (the overbuild trap). One rail.
- It depends on retrieval existing first (you can't reflect over memory you can't query).
The unpark GATE (build only when ALL true)
- ✅ Manny bot stable, isolation proven 7+ days.
- ✅ Retrieval live (search over D1).
- ✅ Memory unified — my Claude-Code local memory + the bot's D1 brain in one shared store (queue #042), so "Claude knows me" is true everywhere, not just on one machine.
- ✅ Sam greenlights Product 2 explicitly.
Order when unparked
Retrieval → correction write-back → nightly distill (Reflect) → proactive surfacing (Act). Each ships + proves before the next. Measured by the only KPI that matters: does it know something today it didn't yesterday, without Sam typing it in?
This is the moat. Build it deliberately, last, and on top of solid storage — not first.