# `LLMDB.ExecutionContract`
[🔗](https://github.com/agentjido/llm_db/blob/main/lib/llm_db/execution_contract.ex#L1)

Deterministic runtime-contract enrichment for packaged provider and model data.

This module upgrades descriptive catalog data into executable metadata where we
have a stable contract for doing so. Providers and models we cannot execute
safely are marked `catalog_only: true` so downstream consumers can distinguish
between descriptive and executable entries without ad hoc heuristics.

Execution metadata follows one precedence rule: explicit model operation
entries override provider/runtime-derived entries, which override capability
and modality inference. Validation uses the same inference functions, so it
cannot require an operation that enrichment would not derive.

# `enrich`

```elixir
@spec enrich([LLMDB.Provider.t()], [LLMDB.Model.t()]) ::
  {[LLMDB.Provider.t()], [LLMDB.Model.t()]}
```

# `enrich_model`

```elixir
@spec enrich_model(LLMDB.Model.t(), LLMDB.Provider.t() | nil) :: LLMDB.Model.t()
```

# `enrich_provider`

```elixir
@spec enrich_provider(LLMDB.Provider.t()) :: LLMDB.Provider.t()
```

---

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