Adapter boundary for portable boundary receipts.
:disabled, :observational, and :required are orchestration policies;
adapters implement idempotent append and lookup, with optional payload
staging and erasure callbacks. Any exception during append is classified as
ambiguous because the write may have committed.
Summary
Functions
Idempotently deletes one exact content-addressed receipt payload.
Returns whether a configured sink can delete staged receipt payloads.
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 delete_payload(normalized(), String.t(), keyword()) :: {:ok, :deleted | :not_found | :not_configured} | {:error, term()}
Idempotently deletes one exact content-addressed receipt payload.
@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_erasure_capability(normalized()) :: :ok | {:error, term()}
Returns whether a configured sink can delete staged receipt payloads.
@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()}