# Architecture Decision Records

Architecture Decision Records (ADRs) capture significant, hard-to-reverse decisions about the Sandloom framework — the context that forced the decision, the decision itself, and its consequences. They are living documents: superseded ADRs are kept for history and marked accordingly.

| ADR | Title | Status |
| --- | --- | --- |
| [0001](<https://sandloom.dev/docs/adr/0001-framework-distribution/index.md>) | Framework distribution &amp; packaging | Accepted |
| [0002](<https://sandloom.dev/docs/adr/0002-framework-absorbs-module-boilerplate/index.md>) | The framework absorbs per-module boilerplate | Accepted |
| [0003](<https://sandloom.dev/docs/adr/0003-fewer-sync-rpc-membership-reads/index.md>) | Fewer synchronous RPC calls in split deployments — membership reads first | Proposed |
| [0004](<https://sandloom.dev/docs/adr/0004-rpc-pair-mac-request-authentication/index.md>) | Internal RPC request authentication with per-pair HMAC keys | Accepted (draft) |
| [0005](<https://sandloom.dev/docs/adr/0005-effect-model/index.md>) | One effect model — guarantees, the dedupe record and the commit pipeline | Accepted |
| [0006](<https://sandloom.dev/docs/adr/0006-accepted-risks/index.md>) | One accepted-risks list instead of prod opt-out flags | Accepted |
| [0007](<https://sandloom.dev/docs/adr/0007-kernel-layers/index.md>) | Kernel layers and an acyclic kernel, enforced by import contracts | Accepted |
| [0008](<https://sandloom.dev/docs/adr/0008-sagas/index.md>) | Sagas — a small orchestrator over the existing effect primitives | Accepted |
| [0009](<https://sandloom.dev/docs/adr/0009-route-policy-and-session-freshness/index.md>) | Route policy follows authority and effect: deny-by-default, live sessions, no route classes (amends 0003) | Accepted |
| [0010](<https://sandloom.dev/docs/adr/0010-public-api-1.0/index.md>) | Public API 1.0 — one `sandloom.sdk` namespace, three API levels, derived declarations (amends 0005, 0007, 0009) | Proposed |
| [0011](<https://sandloom.dev/docs/adr/0011-driver-api/index.md>) | The driver API — two doors for one contract, drivers found by name | Accepted |
