9c36cafcec
`profile create` registers an s6 gateway slot only when the creating process is itself inside the container: `detect_service_manager()` reads `/proc/1/comm` in the CALLER's PID namespace, so on a host whose `~/.hermes` is bind-mounted into the container the hook is a silent no-op. The profile directory lands exactly where the container reads it, but no slot exists, and `hermes -p <name> gateway start` inside the container fails with "not registered" until the operator restarts the container so the boot reconciler notices. Same symptom as #54174 reaches `profile install` by the same route. Register the slot on demand instead. When `start` hits `GatewayNotRegisteredError` and the profile directory carries `SOUL.md` — the boot reconciler's own "real profile" marker — create the slot and start it. That makes `_maybe_register_gateway_service`'s promise true without a restart. Deliberately narrow: - Only `start` self-heals. `stop` and `restart` on an unregistered profile keep the original error; registering a slot in order to stop it would be absurd. - `SOUL.md` gates it, so a mistyped `-p` name or a stray directory cannot mint a phantom slot for a profile that does not exist. - Registers with `start_now=False` and then goes through the ordinary `start` path, so the `desired_state` write that lets boot reconciliation restore want-up after a container restart keeps a single owner. - `ValueError` (slot appeared underneath us) and `RuntimeError` (s6-svscanctl failed) surface as the existing actionable error, never a traceback. Refs #54174. PR #54182 fixes the narrower `profile install` case by adding the same registration call; this closes the symptom for any existing profile directory and without a container restart.