# `Accrue.Entitlements.Repair`
[🔗](https://github.com/szTheory/accrue/blob/accrue-v1.5.1/lib/accrue/entitlements/repair.ex#L1)

Bounded, host-authorized recovery actions for entitlement operations.

This context deliberately exposes named actions rather than a generic repair
dispatcher. It never reconstructs accounts or invokes provider lifecycle or
financial APIs. The host resolves the account and makes the authorization
decision before calling this boundary; this module records the operator's
bounded intent in the same transaction as any delegated local repair work.

# `outcome`

```elixir
@type outcome() :: %{
  :action =&gt; atom(),
  :disposition =&gt; atom(),
  optional(:audit_id) =&gt; integer(),
  optional(:current_revision) =&gt; non_neg_integer(),
  optional(:diagnostic) =&gt; map()
}
```

# `drain_reconciliation_backlog`

```elixir
@spec drain_reconciliation_backlog(Accrue.Entitlements.Account.t(), map(), keyword()) ::
  {:ok, outcome()} | {:error, atom()}
```

# `escalate_duplicate_charge`

```elixir
@spec escalate_duplicate_charge(Accrue.Entitlements.Account.t(), map(), keyword()) ::
  {:ok, outcome()} | {:error, atom()}
```

# `recover_history_cursor`

```elixir
@spec recover_history_cursor(Accrue.Entitlements.Account.t(), map(), keyword()) ::
  {:ok, outcome()} | {:error, atom()}
```

# `replace_revoked_device`

```elixir
@spec replace_revoked_device(Accrue.Entitlements.Account.t(), map(), keyword()) ::
  {:ok, outcome()} | {:error, atom()}
```

# `retry_missed_notification`

```elixir
@spec retry_missed_notification(Accrue.Entitlements.Account.t(), map(), keyword()) ::
  {:ok, outcome()} | {:error, atom()}
```

# `retry_provider_check`

```elixir
@spec retry_provider_check(Accrue.Entitlements.Account.t(), map(), keyword()) ::
  {:ok, outcome()} | {:error, atom()}
```

# `review_ownership_conflict`

```elixir
@spec review_ownership_conflict(Accrue.Entitlements.Account.t(), map(), keyword()) ::
  {:ok, outcome()} | {:error, atom()}
```

# `rotate_signing_keys`

```elixir
@spec rotate_signing_keys(Accrue.Entitlements.Account.t(), map(), keyword()) ::
  {:ok, outcome()} | {:error, atom()}
```

---

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