Synaptic.AuditStore (synaptic v0.3.0-alpha.11)

View Source

Ephemeral append-only audit storage for guardrail and workflow safety events.

Records are stored with TTL-based retention and can be queried by audit_id (which is usually the workflow run_id when one exists).

Summary

Types

entry()

@type entry() :: %{
  record_id: String.t(),
  audit_id: String.t(),
  run_id: String.t() | nil,
  category: atom() | String.t(),
  event: atom() | String.t(),
  metadata: map(),
  sequence: non_neg_integer(),
  prev_hash: String.t() | nil,
  hash: String.t(),
  inserted_at: non_neg_integer(),
  expires_at: non_neg_integer()
}

Functions

delete(audit_id)

@spec delete(String.t()) :: non_neg_integer()

prune_expired()

@spec prune_expired() :: non_neg_integer()

put(audit_id, run_id, category, event, metadata, ttl_ms \\ 604_800_000)

@spec put(
  String.t(),
  String.t() | nil,
  atom() | String.t(),
  atom() | String.t(),
  map(),
  pos_integer() | nil
) :: entry()

records(audit_id)

@spec records(String.t()) :: [entry()]

verify_chain(audit_id)

@spec verify_chain(String.t()) :: :ok | {:error, {:broken_chain, String.t()}}