f434418df5
The split queue_put calls introduced interleaving risk (6 yield points vs 2) and the end_attempted flag was set before the END dispatch, causing the compensating END to be skipped when END itself failed. - CrewAI: restore single batched queue_put(start, args, end) call; compensating END is now unconditional on batch failure - AG-UI agent: rename end_attempted → end_dispatched, set after successful END dispatch so compensation fires for all failure modes - Tests: rewrite CrewAI compensating tests for batch semantics, add test_failure_on_end_emits_compensating_end for AG-UI agent Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>