basic BMAD setup
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user