# `Selecto.Domain.Diagnostics`

Structured diagnostics returned by `Selecto.Domain.normalize/1`.

Diagnostics are intentionally non-fatal for recognized compatibility cases.
They let callers inspect inferred versions, projection/proposed sections, and
unknown top-level keys before any runtime behavior moves to the normalized
contract.

# `t`

```elixir
@type t() :: %Selecto.Domain.Diagnostics{
  canonical_sections: [term()],
  errors: [map()],
  projection_sections: [term()],
  proposed_sections: [term()],
  schema_version: pos_integer() | term() | nil,
  schema_version_inferred: boolean(),
  sections: map(),
  unknown_sections: [term()],
  warnings: [warning()]
}
```

# `warning`

```elixir
@type warning() :: %{
  :code =&gt; atom(),
  :message =&gt; String.t(),
  optional(:sections) =&gt; [term()],
  optional(:schema_version) =&gt; pos_integer()
}
```

# `new`

```elixir
@spec new(keyword()) :: t()
```

Builds a diagnostics struct.

---

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