c16b5aaaa4a3f4f61b0cc22b9a6699861630dbf0
trade_seq was missing from the kernel account snapshot dict, so the intent engine always computed trade_id = "BTCUSDT-T-000000000001". The Rust FSM SLOT_BUSY guard only fires on *different* trade_ids; with the same ID it resets the slot and submits a new exchange order on each ENTER signal tick (~86 duplicate orders observed in one session). Fix: - Add _slot_was_closed dict to ExecutionKernel; set False on ENTER accepted (both sync/async), True on on_venue_event when slot.closed - Increment account.snapshot.trade_seq on the IDLE→CLOSED transition - Expose trade_seq in snapshot()["account"] so DecisionContext carries the correct counter → intent engine generates unique IDs per trade 451/451 tests green. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Description
No description provided
Languages
Python
100%