# `Selecto.Domain.Contract`

First-wave canonical domain contract checks.

This module validates the normalized shape produced by `Selecto.Domain`.
It is intentionally small: it covers the required core sections and the first
strict subschemas for `source`, `schemas`, `joins`, and filter references.
Existing runtime configuration does not call this module unless a caller opts
into normalized validation.

# `error`

```elixir
@type error() :: %{code: atom(), message: String.t(), path: [term()]}
```

# `errors`

```elixir
@spec errors(map()) :: [error()]
```

Returns structured contract errors for a normalized domain.

# `validate`

```elixir
@spec validate(map()) :: :ok | {:error, [error()]}
```

Returns `:ok` when a normalized domain satisfies the first-wave contract.

---

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