# `DocShell.Presentation.Renderer.CapabilityRequirement`
[🔗](https://github.com/futhr/doc_shell/blob/v2.0.0/lib/doc_shell/presentation/renderer/capability_requirement.ex#L1)

States what a page needs from a renderer for one portable feature.

Essential requirements must match a renderer capability. A nonessential
requirement may fall back only when `fallback_digest` still identifies the
exact projected feature and page content. This makes degradation explicit and
guards against a renderer claiming support after silently dropping content.

# `t`

```elixir
@type t() :: %DocShell.Presentation.Renderer.CapabilityRequirement{
  acceptable_states: [:fallback | :enhanced | :connected],
  essential?: boolean(),
  fallback_digest: String.t() | nil,
  feature_id: String.t()
}
```

A normalized page capability requirement.

# `validate`

```elixir
@spec validate(t()) :: :ok | {:error, term()}
```

Validates a page capability requirement.

---

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