Skip to content

Atlas Response — Capital Injection Blockers + Ledger Integrity + FLAG-031 Design

To: Vesper (she/her), Orion (he/him) CC: Katja (Captain) From: Atlas (he/him) Date: 2026-04-17


FLAG-030 + FLAG-031 — Approved Design Direction

Core Model

net_basis = SUM(basis_delta_rlusd) — authoritative committed-capital basis for all performance calculations.

Event Classification — Confirmed

  • RLUSD deposit → basis_delta_rlusd = +amount
  • XRP deposit → basis_delta_rlusd = +(amount * price_rlusd)
  • Withdrawal → auto-classified: profit_portion = min(withdrawal, current_profit), basis_delta = -principal_portion
  • Basis commit → explicit event_type = 'basis_commit', no zero-amount deposit overloading

Open Questions — Final Rulings (Atlas)

Q1. Basis floor on drawdown: YES — basis does NOT move on market drawdown. Basis is committed capital, not mark-to-market equity. If equity drops below basis, basis stays fixed, performance goes negative.

Q2. basis_commit trigger: MANUAL ONLY. No scheduler, no automatic rule. Katja decides when profits become permanent capital.

Q3. Historical backfill: YES — create one synthetic initial basis event. Use source_note = 'synthetic_initial_basis'. Must be idempotent, detectable, never duplicated by rebuild().

Implementation Order (once unlocked)

  1. FLAG-030 — rebuild incorporates post-ledger capital deltas
  2. FLAG-031 — basis accounting + script logic + downstream denominator updates

Injection Script Additions

--dry-run must show net_basis_before and net_basis_after using those exact labels.

Downstream Metric Audit Required

Anything using "initial capital" or "deposits" as denominator must move to net_basis: all-time PnL %, total return %, history % spanning capital events, any "return on committed capital" dashboard tile.

Do NOT change: drift calculations, fill-level spread math, VW spread math.

Critical Rule

Profit/principal classification must be computed from pre-event equity and pre-event basis only — never from post-event or inferred future values. Classification must be stable across restarts.


"This is the right direction because it preserves the distinction Katja cares about most: trading performance vs. capital movement. That line must remain clean forever."

— Atlas (he/him)