99b727bd96
`hermes update` snapshots each stale dashboard/serve backend's systemd unit before the kill and respawns everything else from its captured argv (#40449, #68934, #78821). On macOS that "everything else" includes a backend supervised by a launchd job: the respawn comes back detached and sits on the job's port, launchd's KeepAlive then fails every restart of the job with "port already in use" (exit 75, one attempt per ~10 s, forever), and the backend that IS serving is no longer supervised. Every later update kills the copy and respawns it again, so the loop outlives the update that started it. The update now snapshots the loaded launchd backend jobs before the kill (LaunchAgents in the gui/user domains, LaunchDaemons in system; only plists whose ProgramArguments are a dashboard/serve backend are probed), attributes a PID to a job when launchd reports it as the job's live process or the process runs the job's exact ProgramArguments (the detached copy an earlier respawn left behind), and brings such a PID back with `launchctl kickstart <domain>/<label>` instead of an argv respawn. A failed kickstart is reported with the manual command and counted as unrecovered, like a failed systemctl restart. Linux and Windows paths are unchanged.