Architecture Decision Records¶
Snodo design decisions extracted from the development audit log and .snodo/bootstrap/decisions.md. Each ADR follows the Nygard format: Title, Status, Context, Decision, Consequences, Alternatives. One page or less each.
| ADR | Title | Date | Audit-log anchor |
|---|---|---|---|
| 001 | PyJWT over custom HMAC signing | 2025-05-27 | Task 7.7 (tokens.py) |
| 002 | Warn withholds approval in policy thresholds | 2025-06-01 | Policy semantic fix (policy.py) |
| 003 | ESCALATE as halt → resolve → resume | 2025-05-27 | Task 7.10 (loop.py) |
| 004 | Constraint predicate framework | 2025-05-27 | Task 7.8 (predicates/) |
| 005 | Protocol-adherence validator from mode profiles | 2025-05-27 | Task 7.11 |
| 006 | Severity cap for validators under evaluation | 2025-05-31 | Task 7.17 (models.py) |
| 007 | Coder adapter + code-host provider pattern | 2025-05-25 | Tasks 4.10, 4.6 |
| 008 | File-backed session checkpoint over in-memory state | 2025-05-27 | Task 7.3 (session.py) |
| 009 | FastMCP over custom MCP transport | 2025-05-25 | Task 4.5 (transport.py) |
| 010 | GitPython over subprocess for git operations | 2025-05-25 | Task 4.7 (git.py) |
| 011 | Typer over argparse for CLI | 2025-05-25 | Task 4.8 (main.py) |