Skip to content

Vesper Analysis — reconciler_anomaly_log Post-S41

Author: Vesper (she/her) Date: 2026-04-19 Source: neo_live_stage1.dbreconciler_anomaly_log, fills, orders, inventory_truth_snapshots


Summary

5 total rows. 2 pre-session (S38-era, startup detection), 3 during S41 (real fills via reconciler).


Row-by-Row Analysis

Rows 1–2 — Pre-session phantom fills (session_id=None, detected 21:04:58Z)

Both belong to session 38 (placed 2026-04-18T21:09–21:10Z).

Field Row 1 Row 2
side buy sell
quantity_rlusd 10.5 19.5
xrp_equivalent 7.34 13.62
age_seconds 86,119 (~24h) 86,053 (~24h)
cancel_tx_hash None None
action_taken phantom_fill_applied phantom_fill_applied
fills table match ✅ (credited to session 38) ✅ (credited to session 38)

What happened: These were S38 orders that the engine placed on 2026-04-18 and never saw filled (session ended, engine went offline). The offers stayed live on the XRPL ledger for ~24 hours and were consumed by the market during the gap. At S41 startup, the reconciler scanned open orders, found these missing from the active set, applied phantom fills, and credited them to session 38 in the fills table.

Confirmation: The inventory_truth_snapshots row at 21:10:01Z (after realignment and phantom fill processing) shows delta_xrp=3.55e-15, delta_rlusd=0.0 — on-chain state matches DB exactly. The phantom fills were correct.

The exposure this reveals: The S38 offers sat on the XRPL ledger for 24 hours with no engine watching. They accumulated fills during a session gap. Without the reconciler, those fills would have been silently dropped — the engine would have started S41 thinking it had 67 XRP / 100 RLUSD when on-chain reality was 29.42 XRP / 154.46 RLUSD. The reconciler built by Orion caught this at the first opportunity. This is exactly the silent divergence scenario Atlas identified.


Rows 3–5 — S41 real fills (session_id=41, 21:16:24 through 21:16:48Z)

Field Row 3 Row 4 Row 5
side buy buy buy
quantity_rlusd 19.5 19.5 19.5
xrp_equivalent 13.79 13.79 13.79
age_seconds 19 12 11
cancel_tx_hash None None None
action_taken phantom_fill_applied phantom_fill_applied phantom_fill_applied
fills table match

What happened: These are the 3 fills from the S41 fill burst (first 24 seconds of session). All were detected via the reconciler (orders disappeared from open set without a cancel tx → assumed fill). The fills are confirmed correct: inventory math closes exactly (starting 29.42 XRP + 41.38 XRP from 3 fills = 70.79 XRP ending, matching on-chain inventory_truth_snapshots throughout S41).


FLAG-037 Design Inputs

The trigger condition in every row: cancel_tx_hash=None. The reconciler's current logic: order disappeared + no cancel tx → assume fill → phantom_fill_applied. This is correct for rows 3–5. For rows 1–2 it happened to be correct, but only verifiable after the fact via startup gate pass.

Age is the discriminating variable:

Age range Rows Interpretation Current behavior Conservative behavior
11–19 seconds 3, 4, 5 Active session fill, counterparty took the offer phantom_fill_applied ✅ Same — correct
86,000+ seconds 1, 2 Stale order, 24h gap, consumed during offline period phantom_fill_applied (happened to be correct) Log + hold: don't auto-fill, surface for review

Conservative fix direction (FLAG-037): - For young orders (< threshold, e.g., < 300s): current phantom_fill_applied behavior appears correct - For old orders (> threshold): do not auto-phantom-fill. Instead: log to reconciler_anomaly_log with action_taken='held_pending_review', surface alert, and require explicit resolution (either manual realignment or on-chain confirmation) - Threshold value: TBD (Atlas input requested — suggest 300s as starting point, configurable)


XRP Balance Note (1.20 XRP)

During S41 post-fill, Katja's wallet UI showed 69.59 XRP available vs engine's 70.79 XRP. Difference = 1.20 XRP = XRPL owner reserve (wallet UI shows available balance; engine and reconciler read AccountRoot.Balance which includes reserves). Confirmed: inventory_truth_snapshots runtime checks throughout S41 show on_chain_xrp=70.792... with delta < 0.001 XRP. No actual discrepancy. The reconciler is reading the correct field.


Verdict

The reconciler anomaly log is working correctly. The data supports proceeding with FLAG-037 as fix/reconciler-disappeared-order-conservative per Atlas's observe-first mandate. The fix is well-defined: add an age threshold guard to the phantom-fill decision path, with old orders held for review rather than auto-filled.

— Vesper