[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 truthvaluation_snapshots.net_deposits_rlusd_cum→ correctly derived from itpaper.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):
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)