ADR Index
Architecture Decision Records live in docs/adrs/ in the monorepo. Each one captures a single durable decision — the context, the options considered, and why the chosen shape won — because the codebase’s invariants (one authored truth per money fact, deterministic ids, fail-closed resolution) are only defensible if the reasoning behind them survives the people who made them. They are the authoritative decision history: these docs summarize them, but when a page and an ADR disagree, the ADR wins, and CLAUDE.md requires an ADR before any schema change that contradicts DATA-MODEL.md.
Files follow a simple convention, and prose cites them by full filename:
docs/adrs/NNNN-kebab-case-title.md # zero-padded, append-only
# in code comments / PR descriptions / docs:
# See docs/adrs/0033-tenant-resolution-and-multi-tenant-selection-security-model.mdNumbers are assigned append-only by whoever lands the ADR; because several branches have landed ADRs concurrently, a few numbers collided (see the callout below) — which is exactly why citations should use the full filename. Filenames below are relative to docs/adrs/.
Numbering collisions. ADR numbers 0042 and 0043 were each assigned twice (two files share each number), and 0045/0047 are re-numbered duplicates of the 0042/0043 content (“convertible-instrument conversion events” and “PCAP allocation authority gates” respectively). When citing, use the full filename, not just the number.
| # | Title | File |
|---|---|---|
| 0001 | Canonical Record Contract | 0001-canonical-record-contract.md |
| 0002 | Runtime / Persistence / Trace Separation | 0002-runtime-persistence-trace-separation.md |
| 0003 | Source-to-Ledger Pipeline Boundaries | 0003-source-to-ledger-pipeline-boundaries.md |
| 0004 | Bank Follow-on Actions (design-only) | 0004-bank-follow-on-actions.md |
| 0005 | Fund accounting on ASC 946 (fair value) + ASC 820 (hierarchy) | 0005-asc-946-820-fair-value-accounting.md |
| 0006 | Deterministic content-addressed IDs vs UUIDv7 surrogates | 0006-deterministic-vs-surrogate-ids.md |
| 0007 | Accounting-entity / fund / book separation + identifier policy | 0007-accounting-entity-fund-and-identifier-policy.md |
| 0008 | Partners’-capital GL accounts + composed-close ledger identity (Acceptance Lab) | 0008-acceptance-lab-partner-capital-gl-and-composed-close-identity.md |
| 0009 | Carta-faithful fund accounting: GL vs partners’-capital subledger | 0009-carta-faithful-fund-accounting-gl-vs-partners-capital-subledger.md |
| 0010 | PCAP per-LP component balances are a projection layer, not a second ledger | 0010-pcap-component-balance-projection-layer.md |
| 0011 | Venture fund economics: management fee, carry waterfall, expense & transfer rules | 0011-venture-waterfall-fee-and-carry-economics.md |
| 0012 | Cloudflare Durable Object hosted demo persistence | 0012-cloudflare-durable-object-hosted-demo-persistence.md |
| 0013 | Locked-beginning roll-forward anchor (live per-LP PCAP) | 0013-locked-beginning-roll-forward-anchor.md |
| 0014 | Ownership-snapshot allocation basis for unrealized mark allocations | 0014-ownership-snapshot-allocation-basis.md |
| 0015 | Permissioned sharing and LP portal read models | 0015-permissioned-sharing-and-lp-portal-read-models.md |
| 0016 | Unified audit events and platform analytics RLS | 0016-unified-audit-events-and-platform-analytics-rls.md |
| 0017 | Single-source GL: partner-capital facts live on the dimensioned GL | 0017-single-source-gl-partner-capital.md |
| 0018 | Entity routing: typed money-bearing edges + fail-closed resolver | 0018-entity-routing-and-fund-structure-graph.md |
| 0019 | Economic terms: the payload IS the IR | 0019-economic-terms-payload-as-ir.md |
| 0020 | Relationship layer (companies & persons) + schema namespacing convention | 0020-relationship-layer-and-schema-namespacing.md |
| 0021 | KPI metric domain (metric) and the collection loop (collection) | 0021-kpi-metric-domain-and-collection-loop.md |
| 0022 | Cross-tenant sharing / A2b portco plane (sharing) | 0022-cross-tenant-sharing-and-a2b-portco-plane.md |
| 0023 | Decoupled tenancy: WorkOS-org ⊥ tenant, operator pattern | 0023-decoupled-tenancy-workos-org-tenant-and-the-operator-pattern.md |
| 0024 | Portal login gate + login-app deferral | 0024-portal-login-gate.md |
| 0025 | Complete the namespace: migrate public tables into schemas (pre-GA capstone) | 0025-complete-the-namespace-existing-public-tables-pre-ga.md |
| 0026 | In-tenant authorization: Postgres-authoritative, identity-bound, transaction-bound (P0) | 0026-in-tenant-authorization-capabilities-roles-presets.md |
| 0027 | Authorization platform: versioned roles, ReBAC scopes, principals, obligations | 0027-authorization-platform-roles-scopes-principals-obligations.md |
| 0028 | Family-scoped account report taxonomy for role-less charts | 0028-account-report-taxonomy.md |
| 0029 | Source-document malware-scan engine and event-driven scan pipeline | 0029-source-document-malware-scan-engine.md |
| 0030 | Source-document per-tenant encryption and crypto-shredding (V2) | 0030-source-document-per-tenant-encryption-and-crypto-shred.md |
| 0031 | Source-document upload browser→API transport (same-origin Cloudflare forward) | 0031-source-document-upload-browser-api-transport.md |
| 0032 | Role mutation is a gated write of a pinned role version | 0032-role-mutation-gated-writes-of-pinned-versions.md |
| 0033 | Tenant resolution & the multi-tenant selection security model | 0033-tenant-resolution-and-multi-tenant-selection-security-model.md |
| 0034 | All-subledger per-LP capital (amends ADR-0017) | 0034-all-subledger-per-lp-capital.md |
| 0035 | GP/Manager-borne expense reimbursement via ManCo intercompany | 0035-gp-manager-borne-expense-reimbursement.md |
| 0036 | Reporting dimension display is configuration, decoupled from posting policy | 0036-reporting-dimension-display-config-decoupled-from-posting-policy.md |
| 0037 | Generic reusable approval (maker-checker) system | 0037-generic-approval-maker-checker-system.md |
| 0038 | Global reference organization identity for issuers | 0038-global-reference-organization-identity.md |
| 0039 | CRM interaction, task, and activity privacy | 0039-crm-interaction-task-privacy.md |
| 0040 | Capital-call funding receipts are confirmed-side cash attribution | 0040-capital-call-funding-receipts-confirmed-cash-attribution.md |
| 0041 | Effect-native backend execution, failure, and observability | 0041-effect-native-backend-execution-failure-and-observability.md |
| 0042 (a) | Convertible-instrument conversion events (SAFE / note → equity) | 0042-convertible-instrument-conversion-events.md |
| 0042 (b) | Observable HTTP API failure boundary and response contract | 0042-observable-http-api-failure-boundary.md |
| 0043 (a) | Account identity, canonical posting roles, and effective-dated chart versions | 0043-account-identity-canonical-roles-and-chart-versions.md |
| 0043 (b) | PCAP allocation authority gates for fair-value marks | 0043-pcap-allocation-authority-gates.md |
| 0044 | Tenant, organization, WorkOS bootstrap, and first-admin access | 0044-tenant-organization-workos-bootstrap-and-first-admin.md |
| 0045 | Convertible-instrument conversion events — duplicate of 0042 (a) | 0045-convertible-instrument-conversion-events.md |
| 0046 | Deferred-recognition schedules | 0046-deferred-recognition-schedules.md |
| 0047 | PCAP allocation authority gates — duplicate of 0043 (b) | 0047-pcap-allocation-authority-gates.md |
| 0048 | Config-versioning kernel: one envelope, composed domain detail tables, one config schema | 0048-config-versioning-kernel.md |
| 0049 | Durable-work execution kernel and typed workflow boundaries | 0049-durable-work-execution-kernel.md |
Reading clusters
Each cluster links to the section of these docs that explains the implemented result:
- Record & boundary discipline: 0001, 0002, 0003, 0041, 0042 (b) → Application Records, API failure boundary
- Identifiers & entity spine: 0006, 0007, 0018, 0023, 0033, 0038, 0044 → Entity Model, Identifier Policy
- Fund accounting core: 0005, 0008–0011, 0013, 0014, 0017, 0019, 0034, 0035, 0040, 0043 (a), 0046 → Fund Accounting
- Authorization & tenancy: 0016, 0023, 0024, 0026, 0027, 0032, 0033 → Tenancy & RLS, Portal Auth & Tenancy
- Source documents & ingestion: 0003, 0004, 0029, 0030, 0031 → Source Pipeline
- Platform kernels: 0037, 0048, 0049 → Runtime
For the recurring patterns these decisions add up to, see the design principles.