# `SquidMesh.Config`
[🔗](https://github.com/ccarvalho-eng/squid_mesh/blob/main/lib/squid_mesh/config.ex#L1)

Loads and validates host application configuration for Squid Mesh.

This contract is intentionally small so application teams only configure the
runtime boundary once, while workflow authors stay focused on declarative
workflow definitions and public API usage.

# `config_error`

```elixir
@type config_error() :: {:missing_config, [atom()]} | {:invalid_config, keyword()}
```

# `execution_option`

```elixir
@type execution_option() ::
  {:name, module() | atom()}
  | {:queue, atom()}
  | {:stale_step_timeout, stale_step_timeout()}
```

# `raw_config`

```elixir
@type raw_config() :: [repo: module(), execution: [execution_option()] | nil]
```

# `stale_step_timeout`

```elixir
@type stale_step_timeout() :: non_neg_integer() | :disabled
```

# `t`

```elixir
@type t() :: %SquidMesh.Config{
  execution_name: module() | atom(),
  execution_queue: atom(),
  repo: module(),
  stale_step_timeout: stale_step_timeout()
}
```

# `load`

```elixir
@spec load(keyword()) :: {:ok, t()} | {:error, config_error()}
```

# `load!`

```elixir
@spec load!(keyword()) :: t()
```

---

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