Chimeway.Signal (chimeway v1.0.0)

Copy Markdown View Source

Host-facing API boundary for submitting workflow progression signals.

Host applications call track/4 with a tenant id, actor id, event name, and optional payload. The function durably persists a Chimeway.Signals.Signal row and atomically enqueues a Chimeway.Dispatch.SignalRouterWorker job carrying the new signal's id. The worker (Phase 27-02) is responsible for routing the signal to whichever workflow runs are waiting on it.

Both side effects share a single Ecto.Multi transaction — if the Oban insert fails, the Signal row is rolled back; no orphaned signals or jobs.

Summary

Functions

track(tenant_id, actor_id, event_name, payload \\ %{})

@spec track(String.t(), String.t(), String.t(), map()) ::
  {:ok, Chimeway.Signals.Signal.t()} | {:error, Ecto.Changeset.t() | term()}