27385e586b
A manually-launched `hermes serve --host <ip>` powering a remote Desktop was invisible to the entire update pipeline: not in the runtime inventory, a permanent exit-2 dead-end at the Windows venv-holder guard, and — when anything killed it — never relaunched, stranding the remote client on a dead endpoint (#63206). Serve backends were also visible to `hermes dashboard --stop` but hidden from `--status` (#81564's asymmetry), so operators could kill what they couldn't see. Built on the spawn ledger (positive identity, never argv guessing): - process_identity.py: LedgerEntry gains structured host/port/profile (backward-compatible — readers .get()); register_self accepts detail=; argv capture widened 6→10 tokens so profiled launches survive. - web_server.py: serve/dashboard registration moved AFTER the bind and now records the ACTUAL bound host/port/profile. - update_inventory.py: serve/dashboard collector reading the ledger — manual backends inventory as supervisor=manual-serve with restart_via=respawn-argv; Desktop-owned ones (live recorded spawner) as desktop. Plan/receipts/fleet matrix see them for free. - update_cmd.py: new venv-guard rung — manual serve/dashboard holders are stopped for the update and relaunched via an idempotent atexit token built from structured identity (same contract as the gateway pause/resume); receipts record serve_pause/serve_relaunch. Desktop-owned backends keep the refusal (the app respawns what we kill). - dashboard_procs.py: the process scan is augmented with live ledger rows, so profiled launches (`hermes --profile p serve ...`) that match no substring pattern are finally visible to kill/respawn. - main.py: `--status` now lists serve-mode backends too, tagged [serve] — closing the #81564 status/stop asymmetry. Salvage note: detection deliberately does NOT reuse #70742's psutil cmdline-pattern scan (the argv-guessing class this campaign retires); its resume-token lifecycle (atexit + idempotent flag) and don't-replay guard shaped the relaunch contract here — credit @Tranquil-Flow. Co-authored-by: Tranquil-Flow <66773372+Tranquil-Flow@users.noreply.github.com>