Replace VERSION with the published shared version. This small executable callsthe public driver. It has no separate process lifetime implementation and noapplication payload protocol. Use the library's NodeLaunch for embedded files.Node is a prerequisite when it is the selected executable.
Launcher options stop at -- or the first executable. Everything after theexecutable is an opaque argument, including --json, --help, empty strings andUnicode. Use -- before an executable whose name starts with a dash. --help or-h prints help and starts no child. An unknown launcher option, absentexecutable, empty executable or unrepresentable process argument selects status 2.
The executable preserves binary stdin/stdout and separate stderr. Once a childstarts, the child owns stdout completely. --json does not wrap successfuloutput, failure output or a child's own JSON. A finite child status is preserved,including a nonzero status. The public driver owns signal forwarding, deadlines,reaping and finalization; see the guide.
Original SIGINT/SIGTERM forwarding is guaranteed on POSIX hosts. On the twoqualified stock Windows Moonrun versions, parent Ctrl-C reaches Node asCtrl-Break, so a genuine Node-owned host reports Quit/131. The parent preservesits original Interrupt observation and full Windows cancellation status.Finite transport, Ctrl-Break and forced cleanup remain supported. The launcherdoes not rewrite the child's completion or application result.
--json selects a single parent JSON document only for command help, usagefailure, or a typed outcome proving that no child started. Those reports usestdout; their human forms use stdout for help and stderr for failures. Parentstartup reporting does not read the child channel. The argument boundary alsoprevents an application's --json from selecting parent reporting.
Each parent document has schema_version: 1,command: "moon-lander-moonx/launch", package_version, kind andexit_status. exit_status is an unsigned 32-bit number so Windows status bitsare preserved.
kind
Extra fields
Meaning
help
usage, stdout_ownership
Explicit command help, status 0
usage-error
reason
Typed argument rule, status 2
not-started
reason, finalization_failure_count
No child started; status selected after cleanup
Usage reasons are unknown-option, missing-executable, invalid-executableand invalid-argument, with the input, rule or index where relevant. Startupreasons are process-start-failed, node-missing, materialization-failed,signal and requested. A signal reason names its original OS identity.Error messages are display text; consumers match the documented kinds ratherthan parsing messages. Application result schemas remain application-owned.
For example, --json -- /missing/program reports kind: "not-started"; itstarts no child and selects failure. --json -- node app.js --json forwards thelast option to app.js and emits no parent document once Node has started.Cancellation after startup also emits no parent application result.