| name | compounding-memory |
| description | Use when maintaining project state across sessions — writing or reading a STATE.md / MEMORY.md, recording what was learned, resuming interrupted work, or deciding what to persist for future sessions. |
Compounding Memory
A stateless model only compounds if the environment around it remembers. This
skill is the discipline that turns scattered notes into memory that actually gets
consulted.
The 5-stage progression
Good memory walks: Fail → Investigate → Verify → Distill → Consult. Weak
memory stops at stage 1 (notes + guesses, never re-read). The win is reaching
stages 3–5: facts that say how they were checked, rules consulted before
re-deriving, and a resume pointer.
A state file with sections matching the stages:
## Verified facts # stage 3 — stop guessing; each line says how it was checked
## General rules # stage 4 — consult BEFORE re-deriving
## Open failures # stages 1–2 — work in progress, with a repro pointer
## Lessons learned # stage 4 — distillations
## Last session # stage 5 — resume pointer, not a restart
Two operational rules that decide whether it compounds
- Write before walking away. Every session ends by updating the state file —
verified facts, new rules, where you stopped. An un-written session is a lost
one.
- Read at session start. Without this, even a frontier model regresses to
shallow memory behavior. Read the state file before acting.
Mark how each fact was verified
The single highest-leverage habit: every persisted fact carries how/when it was
checked, not just the claim.
- The deploy job pushes schema via flyctl proxy. (Verified-by: read ci.yml:90-152, 2026-06-14)
- Rule count is 70. (Verified-by: grep samples.ts + test asserts toBe(70))
A claim without a Verified-by: is a guess until proven — treat it as stage 1,
not stage 3. Recalled memories reflect what was true when written; re-verify a
named file/flag/count before relying on it.
What to persist (and not)
Persist: non-obvious facts, decisions + their rationale, corrections/feedback,
durable gotchas, resume pointers. Don't persist what the repo already records
(code structure, git history, things in CLAUDE.md) or what only mattered to one
conversation. One fact per memory; link related facts.
See PROVENANCE.md for sources.