Adapter boundary for portable boundary receipts.
:disabled, :observational, and :required are orchestration policies;
adapters only implement idempotent append and lookup. Any exception during
append is classified as ambiguous because the write may have committed.
Summary
Functions
Returns the mandatory content-addressed reference for a receipt payload.
Types
Callbacks
@callback append( Spectre.Receipt.Envelope.t(), keyword() ) :: {:ok, :appended | :idempotent} | {:error, :ambiguous | term()}
@callback get_payload( String.t(), keyword() ) :: {:ok, Spectre.Receipt.Envelope.t()} | :not_found | {:error, term()}
@callback lookup( String.t(), keyword() ) :: {:ok, Spectre.Receipt.Envelope.t()} | :not_found | {:error, term()}
@callback put_payload( Spectre.Receipt.Envelope.t(), keyword() ) :: {:ok, String.t()} | {:error, term()}
Functions
@spec append(normalized(), Spectre.Receipt.Envelope.t(), keyword()) :: {:ok, :appended | :idempotent} | {:error, term()}
@spec get_payload(normalized(), String.t(), keyword()) :: {:ok, Spectre.Receipt.Envelope.t()} | :not_found | {:error, term()}
@spec lookup(normalized(), String.t(), keyword()) :: {:ok, Spectre.Receipt.Envelope.t()} | :not_found | {:error, term()}
@spec normalize(config()) :: {:ok, normalized()} | {:error, term()}
@spec payload_capable?(normalized()) :: boolean()
@spec payload_ref(Spectre.Receipt.Envelope.t()) :: String.t()
Returns the mandatory content-addressed reference for a receipt payload.
@spec put_payload(normalized(), Spectre.Receipt.Envelope.t(), keyword()) :: {:ok, String.t()} | {:error, term()}