Proposed by the operator during the Phase 10 expansion review (2026-08-17): a routing-time maximum-spread gate — an entry (BUY) is refused when the venue's live spread at routing exceeds a configurable threshold, so thin books cannot be entered at any moment their spread makes the fill economics materially worse than the cost model assumes.
Why it is now cheap: #332's entry-override warning already reads best_bid/best_ask from the preview_order call _run_order makes — the book data and the routing-time hook both exist. The gate is a threshold check beside that warning ((ask − bid) / mid > max_entry_spread_pct → veto), the same fail-closed family as rails 12/13/17.
Design questions for the PR (this issue is the agreement CONTRIBUTING requires for rail work):
Proposed by the operator during the Phase 10 expansion review (2026-08-17): a routing-time maximum-spread gate — an entry (BUY) is refused when the venue's live spread at routing exceeds a configurable threshold, so thin books cannot be entered at any moment their spread makes the fill economics materially worse than the cost model assumes.
Why it is now cheap: #332's entry-override warning already reads
best_bid/best_askfrom thepreview_ordercall_run_ordermakes — the book data and the routing-time hook both exist. The gate is a threshold check beside that warning ((ask − bid) / mid > max_entry_spread_pct → veto), the same fail-closed family as rails 12/13/17.Design questions for the PR (this issue is the agreement CONTRIBUTING requires for rail work):
execution.max_entry_spread_pct?) with a docstring'd conservative default; or scaled per-product from slippage is one global 5bp constant applied from BTC to TON #259's liquidity-scaled slippage (spread cap as a multiple of assumed slippage).