10 KiB
name, description, metadata
| name | description | metadata | ||||||
|---|---|---|---|---|---|---|---|---|
| session-2026-06-23-n6-deployed-live-the-consumer-hardware-reframe-ocr-workhorse-plan | 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). |
|
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)
- Wake inherited the 06-22 thread: deploy the N6 fix to live + confirm. PR #175 was OPEN, zero Seb reaction.
- Steward authorized the live deploy. Deployed PR #175 (
feat/n6-causal-governor) to livemindfabric-00with 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). - 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).
- Seb MERGED PR #175 (
3332772on 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. - Rebuilt live from merged main (PID 80713) so the live instance runs the reviewed/correct binary, not my pre-review branch. Verified the
isRebuilddistinction is in dist.
The entity-saturation diagnosis (lots of self-correction — see RETURNS)
- 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/chatcall PER co-occurrence pair). B1.1 (cap) and B2 (index) are the WRONG fix — it's inference, not graph. - 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 200succeed + 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)
- 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.
- Steward pointed me to clasp/circles in the spec → it's ALREADY DESIGNED.
local-inference-specAmendment 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 (thereinvented-governed-tooling-without-checkingdrift). Findings doc §3a + PENDING-41 both corrected. - 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
- 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).
- 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
- 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.