Host adapter for execution event persistence and live publication.
Events carry an opaque :metadata map so hosts can thread metering,
provenance, and other policy context without changing the shared runner
contract.
Summary
Types
@type event() :: %{ :execution_id => WorkflowStem.Types.execution_id(), :kind => atom(), optional(:payload) => map(), optional(:metadata) => map(), optional(:seq) => non_neg_integer(), optional(:at) => DateTime.t() }
Callbacks
@callback append_event(WorkflowStem.Types.tenant_id(), event()) :: {:ok, event()} | {:error, term()}
@callback publish_event(event()) :: :ok
@callback replay( WorkflowStem.Types.tenant_id(), WorkflowStem.Types.execution_id(), keyword() ) :: {:ok, [event()]} | {:error, term()}