Files
orca/src
Brennan Benson b1d6fdf9ac fix(claude): withdraw a follow-up queued behind a stopped turn instead of dropping it silently (#23553)
* fix(claude): withdraw a follow-up queued behind a stopped turn instead of dropping it silently

Orca's SessionStart hook proves most Claude starts before the turn's
system/init, the only frame that advertises interrupt_cancel_queued_v1.
Capabilities were read once from the start proof, so they stayed empty:
Stop never asked Claude to cancel its queue, and the one-at-a-time
fallback withdrew the follow-up without settling it. The send stayed
pending and the chat read Working until the child exited.

Capabilities are now one derived value, taken from whichever report
names any and never cleared by one that names none. The fallback settles
each send the CLI confirms it withdrew.

* test(claude): pin that only a confirmed cancel_async_message counts as withdrawn

* test(native-chat): await the async journal snapshot in the queued-stop test

* test(native-chat): wait for the queued-stop states instead of sleeping

A fixed 20 ms sleep does not cover the host's asynchronous journal writes on a loaded runner.
2026-09-28 11:41:09 -07:00
..