# `Scrypath.Operator.IndexContractDrift.Report`
[🔗](https://github.com/szTheory/scrypath/blob/v0.3.5/lib/scrypath/operator/index_contract_drift/report.ex#L26)

Structured comparison of a schema's **declared** index contract against **live**
Meilisearch index settings.

This is **index contract drift** — not `Reconcile.drift_signals`, which describes
operational sync and reindex posture rather than declared-vs-applied settings parity.

# `dimension`

```elixir
@type dimension() :: %{match: boolean(), details: [term()]}
```

Per-axis contract comparison. Keys are fixed for JSON stability.

Each axis value is `%{match: boolean(), details: [term()]}` (the internal
`Dimension` struct shape) without referencing the hidden implementation module
in public types — keeps `mix docs --warnings-as-errors` clean.

# `dimensions`

```elixir
@type dimensions() :: %{
  fields: dimension(),
  filterable_attributes: dimension(),
  sortable_attributes: dimension(),
  faceting: dimension(),
  settings: dimension()
}
```

# `t`

```elixir
@type t() :: %Scrypath.Operator.IndexContractDrift.Report{
  dimensions: dimensions(),
  index: String.t(),
  schema: module(),
  version: pos_integer()
}
```

---

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