2a27e1ffb3
Review v2 of #93084: the readable-cmdline path used substring matching as destructive authority. That fails open on prefix collisions (--profile timothy vs our profile tim) and same-name profiles under different roots, so a poisoned record could still reach SIGTERM. Ownership is now decided by the persisted identity record ALONE — exact _same_hermes_home equality, bound to the live target by exact pid + start-time. Missing/legacy/unbound/foreign records all refuse. A readable argv feeds only a token-exact consistency check (_looks_like_profile_conflict_from_cmdline via shlex tokens) that refuses explicit contradictions like --profile timothy under tim; bare or matching argv adds nothing. Also fixes the review's source-of-record concern: the guard validates the record that authorizes get_running_pid()'s answer rather than assuming {HERMES_HOME}/gateway.pid is always the source. Adds the requested signal-boundary regression: start_gateway(replace= True) with unprovable ownership returns False without calling terminate_pid or writing a takeover marker; the bound same-home counterpart still reaches the replace flow. Legacy replace-flow tests updated to stage a valid bound record for their legitimate-replace fixtures.