Spectre.Invocation (Spectre v0.3.0)

Copy Markdown View Source

A concrete, revision-fenced request to execute one staged effect.

Invocations describe work without embedding executable clients or callbacks. A direct Runtime caller returns the descriptor to Spectre.Runtime.resume/3. A Spectre.Instance instead retains the owning Run, dispatches the work outside its mailbox, and accepts only a correlated internal receipt before applying the returned continuation.

Summary

Types

t()

@type t() :: %Spectre.Invocation{
  attempt: pos_integer(),
  id: String.t(),
  idempotency_key: String.t(),
  kind: :effect,
  metadata: map(),
  operation: {atom(), atom() | String.t() | nil},
  owner: module() | nil,
  ref: Spectre.Run.Ref.t(),
  run_id: String.t(),
  run_revision: non_neg_integer(),
  scope: Spectre.Definition.scope() | nil,
  status: :pending,
  subject_id: String.t()
}