diff --git a/Memory.md b/Memory.md index c6d1eae..c055893 100644 --- a/Memory.md +++ b/Memory.md @@ -95,11 +95,22 @@ Each drill file has YAML frontmatter: name: project_compliance description: Compliance constraints driving the auth rewrite type: project +created: 2026-05-12 +updated: 2026-07-03 --- We must store session tokens server-side per the 2026 audit. ... ``` +`created` and `updated` are stamped automatically by `memory__write` (creation date is preserved across overwrites). +Two more optional fields track staleness: + +- `superseded_by: ` - this memory has been replaced by another drill file +- `expires: YYYY-MM-DD` - this memory stops being true after a known date (e.g. an API freeze window) + +Both are settable via optional arguments to `memory__write`, and `memory__lint` flags superseded and expired files so +the LLM (or you) can clean them up. + `MEMORY.md` is what gets injected on every prompt. It serves two purposes: 1. **An index** of available drill files (one line per file: name + description) 2. **A home for universal facts** the LLM should always see (user identity, hard rules, binding feedback) @@ -124,10 +135,16 @@ categorize its own writes and so you can grep by category. When function calling is enabled, coyote exposes: - `memory__read(name)`: read a specific drill file by its slug -- `memory__write(name, description, content, scope, type)`: create or replace a drill file (`scope`: `global` | - `workspace`) +- `memory__write(name, description, content, scope, type, superseded_by?, expires?)`: create or replace a drill file + (`scope`: `global` | `workspace`). Timestamps are stamped automatically; the response reports whether an existing + file was replaced (and its previous description) so accidental overwrites are visible. +- `memory__rename(name, new_name, scope)`: rename a drill file. Its `MEMORY.md` entry and every `[[wikilink]]` to it + in other memory files are rewritten automatically. +- `memory__delete(name, scope)`: delete a drill file and remove its `MEMORY.md` entry. Reports any `[[wikilinks]]` in + other files left dangling by the deletion. - `memory__list()`: see all known drill files with metadata -- `memory__lint()`: health-check (orphans, broken `[[wikilinks]]`, oversized files >2K chars) +- `memory__lint()`: health-check (orphans, broken `[[wikilinks]]`, oversized files >2K chars, stale files that are + superseded or expired, and index descriptions that drifted from the file's own `description:`) The LLM is instructed to update `MEMORY.md` whenever it writes a new file. Two silent promotions can happen on a `memory__write(scope=workspace)`: