# `MingaEditor.Renderer.RejectionState`
[🔗](https://github.com/jsmestad/minga/blob/main/lib/minga_editor/renderer/rejection_state.ex#L1)

Terminal frontend failure and one-shot adapted-retry evidence.

# `adaptation`

```elixir
@type adaptation() :: %{
  generation: non_neg_integer(),
  frame_seq: non_neg_integer(),
  dimension: MingaEditor.Frontend.ResourcePolicy.dimension(),
  rejected_value: pos_integer(),
  adapted_value: pos_integer(),
  intent: MingaEditor.RenderPipeline.Intent.t()
}
```

# `t`

```elixir
@type t() :: %MingaEditor.Renderer.RejectionState{
  adaptation: adaptation() | nil,
  terminal: terminal() | nil
}
```

# `terminal`

```elixir
@type terminal() :: %{
  generation: non_neg_integer(),
  frame_seq: non_neg_integer(),
  last_good_frame_seq: non_neg_integer(),
  reason: atom(),
  intent: MingaEditor.RenderPipeline.Intent.t()
}
```

# `adapt`

```elixir
@spec adapt(
  t(),
  non_neg_integer(),
  non_neg_integer(),
  MingaEditor.Frontend.ResourcePolicy.adaptation_descriptor(),
  MingaEditor.RenderPipeline.Intent.t()
) :: t()
```

Records producer-local evidence bound to one rejected transaction and adapted intent.

# `blocks?`

```elixir
@spec blocks?(t(), MingaEditor.RenderPipeline.Intent.t()) :: boolean()
```

Returns whether an intent is byte-for-byte the same semantic intent that failed terminally.

# `clear`

```elixir
@spec clear(t()) :: t()
```

Clears terminal visibility and adaptation evidence after a material state change.

# `new`

```elixir
@spec new() :: t()
```

Returns empty rejection state.

# `terminal`

```elixir
@spec terminal(
  t(),
  non_neg_integer(),
  non_neg_integer(),
  non_neg_integer(),
  atom(),
  MingaEditor.RenderPipeline.Intent.t()
) :: t()
```

Records a terminal failure while retaining the rejected semantic intent.

---

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