# `MingaEditor.Frontend.ResourcePolicy`
[🔗](https://github.com/jsmestad/minga/blob/main/lib/minga_editor/frontend/resource_policy.ex#L1)

Versioned frontend hard-dimension policy advertised during capability negotiation.

Zero-valued dimensions are unadvertised. Limits describe admission boundaries
only; payload-derived usage stays local to the producer and privacy-safe telemetry.

# `adaptation_descriptor`

```elixir
@type adaptation_descriptor() :: %{
  dimension: dimension(),
  rejected_value: pos_integer(),
  adapted_value: pos_integer()
}
```

# `dimension`

```elixir
@type dimension() :: :frame_bytes | :frame_commands | :window_rows
```

# `t`

```elixir
@type t() :: %MingaEditor.Frontend.ResourcePolicy{
  max_frame_bytes: non_neg_integer(),
  max_frame_commands: non_neg_integer(),
  max_window_rows: non_neg_integer(),
  version: non_neg_integer()
}
```

# `adaptation`

```elixir
@spec adaptation(dimension(), integer(), integer()) ::
  {:ok, adaptation_descriptor()} | :error
```

Validates an explicit adapted-retry descriptor for one named bounded dimension.

# `advertised?`

```elixir
@spec advertised?(t(), dimension()) :: boolean()
```

Returns whether a frontend advertises a hard limit for the named dimension.

# `new`

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

Builds the version-one resource policy appended by capability format 2.

# `unadvertised`

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

Returns the legacy policy with no advertised hard dimensions.

---

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