Files
dotfiles/claude/memory/session-2026-06-22-l1-n6-wedge-fixed-pr175.md
T

13 KiB
Raw Blame History

name, description, metadata
name description metadata
session-2026-06-22-l1-n6-replay-wedge-fixed-proven-on-a-clone-pr 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.
node_type type originSessionId
memory project 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.