a4a10eb520
`sudo hermes gateway start|stop|restart|status|uninstall|install --system` resolved the systemd unit as `hermes-gateway-<sha256[:8]>` while the installed unit is `hermes-gateway.service`, failing with `Unit ... not found` (exit 5). The service name was derived from the CURRENT PROCESS's HERMES_HOME, and under sudo that value changes MID-COMMAND: sudo strips HERMES_HOME and sets HOME=/root, so the `_require_service_installed()` pre-flight resolved the bare name and passed; `_sync_hermes_home_from_systemd_unit()` then adopted the unit's pinned `HERMES_HOME=/home/<user>/.hermes` into `os.environ` (deliberate, for runtime-status/PID reads), and every later `get_service_name()` took the hash branch. Regression from the #105525 fix, which correctly moved the comparison basis to `_get_platform_default_hermes_home()` -- right for a temp-dir/Docker home, but wrong for an elevated process whose `~/.hermes` is not the home that owns the unit. Read the naming basis from the unit instead of the process: the installed `hermes-gateway.service` is the authority on which home owns the bare name. `_bare_unit_pinned_home()` parses that unit's pinned HERMES_HOME, and `_profile_suffix()` accepts it alongside the platform-native default. This is stable for every elevated identity, including `sudo -i` and cron where SUDO_USER is absent, and for a custom HERMES_HOME pinned in the unit. The #105525 guard is untouched: with no installed bare unit, a temp-dir/Docker /custom home still keeps its own hashed suffix and can never resolve to -- or uninstall -- the operator's `hermes-gateway.service`. Only the single home that unit pins is recognised; an unrelated home stays suffixed. Nothing is memoized, because `hermes_cli/profiles.py::_cleanup_gateway_service` swaps HERMES_HOME mid-process and depends on re-derivation. The native-default check stays first so the common path short-circuits before any file I/O. Refs #108674