Mark any still-running subagents as cancelled and stop ticking.
Called when a turn is interrupted: the QuickJS bridge does not emit
terminal events for asyncio.CancelledError (a BaseException, so it
bypasses the bridge's except Exception), which would otherwise leave
rows spinning forever. Freezes each affected row's elapsed time.