Architecture decisions
Numbered records of the decisions that shape Mnemosyne, and why they went the
way they did. Format: 0000-template.md.
An ADR is Accepted before code is written for anything touching the on-disk format, the object model, a public API surface, the merge algorithm, the Rust and Python boundary, or a new dependency. Accepted ADRs are immutable; a later change is a new ADR that supersedes the old one.
Naming note: ADRs 0001 to 0018 call the core crate
mnem-coreand the CLI cratemnem-cli. Because those names were already taken on crates.io, before the first publish the core crate becamemnem-storeand the CLI cratemnem-git(the binary is stillmnem); the published packages aremnem-store,mnem-git, and on PyPImnem-agents,mnem-mcp,mnem-langgraph.import mnemand the.mnem/store directory are unchanged. See theCHANGELOG.mdentry under Unreleased.
| ADR | Title | Status |
|---|---|---|
| 0001 | Record architecture decisions | Accepted |
| 0002 | On-disk object format | Accepted |
| 0003 | The memory node model | Accepted |
| 0004 | The Rust core and Python SDK boundary | Accepted |
| 0005 | Commit identity, hashing and signing | Accepted |
| 0007 | Versioning and release policy | Accepted |
| 0008 | Object encoding and the store engine | Accepted |
| 0009 | The ref model | Accepted |
| 0010 | What 1.0 means, and the 0.0.x roadmap | Accepted |
| 0011 | Conventional commits and the issue lifecycle | Accepted |
| 0012 | The branch and checkout model | Accepted |
| 0013 | The deterministic merge algorithm | Accepted |
| 0014 | The conflict object and the resolution API | Accepted |
| 0015 | The provenance index, blame and bisect | Accepted |
| 0016 | The MCP tools and the adapter contract | Accepted |
| 0017 | The benchmark and its metrics | Accepted |
| 0018 | The Era 2 seam: the semantic merge trait and the sync protocol | Accepted |