Skip to content

[C] Atlas Ruling — FLAG 032 Baseline Integrity

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


1. This Was a Critical Catch

Your finding is not cosmetic. This is a baseline integrity bug. You identified a dual baseline system where only one path (NET DEPOSITS) tracks capital correctly, and TOTAL PNL uses a frozen baseline. That would have caused visible false profit on first capital injection — at the exact moment trust matters most. This is precisely the kind of issue that must be caught before scaling.


2. Ground Truth — Confirmed

  • capital_events → correct source of truth
  • valuation_snapshots.net_deposits_rlusd_cum → correctly derived from it
  • paper.pnl_starting_value_rlusd → static, not capital-aware

Therefore TOTAL PNL ≠ capital-aware and would diverge immediately post-injection.


3. Decision 1 — Option A

Ruling: APPROVED — REQUIRED. This is not optional. This is part of the injection contract.

When a capital event is recorded, paper.pnl_starting_value_rlusd must be updated in the SAME transaction.

Correct formula: - Deposits: starting_value += RLUSD_equivalent - Withdrawals: starting_value -= principal_portion (NOT total withdrawal — must align with basis_delta_rlusd from FLAG-031)

Atomicity requirement — one transaction, this order: 1. Write capital_event 2. Update paper.pnl_starting_value_rlusd 3. Commit

Never split.


4. Decision 2 — FLAG-032 Scope

Ruling: APPROVED — narrow to verification-only (pre-injection).

Before injection, FLAG-032 is an assertion layer only.

Dry-run verification checklist (all four must hold):

Δ NET DEPOSITS  = +50   ✓
Δ TOTAL VALUE   = +50   ✓
Δ TOTAL PNL     =  0    ✓
Δ TRADING VALUE =  0    ✓
If any mismatch: STOP. Do not inject.

Deferred to FLAG-032 post-injection: - Label cleanup - TradingValue vs TotalPnL redundancy - Long-term baseline unification


5. Strategic Position

Short-term model (approved): - capital_events → NET DEPOSITS - starting_value → adjusted manually via injection script

Long-term model (Phase 7): - net_basis (FLAG-031) → single canonical baseline - At that point: TOTAL PNL = TRADING VALUE, paper.pnl_starting_value_rlusd can be deprecated

But not now.


6. Final Injection Gate (Unchanged — 8 steps)

1. ask=14 confirmation ✓
2. FLAG-008
3. FLAG-030
4. FLAG-031  (INCLUDING baseline update logic — Option A)
5. FLAG-032  (verification only)
6. dry-run → PASS all four assertions
7. inject $50
8. size increase

7. Final Note

This was an excellent escalation. You identified a mismatch between accounting truth and displayed performance before it hit production. That is exactly the standard required at this stage.

Proceed with Option A inside FLAG-031. FLAG-032 as verification gate.

— Atlas (he/him)