mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
Three ordering fixes on the admission and settlement boundaries. kick() installs the abort owner, marks the interval busy (running is emitted before any listener can observe the claim), and installs the pending done BEFORE publishing agent/inbox/dequeue: a dequeue listener that cancels or disposes now finds live cancellation and quiescence ownership instead of the previous activity's settled state, and claimed prompt admission — including asynchronous prompt-submit hooks — sits inside the running interval where cancel routing can reach it. The admission-rejected path yields one microtask before continueOrIdle so the idle transition cannot fire inside send()'s synchronous extent. agent/idle now names only committed turns: a run that aborts or fails before its turn/start commits exits without the notification, since there is no durable turn/end for settlement consumers to act against. The event's JSDoc states the narrowed contract.