Deterministic projection interface for canonical Definitions.
Projection identity binds the Definition Ref, generator ID/version, optional evidence digest, and generated content. A generator change is therefore observable even when two generator implementations emit equal content.
Summary
Functions
Generates the exact Audit projection.
Generates a projection with the supplied deterministic generator.
Generates a projection with explicit generator options.
Verifies the digest and Definition binding of an existing projection.
Types
@type t() :: %Spectre.Projection{ content: term(), definition_ref: Spectre.Definition.Ref.t(), digest: String.t(), generator_id: String.t(), generator_version: pos_integer(), input_evidence_digest: String.t() | nil }
Callbacks
@callback id() :: String.t()
@callback project( Spectre.Definition.Canonical.t(), keyword() ) :: {:ok, term()} | {:error, term()}
@callback version() :: pos_integer()
Functions
@spec generate(Spectre.Definition.Canonical.t()) :: {:ok, t()} | {:error, term()}
Generates the exact Audit projection.
@spec generate(Spectre.Definition.Canonical.t(), module()) :: {:ok, t()} | {:error, term()}
Generates a projection with the supplied deterministic generator.
@spec generate(Spectre.Definition.Canonical.t(), module(), keyword()) :: {:ok, t()} | {:error, term()}
Generates a projection with explicit generator options.
@spec verify(t(), Spectre.Definition.Canonical.t()) :: :ok | {:error, term()}
Verifies the digest and Definition binding of an existing projection.