Switch every example to ``await runner.spawn(task)`` followed by ``await runner.run()`` (no task argument), and ``await runner.cancel()`` on client-disconnected instead of ``await task.cancel()``. This makes the main pipeline task look the same as the worker / proxy tasks spawned alongside it, and lets ``runner.cancel()`` drive a uniform shutdown across every root task on the bus.