Issuance, compliance, capital operations, distributions and manager economics — on a ledger where no balance column exists to be edited. Every number is a projection over immutable entries.
Positions, capital accounts, liquidity and portfolio value are projections over ledger entries. Corrections are reversing entries — never mutations. Two dimensions balance independently: CASH and UNIT, each asserted on its own.
Every transition passes assertTransition at the domain boundary — invalid moves fail before they reach the database.
Time-weighted return is linked multiplicatively, never summed. Portfolio XIRR is solved by bisection and reports { rate, converged, reason, iterations } — a non-converged solve renders an em dash, never a confident 0.00%.
Explore analyticsFive roles, enforced at three chokepoints. Scope is a required parameter on every loader, so the compiler catches leakage instead of discipline. Out of scope returns 404 — confirming another tenant's asset exists is already a leak.
{{ r.body }}
Settlement is modelled as ledger entries, not transactions — so the truth layer stays intact when chain rails are added underneath it.