- The breakeven study grades at the shadow book's capacity AND risk per
trade, and labels each with where it came from. A missing setting row
now reads "shadow_book default" instead of crediting the setting; the
committed report said shadow_book_capacity though the snapshot has no
such row.
- _production_book_config reads strategies through the same
_portfolio_monitor_strategies() hook as the monitor.
- breakeven_gate_reset is rejected when there is no post-stop episode or
cooldown for it to start, and the study skips its diagnostic arm for a
book without one, so a production config change cannot abort the run.
- identical_to_control is renamed ties_control_on_graded_metrics and needs
real values: be_2r ties on every graded metric but still changed 2 trades.
- _BookConfig drops an unused field and hashes by identity; the min-R:R
sweep swaps its gate in with dataclasses.replace instead of passing it.
- New tests cover the parity guard's success path, the no-config fallback
and the gate-reset check.
The breakeven report is regenerated: every row, diagnostic row and the
parity check are identical; only the labels, the risk fields and the
renamed flag changed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>