> ## Documentation Index
> Fetch the complete documentation index at: https://internal.softcrum.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Architecture Decision Records

> Single cross-cutting series for the whole platform (DEC-I4) — ADRs are not per module. Use TEMPLATE.md for new entries. Status flow: Proposed → Accepted → Superseded.

> ⚠️ **ADR-001 … ADR-008 are reconstructions awaiting validation**, not recovered originals. Each
> tags its claims as derived, inferred or proposed. See
> [`../constitution/founding-constitution.md`](/constitution/founding-constitution).

| ADR                                                  | Title                                                        | Status              | Decides               |
| ---------------------------------------------------- | ------------------------------------------------------------ | ------------------- | --------------------- |
| [001](/adr/adr-001-monorepo-and-closed-stack)        | Monorepo, closed stack and vendor policy                     | **Reconstruction**  | R1, R4, R5            |
| [002](/adr/adr-002-multi-tenancy-model)              | Multi-tenancy: shared schema, RLS, cell-ready                | **Reconstruction**  | R6, R7, R8, R9        |
| [003](/adr/adr-003-hexagonal-and-ports)              | Hexagonal architecture and the closed port list              | **Reconstruction**  | R1, R2, R3            |
| [004](/adr/adr-004-transactional-outbox)             | Transactional outbox as the only event path                  | **Reconstruction**  | R13                   |
| [005](/adr/adr-005-better-auth-organizational-realm) | Better Auth for the organizational realm                     | **Reconstruction**  | —                     |
| [006](/adr/adr-006-entitlements-engine)              | Entitlements engine: plans gate capabilities                 | **Reconstruction**  | DEC-G2                |
| [007](/adr/adr-007-pusher-realtime)                  | Pusher for realtime                                          | **Reconstruction**  | —                     |
| [008](/adr/adr-008-billing-and-merchant-of-record)   | Billing: dual merchant of record + SII documents             | **Reconstruction**  | DEC-G4                |
| [009](/adr/adr-009-customer-core-shared-context)     | customer-core as shared bounded context                      | Proposed            | DEC-B1                |
| [010](/adr/adr-010-member-identity)                  | Member identity: separate Better Auth realm + token exchange | Proposed            | DEC-D5                |
| [011](/adr/adr-011-points-ledger)                    | Points ledger: immutable, dual currency, FIFO lots           | Proposed            | —                     |
| [012](/adr/adr-012-segment-dsl)                      | Segment DSL v1 + incremental evaluation                      | Proposed            | DEC-G5                |
| [013](/adr/adr-013-ingestion-pipeline)               | Ingestion pipeline: fast-ack + queue + idempotent processor  | Proposed            | DEC-D7, DEC-B8        |
| [014](/adr/adr-014-billable-metric)                  | Billable metric: marketable contact                          | Proposed            | DEC-G3                |
| [015](/adr/adr-015-dual-rail-sending)                | Dual-rail multi-channel sending                              | Proposed            | DEC-E8                |
| [016](/adr/adr-016-pricing-rating-engine)            | Vercel-style pricing + in-house rating engine                | Proposed            | DEC-G3, DEC-G4        |
| [017](/adr/adr-017-cqrs-lite)                        | CQRS-lite + audit log; event sourcing rejected as norm       | Proposed (ratified) | DEC-C1, DEC-C2        |
| [018](/adr/adr-018-partitioning)                     | Partitioning standard on Supabase                            | Proposed            | DEC-B7, DEC-B8        |
| [019](/adr/adr-019-notification-cascade)             | Cascading notification system                                | Proposed            | DEC-E1…E8             |
| [020](/adr/adr-020-mobile-whitelabel)                | Mobile white-label strategy (Expo + React Native)            | Proposed            | DEC-F2, DEC-F3        |
| [021](/adr/adr-021-multi-program-from-day-one)       | Multi-program from day one                                   | Proposed            | **supersedes DEC-H2** |
| [022](/adr/adr-022-identity-bounded-context)         | `identity` as a separate bounded context                     | Proposed            | **extends DEC-B1**    |

## Declared placeholders

Written when the phase arrives, not before:

| Topic                          | Phase | Trigger                                  |
| ------------------------------ | ----- | ---------------------------------------- |
| SMS provider                   | F1b   | first SMS adapter import                 |
| Wallet passes (Apple / Google) | F2    | signing library selection — DEC-H5       |
| Multi-currency + FX source     | F2    | first multi-currency tenant — DEC-B6     |
| WhatsApp channel               | F2    | provider selection — DEC-E1              |
| Live Activities (iOS)          | F2    | Expo dev client + native module — DEC-E6 |
