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.
Summary
Types
@type outcome() :: %{ :action => atom(), :disposition => atom(), optional(:audit_id) => integer(), optional(:current_revision) => non_neg_integer(), optional(:diagnostic) => map() }
Functions
@spec drain_reconciliation_backlog(Accrue.Entitlements.Account.t(), map(), keyword()) :: {:ok, outcome()} | {:error, atom()}
@spec escalate_duplicate_charge(Accrue.Entitlements.Account.t(), map(), keyword()) :: {:ok, outcome()} | {:error, atom()}
@spec recover_history_cursor(Accrue.Entitlements.Account.t(), map(), keyword()) :: {:ok, outcome()} | {:error, atom()}
@spec replace_revoked_device(Accrue.Entitlements.Account.t(), map(), keyword()) :: {:ok, outcome()} | {:error, atom()}
@spec retry_missed_notification(Accrue.Entitlements.Account.t(), map(), keyword()) :: {:ok, outcome()} | {:error, atom()}
@spec retry_provider_check(Accrue.Entitlements.Account.t(), map(), keyword()) :: {:ok, outcome()} | {:error, atom()}
@spec review_ownership_conflict(Accrue.Entitlements.Account.t(), map(), keyword()) :: {:ok, outcome()} | {:error, atom()}
@spec rotate_signing_keys(Accrue.Entitlements.Account.t(), map(), keyword()) :: {:ok, outcome()} | {:error, atom()}