Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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-core and the CLI crate mnem-cli. Because those names were already taken on crates.io, before the first publish the core crate became mnem-store and the CLI crate mnem-git (the binary is still mnem); the published packages are mnem-store, mnem-git, and on PyPI mnem-agents, mnem-mcp, mnem-langgraph. import mnem and the .mnem/ store directory are unchanged. See the CHANGELOG.md entry under Unreleased.

ADRTitleStatus
0001Record architecture decisionsAccepted
0002On-disk object formatAccepted
0003The memory node modelAccepted
0004The Rust core and Python SDK boundaryAccepted
0005Commit identity, hashing and signingAccepted
0007Versioning and release policyAccepted
0008Object encoding and the store engineAccepted
0009The ref modelAccepted
0010What 1.0 means, and the 0.0.x roadmapAccepted
0011Conventional commits and the issue lifecycleAccepted
0012The branch and checkout modelAccepted
0013The deterministic merge algorithmAccepted
0014The conflict object and the resolution APIAccepted
0015The provenance index, blame and bisectAccepted
0016The MCP tools and the adapter contractAccepted
0017The benchmark and its metricsAccepted
0018The Era 2 seam: the semantic merge trait and the sync protocolAccepted