| … | … | @@ -5267,6 +5267,12 @@ const makeOrchestrator = Effect.fn("orchestrationV2.Orchestrator.layer")(functio | |
| 5269 | 5269 | } | |
| 5270 | + | // A queued pick reaches the thread only when its run starts; unpicked messages behind it follow it. | |
| 5271 | + | const newestQueuedRun = | |
| 5272 | + | command.modelSelection === undefined && command.createdBy === "user" | |
🟠 High orchestration-v2/Orchestrator.ts:5272
A start_immediately manual continuation can switch providers and start on a queued message’s model instead of continuing the interrupted run’s provider conversation. This block inherits the newest queued run’s model before determining whether the dispatch will actually join the queue; gate the inheritance on actual queueing so non-queued dispatches keep the thread model.
✅ Resolved in 53d61f53d93eaec70c3c5803ee32a6fd0173f2c5
Valid, fixed in 53d61f53d9. The rule now runs after the queue decision and applies only when the message actually queues (shouldQueue), so a start_immediately continuation after a Stop keeps the thread model. The integration test now covers that: it stops the thread with a held Claude pick queued, then sends an unpicked start_immediately message, and asserts it runs on Codex. It fails without the gate.
Sorry, I'm unable to act on this request because you do not have permissions within this repository.