Extend and embed

Maelys System integration

Understand which low-level mechanics come from Maelys System and which lifecycle duties remain in Executor.

The dependency direction is strictly:

CODE
maelys-executor -> libmaelys-sys

Maelys System never includes Executor headers or process-domain types. Executor's public header does not expose Maelys System types. Executor ABI 10 therefore remains independent of System's concrete layouts; the dependency appears only at build and final static link time.

Extracted mechanics

Executor needMaelys System contract
monotonic and wall timestampsmaelys_sys_monotonic_ms, maelys_sys_wall_ms
owned descriptor cleanupmaelys_sys_fd_close
child I/O constructionmaelys_sys_pipe_cloexec, maelys_sys_socketpair_cloexec
mediated-channel request writemaelys_sys_socket_send_nosigpipe
mediator shutdown notificationmaelys_sys_wakeup_*

make system-integration-check inspects the unresolved symbols of libmaelys_executor.a and fails unless every contract above is genuinely consumed. Normal execution, mediated networking and shutdown tests then link a single pinned libmaelys_sys.a and exercise the composition.

Deliberately retained by Executor

  • posix_spawn file actions and descriptor layout;
  • process-group ownership, waitpid and signals;
  • graceful/forced bounded shutdown and terminal status mapping;
  • backend prepare/artifact/spawn/wait/stop/release operations;
  • Bubblewrap, Seatbelt, filesystem/network enforcement and receipts.

These operations carry execution-domain meaning and do not satisfy the Maelys System admission rule requiring a domain-free primitive needed by two real consumers.

The dependency is pinned to the exact commit in adapter/MAELYS_SYSTEM_PIN. The build refuses a different checkout, a modified public contract, or a non-ABI-1 header. Installed SDK archives contain both static libraries and both pkg-config files; maelys-executor.pc declares maelys-sys as a private dependency for static consumers.