# `CliSubprocessCore.ExecutionSurface`
[🔗](https://github.com/nshkrdotcom/cli_subprocess_core/blob/v0.1.0/lib/cli_subprocess_core/execution_surface.ex#L1)

Backward-compatible execution-surface facade for downstream CLI packages.

`cli_subprocess_core` no longer owns the transport substrate. This module
preserves the historical `CliSubprocessCore.ExecutionSurface` struct and
delegates validation and transport capability lookup to
`ExternalRuntimeTransport.ExecutionSurface`.

# `projected_t`

```elixir
@type projected_t() :: %{
  contract_version: String.t(),
  surface_kind: ExternalRuntimeTransport.ExecutionSurface.surface_kind(),
  transport_options: map(),
  target_id: String.t() | nil,
  lease_ref: String.t() | nil,
  surface_ref: String.t() | nil,
  boundary_class: ExternalRuntimeTransport.ExecutionSurface.boundary_class(),
  observability: map()
}
```

# `resolution_error`

```elixir
@type resolution_error() ::
  ExternalRuntimeTransport.ExecutionSurface.resolution_error()
```

# `resolved`

```elixir
@type resolved() :: ExternalRuntimeTransport.ExecutionSurface.resolved()
```

# `t`

```elixir
@type t() :: %CliSubprocessCore.ExecutionSurface{
  boundary_class: ExternalRuntimeTransport.ExecutionSurface.boundary_class(),
  contract_version:
    ExternalRuntimeTransport.ExecutionSurface.contract_version(),
  lease_ref: String.t() | nil,
  observability: map(),
  surface_kind: ExternalRuntimeTransport.ExecutionSurface.surface_kind(),
  surface_ref: String.t() | nil,
  target_id: String.t() | nil,
  transport_options: keyword()
}
```

# `validation_error`

```elixir
@type validation_error() ::
  ExternalRuntimeTransport.ExecutionSurface.validation_error()
```

# `capabilities`

```elixir
@spec capabilities(
  t()
  | ExternalRuntimeTransport.ExecutionSurface.t()
  | atom()
  | keyword()
  | map()
  | nil
) ::
  {:ok, ExternalRuntimeTransport.ExecutionSurface.Capabilities.t()}
  | {:error, term()}
```

# `contract_version`

```elixir
@spec contract_version() :: String.t()
```

# `default_surface_kind`

```elixir
@spec default_surface_kind() ::
  ExternalRuntimeTransport.ExecutionSurface.surface_kind()
```

# `from_external`

```elixir
@spec from_external(ExternalRuntimeTransport.ExecutionSurface.t()) :: t()
```

# `new`

```elixir
@spec new(keyword() | map() | t() | ExternalRuntimeTransport.ExecutionSurface.t()) ::
  {:ok, t()} | {:error, validation_error()}
```

# `new!`

```elixir
@spec new!(keyword() | map() | t() | ExternalRuntimeTransport.ExecutionSurface.t()) ::
  t()
```

# `nonlocal_path_surface?`

```elixir
@spec nonlocal_path_surface?(
  t()
  | ExternalRuntimeTransport.ExecutionSurface.t()
  | atom()
  | keyword()
  | map()
  | nil
) :: boolean()
```

# `normalize_surface_kind`

```elixir
@spec normalize_surface_kind(term()) ::
  {:ok, ExternalRuntimeTransport.ExecutionSurface.surface_kind()}
  | {:error, {:invalid_surface_kind, term()}}
```

# `normalize_transport_options`

```elixir
@spec normalize_transport_options(term()) ::
  {:ok, keyword()} | {:error, {:invalid_transport_options, term()}}
```

# `path_semantics`

```elixir
@spec path_semantics(
  t()
  | ExternalRuntimeTransport.ExecutionSurface.t()
  | atom()
  | keyword()
  | map()
  | nil
) ::
  ExternalRuntimeTransport.ExecutionSurface.Capabilities.path_semantics() | nil
```

# `remote_surface?`

```elixir
@spec remote_surface?(
  t()
  | ExternalRuntimeTransport.ExecutionSurface.t()
  | atom()
  | keyword()
  | map()
  | nil
) :: boolean()
```

# `remote_surface_kind?`

```elixir
@spec remote_surface_kind?(ExternalRuntimeTransport.ExecutionSurface.surface_kind()) ::
  boolean()
```

# `reserved_keys`

```elixir
@spec reserved_keys() :: [
  ExternalRuntimeTransport.ExecutionSurface.reserved_key(),
  ...
]
```

# `resolve`

```elixir
@spec resolve(keyword()) ::
  {:ok, resolved()} | {:error, validation_error() | resolution_error()}
```

# `supported_surface_kinds`

```elixir
@spec supported_surface_kinds() :: [
  ExternalRuntimeTransport.ExecutionSurface.adapter_surface_kind(),
  ...
]
```

# `surface_metadata`

```elixir
@spec surface_metadata(t() | ExternalRuntimeTransport.ExecutionSurface.t()) ::
  keyword()
```

# `to_external`

```elixir
@spec to_external(t() | ExternalRuntimeTransport.ExecutionSurface.t()) ::
  ExternalRuntimeTransport.ExecutionSurface.t()
```

# `to_map`

```elixir
@spec to_map(t() | ExternalRuntimeTransport.ExecutionSurface.t()) :: projected_t()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
