- Restore EntriesPerDirection=2 so runner leg can enter alongside scaler.
Replay burst protection is now handled by the State.Realtime guard in
ProcessStrategyIntent rather than by limiting entries per direction.
- Set MaxOpenPositions=2 in SimpleORBNT8 to match scaler+runner structure.
Previous value of 1 caused PortfolioRiskManager to block the runner.
- Confirm RiskPerTrade=100 and MaxContracts=3 as live defaults.
The /9-contract configuration was a one-off backtest experiment and
must not be the deployed default.
- _realtimeBarSeen field and OnBarUpdate guard confirmed present and correct.
ProcessStrategyIntent guard: if (State == State.Realtime && !_realtimeBarSeen)
allows backtest (State.Historical) to execute normally while blocking
replay bars in live/SIM mode.
Backtest validation: Jan 2026 - Mar 2026, NQ, trail=20ticks
PF=7.00, win=75%, avg winner=, avg loser=-, max DD=-