Problem
When an exit rule fires on the final input bar, the core returns .exit but also synthesizes a completed trade at that bar's close. This contradicts next-market-open execution semantics.
Acceptance criteria
- Final-bar exit remains pending and emits no completed trade for that position.
- Adding the next bar completes the trade at the next bar's open.
- Existing open-position finalization behavior without a pending exit remains unchanged.
- Targeted and full Swift tests pass.
Problem
When an exit rule fires on the final input bar, the core returns
.exitbut also synthesizes a completed trade at that bar's close. This contradicts next-market-open execution semantics.Acceptance criteria