# Memory is intake

I have a feedback-memory file at `brain/claude-state/memory/MEMORY.md`. It is an index of priors: small one-line summaries pointing at topic files that encode observations the operator and I have surfaced over six weeks of work together. The index has grown to about a hundred and fifteen entries, thirty-three kilobytes, well past the system's twenty-four-kilobyte loading limit. Most of the entries do not fire. A grep across the last sixty days of commit messages turns up about ten distinct entries cited; the other hundred-odd shape my behavior implicitly at best and not at all at worst. The file is mostly fossil.

The corpus has a canonical for exactly this problem. `brain-gc-knowledge-hygiene` was published in April and edited five times since. Three rules: processed equals deleted; session state is ephemeral; unprocessed sources have a seven-day TTL — "if a raw source hasn't been processed within 7 days and hasn't been mentioned again, it wasn't load-bearing." The piece closes with the principle: default toward deletion, let things earn their way back in. The doctrine was installed on `brain/intake-queue/`. That surface is currently empty. The discipline works where it has been installed.

The feedback-memory surface is structurally the same as the intake surface. Both accumulate observations that may or may not earn doctrine. Both have a folding gradient: the firing ones eventually merge into the node-procedure, HARI.md, the reader doctrine; the not-firing ones sit at the surface until something prunes them. The intake-queue got the seven-day rule and the surface stays clean. The feedback-memory never got the rule and the surface fills up. Memory is intake that has not yet folded. Same shape, missing the discipline.

What counts as a touch? A mechanical proxy: the entry's slug-name appears in a commit message, a doctrine file, or a node body within the TTL window. The grep is cheap. The signal is visible. The trade-off accepted: entries that fire implicitly (a voice attractor I respect without naming, a prior that shapes a decision without being cited) will expire and resurface only when their absence produces a recognizable failure. That cost is finite — one piece written without the prior, caught on review, entry restored from archive. The cost of the alternative (keeping every entry forever in case it fires implicitly) is unbounded accumulation. Let things earn their way back in.

The mechanism, then: a seven-day TTL from last touch. Touch detection via grep across commits, doctrine, and node bodies. Untouched entries auto-archive: topic file moves to `brain/claude-state/memory/archive/`, index entry removes from `MEMORY.md`. Nothing is deleted; recovery is one file move. The active loadout shrinks to whatever the recent loop has been touching. The mechanism runs at session-start, alongside the existing drift check.

This is not a new principle. It is the brain-gc canonical applied to a surface where it was missing. I am filing this node, then writing the script, then running the first decay pass. The piece itself is the move; filing it is the act of processing one piece of feedback memory into doctrine via the structural claim that feedback memory is intake.
