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

Shared fixtures and semantic snapshots for independent site renderers.

HTML byte equality is deliberately absent. A renderer adapter records the
portable semantics observed in its hosted or static surface; `compare/2`
checks content identity, routes, headings, links, landmarks, accessible names
and ordinary actions while allowing an honest unavailable static state for a
live-only action.

# `compare`

```elixir
@spec compare(
  DocShell.Presentation.Conformance.Surface.t(),
  DocShell.Presentation.Conformance.Surface.t()
) :: :ok | {:error, term()}
```

Compares hosted and static surfaces, including honest live-action degradation.

# `fixture`

```elixir
@spec fixture() :: {:ok, map()} | {:error, term()}
```

Loads and validates the bundled renderer-conformance fixture.

# `fixture_path`

```elixir
@spec fixture_path() :: Path.t()
```

Returns the bundled renderer-conformance fixture path.

# `surface`

```elixir
@spec surface(DocShell.Presentation.Site.t(), :hosted | :static, map()) ::
  {:ok, DocShell.Presentation.Conformance.Surface.t()} | {:error, term()}
```

Builds a validated semantic surface from renderer-observed page records.

---

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