Short, dated records of non-trivial architectural decisions. One file per decision, never edited after the status becomes Accepted (a superseding ADR is written instead).
Each ADR follows the Michael Nygard lightweight template:
# NNNN — Short title
**Status**: Proposed | Accepted | Deprecated | Superseded by ADR-XXXX
**Date**: YYYY-MM-DD
## Context
What forces the decision.
## Decision
What we are doing.
## Consequences
Positive and negative outcomes.
## Alternatives considered
Briefly, with the reason each was rejected.
| # | Title | Status |
|---|---|---|
| 0001 | Monorepo with Bun workspaces | Accepted |
| 0002 | Local-first SDK before hosted API | Accepted |
| 0003 | Systematic operating procedure | Accepted |
| 0004 | Local-first embedding strategy | Accepted |
| 0005 | Encryption envelope (v0.0.3) | Accepted (superseded in part by ADR 0006) |
| 0006 | Recovery phrase and signed writes | Accepted |
| 0007 | MCP server design | Accepted |
| 0008 | Sync engine design | Accepted |
| 0009 | Multi-device pairing ceremony | Accepted |
| 0010 | WebSocket transport for sync and pairing | Accepted |
| 0011 | npm publishing strategy | Accepted |
| 0012 | Distiller architecture (LLM-powered memory extraction) | Accepted |
| 0013 | Eval harness for distiller extraction quality | Accepted |
| 0014 | Dual-matcher eval (keyword + LLM-as-judge) | Accepted |
| 0015 | Comparative eval — scoring competitor systems against our corpus | Accepted |