2a32fe8914
The deferred launchd reload helper used start_new_session=True to detach from the gateway's process group. However, setsid(2) alone does NOT move the child outside the launchd job's process coalition — when launchctl bootout fires on the gateway label, launchd terminates ALL processes in that coalition, including the setsid-detached helper, leaving the service permanently unloaded. Fix by spawning the helper via launchctl submit, which creates a transient launchd one-shot job that is wholly independent of the gateway's coalition. This ensures the helper survives bootout and can complete the bootstrap+verify cycle. Also writes a durable pre-bootout marker to the reload log so the distinction between 'helper never started' and 'helper ran but bootout/bootstrap failed' can be diagnosed. Fixes #69098