Normalized execution-mode, execution-surface, and execution-environment configuration with precedence-aware merging.
In Wave 1 this module is also the explicit carrier boundary between the ASM kernel and the frozen lower contract packet:
BoundarySessionDescriptor.v1AttachGrant.v1ExecutionEvent.v1ExecutionOutcome.v1ProcessExecutionIntent.v1JsonRpcExecutionIntent.v1
execution_surface and execution_environment remain the family-facing
mapped carrier IR here. The detailed lower intent interiors stay provisional
until Wave 3 prove-out.
Summary
Types
@type remote_t() :: %{ remote_node: atom(), remote_cookie: atom() | nil, remote_connect_timeout_ms: pos_integer(), remote_rpc_timeout_ms: pos_integer(), remote_boot_lease_timeout_ms: pos_integer(), remote_bootstrap_mode: :require_prestarted | :ensure_started, remote_cwd: String.t() | nil }
@type t() :: %ASM.Execution.Config{ execution_environment: ASM.Execution.Environment.t(), execution_mode: :local | :remote_node, execution_surface: CliSubprocessCore.ExecutionSurface.t(), provider_permission_mode: atom() | nil, remote: remote_t() | nil, transport_call_timeout_ms: pos_integer() }
Functions
@spec execution_plane_contracts() :: [String.t(), ...]
@spec provisional_minimal_lane_contracts() :: [String.t(), ...]
@spec resolve(keyword(), keyword(), keyword()) :: {:ok, t()} | {:error, ASM.Error.t()}
@spec to_execution_environment(t()) :: ASM.Execution.Environment.t()
@spec to_execution_surface(t()) :: CliSubprocessCore.ExecutionSurface.t()