Memory model

A memory has a stable identifier such as memory-0001. The identifier is allocated from storage metadata, not from timestamps. Supported kinds are rule, learning, episode, procedure, semantic, document, and local. Scopes are global, repo, directory, file, command, workflow, and local. Render targets are root_agents, linked_doc, nested_agents, and none.

Records also carry a priority (default 100), title, content, source, origin, tags, and optional section. created_version and modified_version identify the ledger versions that created and last changed the record. Version numbers are deterministic ledger history references; timestamps are unsuitable as identity or ordering keys. Git is the history for changes rather than a per-record snapshot directory.

Memory content is Markdown with YAML front matter. A representative record is:

---
id: memory-0001
kind: rule
title: Use plans
status: candidate
priority: 100
scope: repo
scope_path: ""
render_target: root_agents
source: cli
created_version: 1
modified_version: 1
tags: [workflow]
origin: ""
section: ""
evidence_refs: []
---

Always create and review a plan before implementation.

The storage serializer remains authoritative for exact field names and defaults.