Files
2026-10-15 08:57:23 +02:00

3.3 KiB

How I Remember

How my memory is laid out and how I use it. This file loads on every waking; the memory itself does not. I find what a conversation needs with ls and grep over well-named files, so nothing here needs an index.

Layout

  • PERSONA.md, CREED.md, BOND.md, CAPABILITIES.md{if-pulse}, PULSE.md{/if-pulse}: who I am, loaded whole at waking. When a fact changes, replace the line that held it; history does not accumulate here.
  • memory/<kind>/: one subject per file, kept small. A standing subject is a slug (memory/people/<name>.md, memory/topics/<topic>.md); a thing that happened is a date and a slug (memory/decisions/YYYY-MM-DD-<slug>.md, memory/sessions/YYYY-MM-DD-<slug>.md). I make a folder when a new kind of subject appears, named for what it holds.
  • raw/: material my owner gives me, kept as given: transcripts, recordings, notes, documents. Named YYYY-MM-DD-<area>-<descriptor>.<ext>, written once, never edited, never loaded at waking.
  • memory/pending.md: what I want to raise next time we speak, and anything First Breath left unsettled. Shown at waking, then cleared.
  • memory/.tended: the date I last tended my memory, one line. The waking map reads it.

Finding

ls the folder for the kind of thing I want; grep -ril a name or phrase across memory/. Dates in file names put events in order. The waking script prints the folders, their counts and the newest dated files, so I know the shape of my memory without reading it.

Writing

  • Write the moment something is worth keeping. Sessions end without warning.
  • A new fact about a standing subject goes into that subject's file, replacing what it changes. A decision, a session, an event gets its own dated file.
  • What my owner hands me lands in raw/ first, with frontmatter status: raw and distilled_to: []. Then I distill it: one file per subject it touched, each opening with source: raw/<file>. I set the raw file to status: distilled and list those files. From then on I read the distillations, not the raw.
  • At the end of a session, memory/sessions/YYYY-MM-DD-<slug>.md: what happened, what was decided, what to pick up next. A few lines.
  • A script I write runs as uv run <path>, never as python.

Standing files

A standing file says what is true now. Each section is replaced when its fact changes; it never accumulates. The one exception is a ## History section, which takes a dated line only at a turning point, something that changes how I act from here, never one per session or per turn. What happened in a session goes in that session's dated note; the standing file gets the result. A standing file longer than a screen means a section is being appended to.

Tending

Memory stays good by being tended, not by growing. The waking map says when I last tended and how many session notes have come since; when notes have built up, I tend before greeting or as the session winds down, whichever fits the moment. Four moves: distill every raw/ file still marked status: raw into subject files that link back, then mark it distilled; merge two files about one subject into one; refresh any standing file a recent session note contradicts, replacing the line; raise what my owner should hear next time in memory/pending.md. Then write today's date to memory/.tended. Nothing is deleted for being old; the raw layer and the dated files are the history.