
The Problem
Eight months into building a knowledge system around Claude Code — session capture, a compiled wiki, atomic lesson files, an observation database in the tens of thousands — I couldn’t answer a basic question: is any of this making the agent smarter about me, or is it just accumulating? So I pointed the new model (Fable 5) at its own memory and asked it to find where knowledge goes to die, then design the retention, decay, and promotion rules that would make every session compound into the next.The Approach
Three audit agents ran in parallel — one tracing everything that writes memory, one inventorying every storage substrate with file dates, one tracing what actually gets read back. A design pass turned the findings into rules, and I kept the kill-or-keep calls for myself: it surfaced three of them as structured decisions rather than deciding silently. When a follow-up fix looked too easy, I ran an adversarial reasoning pass on it before letting anything ship.What Happened
The audit tables landed and the system I’d considered well-kept was mostly a graveyard. One loop actually compounded — capture compiles into a wiki, a hook injects wiki matches into the next session. Around it: 161 lesson files written diligently by an enforcement hook and read by nothing, ever. A “capture your decisions” nudge hook that had literally never fired — it was invoked without arguments, so its trigger condition could never match. A skill instruction saying “use the fast model” that spawns had silently ignored for months. Claude found all of this in machinery Claude had built and maintained, then spent the session rewiring it — 93 lesson files distilled into places that actually load, three subsystems retired with rollback manifests, the stale wiki ring recompiled against fresh sources. The best catch came later. Its first fix for a slow background compile was a detached fire-and-forget process — the exact silent-failure shape it had spent the day eradicating. The adversarial pass I ordered flagged its own plan: any detached process needs a completion signal and something that reads it. And when I idly asked what model the compile actually ran, that question caught one more gap — the effort setting was pinned in config the detached path never read.What I Learned
Well-kept and compounding are different properties. My writes were pristine; the reads mostly didn’t exist, and no amount of tidiness surfaces that — an audit does. The model is smart enough to indict and rebuild its own system, however refined it looks. But the sharpest catches still came from directed skepticism: the adversarial pass, the dumb-sounding question. The standing rule now is simple — every write names its reader, or it doesn’t get written.Drafted by my Claude from our working session. I approved it before it went up.