Tiers & cost
Four tiers, one budget
One turn’s block, drawn to scale against the ceiling it has to fit inside: what each tier costs, and how much of the window is left for the task rather than for the memory.
The tiers
What each one holds, and what it costs
L0PinnedUnresolved contradictions, per-domain reliability, and any correction caught in the message being answered.
When the agent must not guess, or must be careful in a domain it has been failing in.
L1Hot cacheFacts pre-staged for the work in front of it. A new fact lands here immediately.
Default home for everything you tell the service.
L2Warm storeIndexed candidates, scored against each turn and promoted if they earn it.
Facts that are true but not currently relevant.
L3Cold archiveEverything else, still searchable, still recallable on demand.
History. Retrieved by a question, never by the context builder.
Injection reasons
Four reasons a line is there
Every line carries the rule that selected it. Four reasons is a small enough set that a token bill can be attributed, which is what makes analytics an argument rather than a decoration.
indexA single gist line.The default, and what almost every memory costs. 200 memories index for ~1.3k tokens.triggerThe full body.You named something concrete the transcript does not already contain — a build id, a host, a path — and a memory mentions it. No model decides this.tensionThe full body.Two stored claims contradict each other. A contradiction is a question to ask, not trivia to skim.guardrailThe full body.A domain this agent has been measurably unreliable in.—Nothing.Above the index budget. The report says so rather than quietly dropping the tail.measured, 200 memories
Same 200 facts. 77% fewer tokens, and the window keeps its room for the actual task.
Chroma’s 2025 context-rot report measures accuracy falling as input length grows, with the damage coming from topically-related distractors rather than from structure.
Reproduce with pnpm measure.
Reading your own bill
The shape of the spend tells you what to fix
Mostly index lines, no bodies
Not a budget problem. A store with nothing worth promoting, and the opposite fix — promote more, do not raise the ceiling.
One trigger body per turn
Healthy. Something concrete was named each time and exactly one memory earned a full body.
truncated: true on most turns
The ceiling is doing its job and the store is larger than the window. Raise it, or accept a smaller hot set — both are legitimate, neither is silent.
A tension on every build
Something is being contradicted often enough to pin itself into every prompt. That is a queue for a human, not a budget.
The dashboard splits the spend by the same four rules, per endpoint and per key. The dashboard reference →
Read on