The runner starts the supplied integrations, forwards reconnect notices,
and waits for each worker to stop. It alone logs failures and preserves
independent errors joined with cancellation. The command waits for a
signal with an empty integration list and completes cleanup before exit.