# `Mutare.CallRouting.ContractError`
[🔗](https://github.com/foxbenjaminfox/mutare/blob/v0.2.1/lib/mutare/call_routing/contract_error.ex#L1)

Raised when a macro-routing provider violates the extension contract.

The structured fields identify the provider, route, callback, rejected value, and reason where
they are known. Configuration syntax errors remain `ArgumentError`s; this exception is reserved
for conflicts and callback-backed extension failures.

# `t`

```elixir
@type t() :: %Mutare.CallRouting.ContractError{
  __exception__: true,
  callback: {atom(), non_neg_integer()} | nil,
  message: String.t(),
  provider: module() | nil,
  reason: atom() | nil,
  route: term(),
  value: term()
}
```

---

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