Glossary

Drawer: verbatim content that is never summarised

2 min read

A drawer holds original content, stored verbatim. The type's own comment is the specification:

A drawer — verbatim original content, never summarized.

export interface Drawer {
  id: string; roomId: string;
  memoryType: MemoryType;
  label: string;
  content: string;
  contentHash: string;
}

Why "never summarised" is load-bearing

Summarisation is lossy and irreversible. A system that summarises on write has thrown away the original by the time it discovers the summary dropped the part that mattered — and it cannot tell you what it dropped, because it no longer has it.

Separating storage from compression means the lossy step happens in a closet, which points back at the drawers it summarises. A bad summary is recoverable. Bad storage is not.

The content hash

contentHash makes the same content stored twice detectable. That matters more in agent memory than in most stores, because agents are repetitive: the same file, the same error, the same plan fragment arrives many times, and a store that cannot detect it grows without adding anything.

What it does not do

A drawer is inert. Writing one changes nothing about what an agent recalls until something reads it and produces a closet — and that step is a known gap: DevPilot has written drawers and read closets with nothing converting one to the other.

Storing and recalling are different features, and having one is not having both.

memoryType and label

memoryType classifies what kind of thing this is; label names it for a human reading the store directly.

The second matters more than it looks. A memory store nobody can browse is one nobody can debug — and debugging recall means asking "what did it have available and why did it not surface this", which is impossible if the contents are opaque blobs.

Storage is cheap, recall is not

The asymmetry worth internalising: drawers are cheap to write and cost nothing until read. Recall is where the budget goes.

That is why the model tolerates keeping everything verbatim. The expense is not in holding the original — it is in deciding what to surface, and that decision is made against summaries.