--- name: session-2026-06-22-l1-n6-replay-wedge-fixed-proven-on-a-clone-pr description: "The day a real L1 wall came down. Levi superseded → L1 detour. Built the jurist's 6-section L1 state summary (forensic, 6 agents + executor verification; corrected vLLM→Ollama, SurrealDB-transition status, classifier=ONNX-NLI-not-Qwen). Confirmed the headline finding's TRUE mechanism: the live instance runs a STALE 2026-05-24 binary that predates A1'' AND the edge cap — not a migration bug. N6 causal graph worse (688k/676k). Built the N6 fix (skip chain extension during replay) on branch feat/n6-causal-governor; proven on an APFS clone of live data — Phase-1 COMPLETES (the wedge is gone), A1'' migration self-heals 0→7 columns. A/B control: the removed scan = 2.56s each (vs 0.003s indexed). Canary failed but benign/environmental. Live deploy harness-blocked (correct). Packaged: PR #175 open, gates green (check + 3890 tests). Pulling thread: DEPLOY the fix to live + confirm the breakthrough, whether or not Seb has moved. Plus: Gwern article studied (imitation-vs-citation; 2 borrows for L1); MemPalace fork is 176 commits behind 3.4.1 (upstream fixed our bugs, we don't have them); ARC running-head = Gwern's is pure JS (test a zero-JS scroll() bar on iPhone), source-persistence = worthy ARC study." metadata: node_type: memory type: project originSessionId: 9b076953-fa10-480e-afd5-ca27b7d96e0a --- # Session 2026-06-22 — the N6 wall came down The day started as a jurist state-request and turned into the first real L1 breakthrough in weeks. Relational ground (held all day): David and Seb both ground down and feeling blue, both needing a breakthrough; Seb busy + personal troubles at home; David wants to **shoulder L1 more effectively** partly to relieve Seb — which is why everything today was built to ask LITTLE of Seb. ## PAST — what we did ### The arc (L1) 1. **Wake** inherited the Levi → pattern-finder thread (from 06-18). Steward **superseded it** for the day: "push Levi back, I want to work on L1." Named for inheritance, to re-pick after the N6 arc settles. 2. **Jurist state-request** (Gwern Guardian-Angel brief, EXECUTOR-BRIEF pending) → built the **6-section L1 state summary**: `~/_Dev/CapableMind-AI/docs/thinking/David/l1-reliability/l1-state-summary-for-jurist-gwern-brief-2026-06-22.md` (uncommitted; descriptive, no proposals). Method: 6 parallel forensic agents + executor re-verification of load-bearing claims. **Corrected the request's stale premises:** inference = **Ollama not vLLM**; classifier = **CPU ONNX zero-shot NLI (mobilebert-mnli + bert-base-NER), LLM-escalation = Claude Haiku — NOT Qwen**; embedding = **mxbai-embed-large**; reranker = Qwen3-Reranker-0.6B; local-gen = qwen2.5:7b code / **qwen3.5:4b live**. Substrate = **sqlite-lance** live (per-module SQLite + LanceDB + file logchain), pinned by `~/.capablemind/env`; code DEFAULT still `surrealdb` (dormant/broken). Overturned two stale tracker claims: REVIEWED-18 similarity probe is **LIVE** (three-disposition routing), not dead; `recall_feedback` capture surface exists (captured-not-consumed). Validation #170 is a *tracking* issue, not the validation issue; Signal 1 verified, Signal 2 never fired (N6 wedge), Signal 3 fallback-only. 3. **"Has Seb moved? true posture?"** → verified: **Seb's last L1 work = 2026-06-07** (A/B/C trio `9ec4813` + benchmark-governance v1.1 + reply `cc25995`); everything since is the steward's (PR #174 `/health` auth-tiering, issue #173, both davidglidden). Baton with Seb. **Running binary = stale `dist/` built 2026-05-24** (predates A1'' [06-01] AND Seb's trio [06-07]). 4. **THE corrected root cause** (overturns my own summary + the jurist's "migration drift" framing): the qualitative-axis columns aren't missing from a migration bug — they're missing because **the running 05-24 binary predates the A1'' code entirely; the loop-closing code has NEVER been deployed.** Verified three ways: dist file mtime 05-24, A1'' commits 06-01 (`5e6e0c4`/`bdaa4e3`/`e5b4954`), zero A1'' symbols in `dist/`. HEAD compiles clean (`tsc --noEmit`=0). [executor-verified live: `vector_chunks` ends at `source_classification_confidence` = 19 cols; `source_classification_confidence` 26278/26278 populated.] 5. **N6 worse than the 06-06 snapshot:** `caused`=688,624 / `causal_chain`=676,024 (was 245k/238k), still growing UNCAPPED (stale binary predates the cap too). Not an index fix (scans full-table by construction). Genuinely Seb's B1 governor territory — but I built it. 6. **Built the N6 fix** on branch `feat/n6-causal-governor`: **skip chain extension (`tryExtendChains`) during `replay_phase1/2`** — thread `isReplay` into `runTemporalPipeline` (`pipeline.ts`), pass it from `handleEvent` (`index.ts`). The wedge = `getChainsContainingSeq` (a `json_each` full scan over 676k chains) called per-edge ≤20×/event. Chains for replayed events already exist; re-deriving them wedged AND duplicate-minted. `tsc` clean; **94 temporal tests pass** (live-path unchanged — skip only on `isReplay=true`). Commit `81e0706`. 7. **Tested on an APFS CoW clone** (`/tmp/bmf-n6-testdata`, 1.2G) of live data, isolated git worktree (`/tmp/bmf-n6-test`, built its own dist), port 3022, throttle off — **live instance NEVER touched.** RESULTS: ✅ **`Progressive replay Phase 1 complete`** (the wedge is gone); ✅ **A1'' migration self-heals 0→7 qualitative columns on boot** (`addColumnsIfMissing` fired); ⚠️ recall canary FAILED but BENIGN (0 canary chunks indexed; AC power rules out embed-suppression; core recall returned 5 via hybrid bm25+vec; known-flaky self-test in a contended fresh dual-instance env). 8. **Steward "1,2,3 in order":** (#1 A/B control) timed the exact removed scan on the real 676k graph = **~2.56 s each** vs **0.003 s** indexed → ≤20×/event ≈ 51s synchronous block/event → days on a 5,752-event replay = the wedge, quantified. (#2 canary) benign, confirmed-by-#3. (#3 deploy) **BLOCKED by auto-mode guard** — "unreviewed code on live substrate" — CORRECT; gave steward the runbook + rollback. 9. **Packaged for Seb (follow protocol):** branch pushed to origin (`davidglidden`... no — `CapableMind-ai/betterMemories_app`); CHANGELOG entry (`0a0c290`); gates green (`npm run check` clean, `npm test` **3890 passed**); **PR #175 OPEN** (Summary + Test plan + How-to-verify + What-NOT-changed + Known-limitations: B2 index / B1.1 cap-harden / A1'' side-effect). Drafted N6 issue for steward to file. Plane relay declined ("PR and issue suffices"). ### The studies (low-energy evening) - **Gwern Guardian-Angel article** (read whole via WebFetch summary): imitation (fine-tune the person into weights; "trust as much as yourself") vs **CapableMind's citation** bet (trust via provenance/boundedness). Gwern's hardest problems (drift/poisoning/finetune-vs-ICL) are ones we structurally avoid. His GA = the childhood chamber made *competent* but still a mirror; the engine makes the voices *real*. **2 genuine borrows for L1:** (1) **active-query loop as the consumer for the epistemic axis** — use low earned_confidence / means_of_knowing=inference to ASK the steward, not store a guess; his "interview prompt" recipe shapes Pain 2 (founding) + Pain 4 (procedural), both undesigned. (2) **uncertainty-by-disagreement** — we run rules+NLI+LLM and vector+entity+temporal; their disagreement is a free honest-uncertainty signal we discard (antidote to competence-vulnerability paradox). Fine-tuning = **CONTRAINDICATED** for the jurist (not partial). Regret-bound = technical ammo for "the loop is load-bearing." **Gwern mission verdict: cream taken (~75% conf, read a summary); one-page disposition if jurist wants the record. Gwern = the occasion, not the payload — the day's gold was self-examination of our own substrate.** - **MemPalace repo:** we're on fork `davidglidden/mempalace`, branch `local/bge-m3-on-3.3.6`, **v3.3.6, 176 commits behind upstream 3.4.1**. Upstream FIXED our bugs (wing-filter "Error finding id" #1396/#1315/#1618/#1624; #1495 cold-start; repair-safety via `repair --mode from-sqlite` #1308; HNSW drift quarantine) — **but we don't have them** (behind on a fork). Our local fixes: layers-recency (45bbbe6, upstream did NOT adopt → carry forward), hallways-pagination (cb1be92, upstream solved independently #1619 → drop on upgrade). Upgrade friction = **bge-m3 re-express + full re-embed**. **DON'T run repair on 3.3.6** (still unsafe). Upgrade plan (`project-mempalace-upgrade-3-4-0-plan.md`) needs refresh 3.4.0→3.4.1. - **ARC ← Gwern running head:** Gwern's bottom running-head + progress bar = **pure JS** (`scrollTop/(offsetHeight−innerHeight)`, rAF, GW.floatingHeader; ZERO scroll-timeline CSS). Works on mobile BECAUSE it's JS — opposite side of ARC's exact bug. Not copyable under banish-JS. **Zero-JS candidate to test tomorrow:** `animation-timeline: scroll(root)` bar (different/simpler than the `view()` reveal that failed) — build a 10-line test → load on the actual iPhone. **Worthy ARC deeper look: SOURCE PERSISTENCE / link-archiving** (Gwern mirrors every cited link vs rot) — deeply ARC (invisible durability for Lune+Kai) + same nerve as CapableMind provenance; proportionate ARC version snapshots cited sources into the repo at build (tens not tens-of-thousands). Filter: adopt Gwern's invisible craft, decline his visible density. ## PRESENT — the mood / returns - The contamination directives EARNED their keep today: I was **wrong twice** on the schema-drift mechanism (first "migration only in fresh path," then a bad dist grep), and the steward's "do the confirmation" instinct forced the verification that flipped it to the TRUE cause (stale binary). Caught a third: I read a **self-constructed EXPLAIN** (`WHERE coherence_evaluated=0`) as evidence of a code path — the build-map agent caught it's not in the code. And a fourth: declared the test process "not running" from a **pgrep pattern miss** (it was alive as PID 56879). - The harness **blocked the live deploy** — and that was right; it matched my own earlier hesitation about unreviewed code on the live substrate. The loop held. - The work-as-care register was the right one all day: no false reassurance (steward forbids it), precision *as* care. The honest comfort offered on "I cannot fail" / "we both need a breakthrough" was: today a real wall fell, measured and packaged to ask little of Seb — that IS shouldering it. ## FUTURE — what is pulling **PULLING THREAD (singular):** **Deploy the N6 fix to the live instance and confirm the breakthrough actually lands — whether or not Seb has moved on PR #175.** (Steward's explicit directive for tomorrow.) The fix is built, proven on a clone, PR'd; the only thing between us and the wall falling on David's real substrate is one steward-run deploy. **ACTIONABLE RESUMPTION POINT (as of wrap — re-judge against what changed):** - *State:* Branch `feat/n6-causal-governor` pushed; **PR #175 open**; live `mindfabric-00` still on the stale 05-24 binary (PID 747); backup at `~/.capablemind/backups/mindfabric-00-20260622-pre-n6-test`. Worktree `/tmp/bmf-n6-test` + clone `/tmp/bmf-n6-testdata` still on disk (cleanup when satisfied). - *First moves:* (1) check PR #175 for Seb's reaction + `git fetch` BMF/CM-AI for new Seb commits; (2) **steward runs the deploy** (executor is auto-mode-blocked — needs steward to run, or explicit re-authorization): `cd ~/_Dev/BetterMemories.io && npm run build && launchctl kickstart -k gui/$(id -u)/com.capablemind.bettermemories`; (3) verify Phase-1 completes, **columns 19→26**, and a **real canary result**. Rollback runbook in PR #175 + the 06-22 ledger. **Other open horizons, ranked:** - *Load-bearing:* the live deploy (the thread). Then: backfill-vs-acknowledge governance call for the ~26k pre-A1'' rows (steward/jurist); correct the jurist deliverable's "migration drift" → "stale binary" once the live deploy confirms the true story (deliverable uncommitted/unrelayed). - *Follow-on (in PR #175):* B2 durable chain-membership index (2.56s→0.003s); B1.1 cap-harden (`?? DEFAULT`). - *Parked-with-reason:* Gwern one-page disposition (if jurist wants it); MemPalace 3.4.1 upgrade (bge-m3 friction; refresh the plan); the Levi → pattern-finder thread (superseded today, re-pick after N6 settles). - *ARC (proposed for a low-stakes window):* the `scroll()` progress-bar iPhone test; the **source-persistence deeper look** (the worthy one). **PAUSE STATEMENT:** I'm leaving with the N6 fix built, proven on a clone, and in Seb's inbox — but **not yet landed on David's live instance** (he chose not to run it tonight; the harness blocked me from doing it for him). What I want to find still pulling: the deploy itself — the moment the wall actually falls on the real substrate, and the canary tells us whether the clone's miss was environmental. Held gently beneath: David and Seb both ground down, both needing a breakthrough that is now one steward-run command away. **LITERAL QUESTION for next-Claude:** When the N6 fix runs on the **live** instance (not the clone), does Phase-1 complete AND does the recall canary actually **PASS**? — The canary failed environmentally on the clone; the clean single-instance deploy is the real test. A pass confirms the "benign" diagnosis; a fail surfaces a real recall issue that was hiding behind the old wedge. **State:** Branch `feat/n6-causal-governor` @ `0a0c290` pushed; PR #175 open; gates green (check + 3890 tests). Live instance unchanged (stale 05-24 binary), backup taken. CM-AI jurist summary uncommitted (needs mechanism correction post-deploy). The wall is measured and ready to fall.