1ff56d9ed9
Review follow-ups to the unit-anchored service identity. `_bare_unit_pinned_home()` now returns early off Linux. `_profile_suffix()` is shared by the launchd label/plist helpers, the Windows scheduled-task name and the s6/multiplex `_current_profile_name()` fallback, and a systemd unit is not an identity authority for any of them. The gate is `is_linux()` (a plain `sys.platform` test) rather than `supports_systemd_services()`, which can shell out to `systemctl is-system-running` on WSL and containers -- unacceptable in a helper that runs on every name resolution. Document why the unit-pinned check must precede the profile branch, and pin it with a test: `sudo hermes gateway install --system` resolves the BARE name from root's default home, then writes the invoking user's remapped home into the unit, so the bare unit legitimately carries a `<root>/profiles/<name>` home. If the profile branch ran first it would answer `hermes-gateway-kimi` for a unit installed as `hermes-gateway`, which is the original bug class. Three more regressions: the named-profile-pinned bare unit above; a run that drives the real `_sync_hermes_home_from_systemd_unit()` instead of simulating the adoption with `setenv`; and an unreadable unit, which must fall through to the suffix branches rather than hand its bare name to an unrelated home. The class is now `linux_only`, because the gate makes the behaviour genuinely host-dependent -- so the tests belong on the host that has it, not behind a faked platform. Verified on a real Linux kernel (WSL2, Python 3.12.13), not by simulation: 7/7 pass on this branch; with `hermes_cli/gateway.py` restored from origin/main and the tests kept, 4 fail with the reported symptom (`'hermes-gateway-kimi' == 'hermes-gateway'`, `'hermes-gateway-54de6eee' == 'hermes-gateway'`) and the 3 guard tests still pass. Whole file on Linux: origin/main 4 failed/106 passed/1 skipped, this branch 4 failed/113 passed/1 skipped -- same four pre-existing failures, exactly seven new passes. Refs #108674