Axis / Build System / Executor / Host backend
Host backend
The host backend executes a literal command on the controlling machine. It inherits that machine’s filesystem and environment. It does not supply isolation, images, snapshots or tool installation.
Source and native API: executor.go.
Execution contract
Executor implements executor.Process; its zero value is usable. Run resolves the first argument using the host PATH, overlays explicit environment additions and uses the caller’s working directory and stdin. No shell or pseudo-terminal is inserted. The executable must already be installed.
The call waits for the process. A nonzero exit is returned as status; launch failures, invalid environment entries and context cancellation are errors. Cancellation kills and reaps the launched process. Detached or daemonized descendants are outside this backend’s supported lifecycle. Commands must remain attached for the duration of their work.
Stdout and stderr are delivered as exact bytes with serialized writes, so both may share a log. Writers belong to the caller and are never closed. Concurrent invocations are independent; callers synchronize resources shared between invocations.
Terminal mode management belongs to the caller. A terminal file supplied as stdin remains a terminal; stream forwarding does not itself allocate a terminal. Pipe draining after process exit is bounded so inherited output handles cannot keep the invocation waiting indefinitely. The running command has no runtime limit.