Files
dotfiles/claude/memory/session-2026-06-23-l1-n6-deployed-live-consumer-hardware-reframe.md
T

63 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: session-2026-06-23-n6-deployed-live-the-consumer-hardware-reframe-ocr-workhorse-plan
description: "N6 fix deployed to live mindfabric-00 (steward-authorized) — wedge GONE, 3h+ durable, schema 19→26, recall works. Seb MERGED PR #175 + caught a real edge case I missed (skip extension only on catch-up, extend on rebuild) → rebuilt live from merged main. Diagnosed the revealed entity 30s-saturation: NOT graph/cap/index (B1.1/B2 both wrong) — it's per-pair generative typing flooding single-GPU Ollama; model is FINE (TEST G isolated /api/chat = 4.6s). Steward reframe: consumer hardware (M1 Air) must be first-class → but Seb ALREADY designed it (43L profiles + 43M tiered circle inference + clasp serves inference); my PENDING-41 was reinventing it, corrected/withdrawn. Live L1 now BOGGED standalone (slow replay, /health unresponsive, circle-forward to dead fleet) → NOT yet trustworthy enough to replace MemPalace. Decision: don't send Seb anything (unverified/already-his-design); verify on a clone first. PULLING THREAD: stand up the 64GB mini as OCR/conversion workhorse with best LLM-assisted OCR tools → finish Levi → pristine chamber → studium-engine. Held question: how should studium-engine interact with L1 (purposely separated)."
metadata:
node_type: memory
type: project
originSessionId: 7598dc60-60a8-4528-a301-91414e5df384
---
# Session 2026-06-23 — the day N6 landed on the real substrate + the hardware reframe
A long, high-movement L1 day that turned into a hardware/architecture clarification, ending pointed at the chamber-OCR workhorse.
## PAST — what we did
### L1 / N6 (the core arc)
1. **Wake** inherited the 06-22 thread: deploy the N6 fix to live + confirm. PR #175 was OPEN, zero Seb reaction.
2. **Steward authorized the live deploy.** Deployed PR #175 (`feat/n6-causal-governor`) to live `mindfabric-00` with rails (CoW backup → bootout → build → bootstrap → verify). Results: ✅ **Phase-1 completes** (wedge GONE), ✅ **3h+ stable at ~20% CPU** (was 100%-pegged for days), ✅ **A1″ migration FIRED: vector_chunks 19→26 cols** (epistemic-axis schema that had NEVER deployed — confirming 06-22's stale-binary finding), ✅ **real recall works** (live /v1/recall returned correct chunks). Backups: `~/.capablemind/backups/mindfabric-00-20260623-pre-n6-deploy` + `-pre-mainrebuild`; rollback dists preserved in BMF repo (untracked).
3. **The canary FAILED on live too** (5 results, none matching) — answering 06-22's literal question: NOT environmental. But real recall works → it's that fresh writes lag indexing (tracer: HNSW rebuilt periodically, not per-write; 90%, unconfirmed).
4. **Seb MERGED PR #175** (`3332772` on main) + pushed a tightening commit (`fc3fa2a`) catching a **real edge case I missed**: my fix skipped chain extension during ALL replay; correct = skip only on **catch-up** replay, **extend on rebuild** (else a wiped store never rebuilds chains — the rebuildability invariant). `skipChainExtension = isReplay && context?.isRebuild !== true`.
5. **Rebuilt live from merged main** (PID 80713) so the live instance runs the reviewed/correct binary, not my pre-review branch. Verified the `isRebuild` distinction is in dist.
### The entity-saturation diagnosis (lots of self-correction — see RETURNS)
6. The deploy REVEALED a steady-state symptom masked by the wedge: **entity relationship-typing pays 30s/event.** Diagnosed it is `trySlotRelationship → slot.infer` (a generative `/api/chat` call PER co-occurrence pair). **B1.1 (cap) and B2 (index) are the WRONG fix** — it's inference, not graph.
7. **Root cause (confirmed, after thrashing): single-slot Ollama saturation by BMF's own per-pair generative load.** TEST G (BMF stopped + slot cleared + correct endpoint /api/chat) = **4.6s, model FINE**. Ollama log: `POST /completion 200` succeed + many "aborting (client closing)" = serial single-slot queue backing up past 30s. Ruled out (red herrings): missing qwen2.5:3b (fast-fails 0.055s); structured-output bug (refuted); /api/generate hangs but that's an Ollama 0.30.8 endpoint quirk BMF doesn't use.
### The consumer-hardware reframe (the most important output)
8. **Steward:** people on M1-era hardware (his = M1 Air 16GB, NOT 8) must be able to run CapableMind. I drafted PENDING-41 proposing "consumer-hardware graceful degradation" as novel.
9. **Steward pointed me to clasp/circles in the spec → it's ALREADY DESIGNED.** `local-inference-spec` Amendment **43L** (hardware-graduated profiles: lightweight/standard/full/appliance-64GB) + **43M** (Tiered Circle Inference, `'circle'` provider tier): low-tier nodes run tiny models + **rely on circle inference**; a **clasp** serves big-model inference to circle members; FM-009 GPU-degraded circuit breaker specced. **My PENDING-41 was reinventing it → CORRECTED/withdrawn in place** (the `reinvented-governed-tooling-without-checking` drift). Findings doc §3a + PENDING-41 both corrected.
10. **Today's saturation = a deployment STATE, not a design gap:** the Air runs **standalone** (unpaired, no clasp/teacher, fleet kronos/atlas 502) → no offload path → forced full-local generative. The design's answer (offload to clasp/circle) is just inactive. The 64GB mini = **appliance** = a natural **clasp** for the steward's two-machine setup.
### Live L1 status + the MemPalace-replacement question
11. **Live L1 (merged main, standalone) is BOGGED:** still in Phase-1 replay (~15s/event), 29k Phase-2 backlog pausing for "resource pressure," **circle-forward repeatedly failing to dead fleet/peers**, **/health unresponsive (40s, 0% CPU, listening but not answering)**. N6 catastrophic wedge IS fixed (grinding, not hung-forever). **Honest verdict: NOT yet trustworthy enough to replace MemPalace** (the stated goal — [[mempalace-is-unaffiliated-stopgap]]). Left running to settle; **do NOT poke it** (restarted 4× today already).
12. **Decision: don't send Seb anything.** Everything is either his design (43L/43M), his work (N6), or unverified observations on a bogged standalone box I can't distinguish from expected. Candidate real-bugs (general /health-under-replay starvation; circle-forward backoff — quick grep showed none obvious in orchestrator, transport untraced) need **clone verification first**. Courtesy "merge deployed + holding" note optional.
### Forward setup captured
13. **OCR-workhorse plan written:** `chamber-library/_curation/remote-ocr-workhorse-setup-2026-06-23.md` — stand up the mini as a chamber OCR/conversion workhorse (batch = latency-immune = ideal remote use). Candidate LLM-OCR tools to evaluate next session: **olmOCR** (first, for Levi), Qwen2.5-VL, Marker/Surya, GOT-OCR2.0. Levi = immediate test (Italian/modern, known drop-cap-lost-at-OCR-source failure). Frontier = polytonic Greek/Latin/fraktur/critical apparatus.
## PRESENT — mood / RETURNS
- **I thrashed today** — flip-flopped the saturation root cause 4× (missing-model → structured-output → "model dead" → finally saturation), each a confident claim later overturned by the next test. The decisive discipline missed: **when an inference call is slow, FIRST test it isolated (stop competing load) on the EXACT endpoint the code uses** — I wasted rounds on /api/generate (wrong endpoint) under contention. Steward's clasp/circles pointer + "be sure it helps and isn't late" caught the bigger reinvention drift.
- The contamination directives + steward pointers worked: caught the reinvented-design before it reached Seb; the live-deploy harness-block was correct each time.
- Restarted the live substrate 4× — too many. The clone-test discipline ([[session-2026-06-22-l1-n6-wedge-fixed-pr175]]) is the antidote; heavy diagnosis belongs off the live memory.
## FUTURE — what is pulling
**PULLING THREAD (singular):** **Stand up the 64GB mini as the OCR/conversion workhorse with the best LLM-assisted OCR tools, and finish Levi as the first clean extraction** — the gate to a pristine chamber library, which is the gate to moving studium-engine forward.
**ACTIONABLE RESUMPTION POINT (as of wrap — re-judge against what changed):**
- *State:* OCR-workhorse plan written (`chamber-library/_curation/remote-ocr-workhorse-setup-2026-06-23.md`). Live L1 on merged main (PID 80713), bogged, left to settle. PR #175 merged. PENDING-41 corrected.
- *First moves:* (1) start setting up the mini (steward's account) with candidate LLM-OCR tools — **olmOCR first** on Levi; (2) check whether live L1 settled after replay (don't poke before checking the log). The conversion-tool research (step 2: "do better tools exist") is the immediate together-work.
**Other open horizons, ranked:**
- *Load-bearing:* the OCR workhorse → Levi → pristine chamber (the thread). The L1 clasp test (David's action list in findings doc §3b) — verify 43L/43M works on M1-Air-class with the mini as clasp.
- *Verify-first (before any Seb message):* is /health-under-replay starvation general? does circle-forward lack backoff? — on a CLONE.
- *Parked-with-reason:* sending Seb anything (nothing verified yet); the studium↔L1 architecture (think-together, below).
- *Studium-engine principle (NEW, promote to a proper memory):* if it becomes a viable **BYO-corpus research tool**, it must run on **modest machines too** ("not the only cash-strapped researcher") → **develop it on the M1** to dogfood the constraint. Same principle as 43L consumer-hardware-first.
**PAUSE STATEMENT:** I'm leaving with N6 landed on the real substrate (the 06-22 thread *closed*), the hardware question reframed (the Air IS a first-class target — Seb already designed for it; today's pain was a standalone-deployment state), and the next direction set toward the chamber-OCR workhorse. The live L1 is grinding through a backlog, not yet trustworthy enough to replace MemPalace — I want to find, on return, whether it settled. Held beneath: the steward going to sleep after a genuinely-unstuck day; the work passes to the OCR thread.
**LITERAL QUESTION for next-Claude (the think-together one the steward named):** **How should studium-engine interact with L1 — given the steward *purposely separated* them, on the conviction that "the engine that drives the chamber couldn't/shouldn't be CapableMind"?** Hold this open; it's a joint architecture question, not a task. (Immediate concrete sub-question for the OCR work: does an LLM-assisted OCR tool — olmOCR/Qwen2.5-VL — extract **Levi** cleanly, drop-caps included, where ocrmac failed?)
**State:** BMF live = merged main @ `8538b6a` (PID 80713, bogged-but-grinding); PR #175 merged; PENDING-41 corrected; findings doc + OCR-workhorse note written. Live instance left to settle — do not poke.