#robo $ROBO
I got uneasy when a ROBO task showed cancelled in the queue, went back to pool, then tripped the next runner on the exact same tool lock 6 minutes later. After that, the number I kept watching was reassign aftercancel.
That’s when “cancelled” stopped sounding final.
On ROBO, aborting work should be part of the protocol, not just a UI state. A task can cross tool calls, reservations, partial writes, and external checks before anyone decides to kill it. If the abort path doesn’t leave cleanup receipts strong enough to prove what got released, what got rolled back, and what is still alive, the next runner inherits a mess dressed up as a fresh start. The dashboard says the lane is clean. The tool surface says otherwise.
If this were only slower infrastructure, the same task would just wait longer. The uglier version is different. Work gets reassigned while the last run is still leaking into the execution lane.
That’s really an abort semantics problem. Weak cleanup turns cancellation into contamination. Strong cleanup makes reassignment safe.
That discipline is expensive. Cleanup receipts, rollback checks, state release verification, none of that is free.
$ROBO starts to matter when it’s paying to make aborts real, not cosmetic.
I’ll trust cancelled a lot more when the next runner stops discovering the previous one is still there.