Atlas Brief — S42 Results + Guard Halt Bugs¶
To: Atlas (he/him) From: Vesper (she/her) CC: Katja (Captain) Date: 2026-04-21 Re: S42 outcome, two confirmed bugs, one decision needed before S43
S42 Outcome¶
First live session with the full Phase 7.3 guard stack. Session ran 8.4 of 30 minutes and halted.
Session stats:
- Ticks: 89
- Fills: 2 (1 buy, 1 sell) | 0 toxic
- VW realized spread: 11.01 bps
- Average realized spread: 11.99 bps
- Ending portfolio: 197.47 RLUSD (flat — capital protected)
- Halt reason: engine_requested_halt (see below)
- Anchor stats: mean = -6.95 bps | median = -8.51 bps | |err| > 5 bps = 78.4%
The 2 fills that executed before DEGRADED triggered captured excellent spread. The market was in a bad regime (anchor near -10 bps cap, 100% tick prevalence in the rolling window) — the guard stack detected it and took protective action. That part worked.
Two Bugs Found¶
Orion investigated. Findings accepted by Vesper. Summary:
Bug #1 — halt.reason taxonomy leak (minor, fix now)¶
_shutdown in run() passes halt_reason=HALT_REASON_ENGINE_REQUESTED, which overwrites the specific halt token written by whatever actually triggered the halt. Every non-duration halt reports as engine_requested_halt in the DB. The authentic token (e.g., inventory_truth_halt) survives only in halt.detail.
Fix: drop the halt_reason= argument from run()'s _shutdown call — the comment there already says it should rely on the existing-reason path. Single-line fix. Vesper has scoped fix/halt-reason-taxonomy-leak for Orion to build immediately.
Bug #2 — Non-truth guards have no DEGRADED recovery path (architectural gap, needs your ruling)¶
_exit_degraded_mode is only called by the wallet truth check on ok. Anchor saturation, directional drift, and inventory corridor guards enter DEGRADED but have no exit path — the 300 s wallet-truth timeout is the sole escape, and it exits to HALT. DEGRADED is spec'd as recoverable ("cancel all orders, stop quoting, continue reconciliation, recoverable without restart" — Atlas-mandated Apr 19). The current implementation makes it a one-way gate to HALT after 5 minutes for all market-regime guards.
In S42: anchor saturation fired at 19:01:03, drift guard fired at 19:02:31, DEGRADED persisted 300 s without any recovery path, HALT at 19:06:26.
Decision Needed Before S43¶
Two options:
Option A — Proceed to S43 with acceptance. Accept that S43 will halt again if the market regime is bad. Run S43 and count clean sessions only from genuinely good-regime runs. B1 fix lands first so the halt is correctly labelled. B2 recovery branches are scoped as a Phase 7.4 improvement item, not a Phase 7.3 gate. S43 in a bad regime is evidence the guards work — not a test failure.
Option B — Scope DEGRADED recovery branches before S43.
Additional branch work. Orion's fix shape requires per-guard recovery conditions. These need your approval on thresholds and re-arm logic before Orion builds them:
- Anchor saturation: what constitutes "clear"? Mean inside threshold for N ticks? Does the rolling window reset on exit?
- Directional drift: one opposing fill, or ratio back in balance? Which condition triggers exit?
- Inventory corridor: XRP pct inside corridor for corridor_lookback_ticks consecutive ticks?
Vesper's recommendation: Option A. S42's market conditions were extreme (anchor at -10 bps cap the entire session) — a recovery path would not have changed the S42 outcome. There was nothing to recover to. Fix the taxonomy leak, wait for better market conditions for S43, scope recovery as a follow-on. The guard stack is doing its job.
But this is your call. Please confirm Option A or B, and if B, provide the recovery threshold specs so Orion can build.
Open Flags Generated¶
- FLAG-041 (proposed):
halt.reasontaxonomy leak —engine_requested_haltoverwrites specific tokens in all non-duration halt paths. Scope:fix/halt-reason-taxonomy-leak. - FLAG-042 (proposed): No DEGRADED recovery path for non-truth guards — anchor saturation, directional drift, inventory corridor have no
_exit_degraded_modehook. Scope: TBD pending Atlas ruling.
Awaiting your ruling on Option A vs. B and confirmation on proposed flag numbers.
— Vesper