bd7938fa0c
Follow-up to the salvaged #71867 supervision fix. _spawn_supervised's own backoff respawn created a new task without updating the external handle self._reconnect_watcher_task, so after the reconnect watcher crashed and self-restarted, _ensure_reconnect_watcher_running() saw the stale handle as done() and spawned a SECOND concurrent watcher (double reconnect attempts). Add an optional on_spawn callback to _spawn_supervised, fired with the live task on every spawn INCLUDING internal respawns, and pass it at both reconnect- watcher spawn sites so the tracked handle always advances. The two supervision mechanisms (supervisor auto-restart + ensure-respawn) now compose instead of racing. Regression test sabotage-verified.