Expand description
Shared conversation archive types (used by mur-core, mur-commander).
JSONL row format version 1. See
docs/superpowers/specs/2026-04-19-mur-conversations-design.md §4.1.
§Schema versioning
Every Message carries v: u32 (current: CONVERSATION_SCHEMA_VERSION).
This is intentional — schema evolution for a durable archive must be explicit.
§When to bump
Bump CONVERSATION_SCHEMA_VERSION ONLY when:
- A required field is renamed or removed, OR
- A field’s semantic meaning changes (e.g.,
tsinterpretation shifts from Utc to local), OR Contentgains a variant that older deserializers cannot safely ignore.
Adding a new optional field with #[serde(default)] does NOT require a bump.
§How to bump
- Add a schema migrator in
mur-core/src/conversations/migrate_schema.rsthat takes any JSON row and rewrites to the new schema. - Wire it into the store’s append/read paths so older lines in the same
file still deserialize (via serde
untaggedor custom visitor). - Keep the previous version’s deserializer functional for at least one minor release.
- Bump
CONVERSATION_SCHEMA_VERSION.
§Backward reads
mur-core::conversations::store::read_day must always migrate legacy rows
before constructing a Message so older on-disk JSONL still works.
Structs§
- Message
- One line in
~/.mur/conversations/raw/<date>/*.jsonl.
Enums§
- Content
- Message body.
ToolRefandImageRefare content-addressed pointers (spec §4.3 pointer substitution) to blobs stored under~/.mur/conversations/blob/<sha256>. - Role
- Source
Constants§
- CONVERSATION_
SCHEMA_ VERSION - Current conversations JSONL schema version. Bump only per the rules in this module’s top-level doc comment.