Rebuildable projection over a workflow's run-index journal.
Run-index entries are lookup facts, not execution state. They let the Jido-native runtime rebuild "which runs exist for this workflow?" from the journal boundary without scanning storage adapter internals.
Duplicate entries for the same run are idempotent when they carry the same workflow and timestamp. Conflicting or malformed persisted entries are kept as anomalies so callers can surface index drift without losing the valid portion of the read model.
Summary
Functions
Returns malformed or conflicting index facts discovered during replay.
Returns a new empty run-index projection.
Rebuilds a run-index projection from durable journal entries.
Replays additional run-index entries into an existing projection.
Returns indexed run ids in the same deterministic order as runs/1.
Returns indexed run summaries ordered by index timestamp and run id.
Returns the workflow this index projection describes.
Types
@type run_summary() :: %{ run_id: String.t(), workflow: String.t(), indexed_at: DateTime.t(), queue: String.t() }
@type t() :: %Squidie.Runtime.RunIndexProjection{ anomalies: [anomaly()], runs: %{optional(String.t()) => run_summary()}, workflow: String.t() | nil }
Functions
Returns malformed or conflicting index facts discovered during replay.
Returns a new empty run-index projection.
@spec rebuild([Squidie.Runtime.DispatchProtocol.Entry.t()]) :: t()
Rebuilds a run-index projection from durable journal entries.
@spec replay(t(), [Squidie.Runtime.DispatchProtocol.Entry.t()]) :: t()
Replays additional run-index entries into an existing projection.
Returns indexed run ids in the same deterministic order as runs/1.
@spec runs(t()) :: [run_summary()]
Returns indexed run summaries ordered by index timestamp and run id.
Returns the workflow this index projection describes.