The small facts are the ones users check
The summary is good. Months of conversation are represented, the themes are right, the character refers back to things accurately. Then it uses the wrong name, or the wrong form of address, and the entire impression of continuity collapses in one word.
Not all state is equally load-bearing. A small set of details carries most of the perceived continuity, and most designs treat every fact as equivalent.
Salience is not proportional to size
The details that get checked are short, repeated and unambiguous. A name. How someone prefers to be addressed. One or two stated facts that came up early and have been referenced since. What the character calls itself. These occupy almost no space and are noticed on every turn they appear in.
The details that are long and vague — the texture of what has been discussed, the general shape of a history — are exactly what a summary preserves well. So the usual outcome is a system that reliably keeps what nobody verifies and probabilistically keeps what everyone does.
The asymmetry gets worse under compression. A name is a specific, and compression destroys specifics first. Leaving high-salience details to a summarisation pass means the parts of the state with the highest failure cost are held by the mechanism with the highest loss rate for that kind of content.
The design conclusion is unglamorous: a small number of details should be pinned in state that cannot be compressed, dropped or rewritten, and everything else can be left to the lossy mechanisms. The interesting question is not how to remember more. It is which handful must never be lost.
Choosing the pinned set is the whole decision
A pinned set is a fixed cost on every input, forever, so its size is a real budget rather than a formality. Three properties make a detail worth a slot.
It is verifiable by the user in a single turn. Anything the user can immediately check is anything that can immediately be wrong in a visible way.
Getting it wrong is qualitatively different from forgetting something. A forgotten topic reads as limited memory. A wrong name reads as a different entity wearing the same label, and it retroactively discredits the recall that was working.
It does not change often. Pinned state is the wrong place for anything volatile, because pinned values are the hardest to update — they are included on every turn and reinforced by every response written under them, which is the durability that makes an error expensive.
What that rules out is most of what teams want to pin. Recent activity, current circumstances, this week’s preoccupation: all high-value, all volatile, all better handled by the recent window that already carries them. The pinned set should be boring and nearly static, and if it is growing steadily it has stopped being a pinned set and become an unbounded fact store with extra ceremony.
The character’s own small facts belong in it too, and they are usually assumed rather than stated. What it calls itself, how it refers to the user, the couple of self-facts that come up constantly — these live in the authored definition and drift with everything else in it, and pinning them separately is what stops a character from quietly renaming itself at turn four hundred.
Repetition is not the same as pinning
The obvious alternative to pinning is relying on the recent window: a name used every few turns is always in the last few turns. That works while the conversation is dense and fails precisely at the moment that matters — the return after a gap, the resumption after a rebuild, the first turn of a session. Those are the turns where perceived continuity is decided, and they are the turns with the least recent material available.
There is a second failure worth naming. If a detail is present only because the model keeps repeating it, then an error in it is self-sustaining: a name mistyped once is now the name in the recent history, and the next turn copies it. Pinned state does not have this property, because the value is re-supplied from a store each turn rather than inherited from output.
The turn
THE TURN — pinned details
· Leave every fact to the general
mechanisms
→ nothing extra to design, and the details
with the highest failure cost sit in the
lossiest place.
· Pin a small fixed set
→ the checkable details survive gaps,
rebuilds and session starts.
· A pinned value is durable both ways
→ a wrong pinned value is reinforced every
turn and is the hardest kind of error to
dislodge.
· Pinned state
→ PAID EVERY TURN, unconditionally, on
every conversation including the ones
that would not have needed it.
· Pinning does not improve memory
→ it protects a handful of details and
leaves every other loss profile exactly
as it was.
Detection
Measure these details as their own metric, not as part of a general memory score. A pass rate over five pinned details is a number you can hold to a very high standard, and pooling them with everything else makes that impossible.
Probe at the hard moments rather than mid-conversation: first turn of a resumed session, first turn after a summary rebuild, first turn after a long gap. If a pinned detail is going to be missing, it will be missing there, and a probe suite that only tests mid-conversation will report success.
In live traffic, the cheapest signal is the user correcting a detail. Corrections of small facts are short, distinctive and worth counting separately from other complaints, because they indicate a specific mechanism failing rather than general memory limits.
Watch for self-sustaining errors. Compare the pinned value in the store against the value appearing in responses over a conversation. Divergence between the two means the model is inheriting a value from history rather than from state, and once that starts it will not correct itself.
What this costs and what it doesn’t fix
A pinned set is the clearest example of a fixed per-turn charge in persona work: a handful of details in every input for the life of every conversation, including the short ones. It is small, it is permanent, and it is the easiest thing to let grow — each addition is individually trivial and the total is paid on every message.
It does not make the character remember. It protects the details on which memory is judged, which is a different and more achievable goal. Everything else still degrades on the schedule its mechanism dictates: the window still has a hard edge, the summary still loses specifics, extraction is still blind to what it did not capture. Pinning buys you a floor under the most visible failure, and users who probe past those five details will find the same losses that were always there.