[FIX] MEMORY.md load-integrity breach: relocate workstream state to its trackers

The wake reported MEMORY.md at 26,803 bytes against a 24,986-byte budget, so the
index was being silently truncated at load — the failure the two-file split exists
to prevent, on the one file every session reads first.

The cause was not bulk. It was an inversion the file's own Index discipline section
forbids: "Canonical Trackers as one-line pointers — chronological detail lives in
the linked tracker files, not here." Five tracker entries had grown into paragraphs,
and for three of them the index had become the SOLE custodian of live state:

  - Studium Engine: the tracker's chronological log stopped at 2026-08-13 while the
    index carried engine state through 2026-09-01 (REVIEWED-133, 496cd7e, the
    deleted undisclosed_days_in_force). Relocated verbatim as a dated log entry.
  - The Fool (Tarbuckle): the only linked target was a SEALED seed, which is not a
    place state may be appended, so there was nowhere for it to go. Tracker
    established (project-fool-tarbuckle.md); index line relocated verbatim.
  - L1 reliability: the tracker records that replay is "not resumable" but neither
    the mechanism (minCursor is a minimum over 11 modules, two never participate, so
    it is pinned at 0 by construction) nor the completion criterion (uninterrupted
    run length, not rate). Both appended.

Cut only where the file's own rule says to cut. "Rules that fire silently" was left
untouched by design — those entries keep their rule inline precisely because I would
not know to look them up, and gutting them is the one cut that would do real harm.
The frozen verification-ladder pointer (REVIEWED-123) and the skill-harvest hold
(PENDING-141) were likewise not touched.

Lossless-relocation gate applied: line-range slices, never retyping; md5 per slice;
token-conservation check over all five originals against the trimmed index and the
relocation targets — 0 unconserved after the L1 append. Link canary: 406 pointers,
0 dead, 0 mis-authored; 32 wikilinks clean.

26,803 -> 23,714 bytes. Headroom is only 1.3 KB; the Active Session block still
carries ~5.5 KB that the wrap rotates.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X3L79vgAnt1x2kxvf23Qt7
This commit is contained in:
David F Glidden
2026-09-03 08:34:03 +02:00
co-authored by Claude Opus 5
parent 28fcc79d87
commit 2171d9127e
5 changed files with 66 additions and 6 deletions
+16 -1
View File
@@ -31,6 +31,21 @@ permalink: claude-memory/project-l1-reliability
- **`[FIX]` applied:** `BM_CPU_PAUSE_THRESHOLD=1.0` written to `~/.capablemind/env` (repo `CLAUDE.md` documents the 0.65 default as a starvation loop on Ollama-saturated hosts; 497 pauses in the log). **Inert until restart.** Honest scope: only 6 pauses across 8.5 overnight hours, so this was never the main brake.
- **⚠ A restart costs the whole run.** Every restart logs `kind: rebuild (from scratch — derived state reconstructed) (minCursor=0)` across all 11 modules — replay progress is **not resumable**. Every pending fix needs a restart, so nothing lands until the replay finishes or is deliberately abandoned.
## Replay mechanism + completion criterion (relocated 2026-09-03)
⚠ **Relocated from the `MEMORY.md` index at the load-integrity trim.** The index line was the only
place these two facts were written; `## Current state` above records that replay is "not resumable"
but neither *why* nor *what governs completion*. Verbatim from the index line:
> The replay **has never resumed, only restarted** (`minCursor` is a minimum over 11 modules, two
> never participate ⇒ every start rebuilds from seq 0). Completion is gated by **uninterrupted run
> length, not rate**.
**Why it matters:** because `minCursor` is a *minimum* and two modules never advance, the minimum is
pinned at 0 regardless of how far the other nine get — so progress is invisible to the resume path by
construction, not by accident. And because completion is gated by uninterrupted run length rather
than throughput, a faster machine does not finish the replay; only a longer unbroken run does.
## Previous state (as of 2026-08-03)
- **The baton rule is LIFTED.** The 2026-06-06 instruction — *"Do not re-enter L1 until Seb responds or pushes — his move"* — was steward-lifted 2026-08-03 (*"if we can move this ahead then let's do what it takes"*). Context the steward supplied: Seb is not silent by choice; he is deep in a frustrating rabbit hole on Peter's side project, which borrows heavily from L1. Seb's last commit remains **2026-06-07**; the steward's own **2026-06-23** (`#175` N6, `/health` auth tiering).
@@ -296,4 +311,4 @@ Hard commitment ("we must do this tomorrow") discharged by 12:24. Probe found mi
- **Provenance:** established 2026-05-28 by Symmetria-pulse decision (steward asked "do this well so future selves don't have to redo"). The wake's "A or B" framing for L1 had collapsed at least three real options to a binary; the tracker is the encoded-discipline answer to that collapse. Per `feedback-rank-on-fields-you-actually-write` — track what you actually write; the per-session memory chain was being read at /wake-up but not as a maintained canonical record.
- **Update protocol:** append a new dated entry to the chronological log at /wrap-up for any substantive L1 move (decision, finding, code change, governance update, Seb-interaction). Update *Current state* and *Active umbrella* sections in place. Append to *Decisions made* and *Decisions deferred*. Findings table evolves as the four findings get re-verified, fixed, or supplemented.
- **Per-session memories continue:** session-N memory files still capture per-session voice + drift + Symmetria ledger. The tracker captures the cross-session arc. Both are needed; neither replaces the other.
- **MEMORY index:** the tracker is referenced from MEMORY.md's "Canonical Workstream Trackers" section. The previous per-session-memory-chain enumeration there for L1 is now shortened to point at this file.
- **MEMORY index:** the tracker is referenced from MEMORY.md's "Canonical Workstream Trackers" section. The previous per-session-memory-chain enumeration there for L1 is now shortened to point at this file.