Docket.Telemetry (docket v0.1.0)

Copy Markdown View Source

Live :telemetry emission for run events.

Every committed transition emits one telemetry event per Docket.Event it produced, so live UIs and instrumentation can observe runs without parsing checkpoint payloads. Emission is observability-only: production emits after the backend commit, handlers run via :telemetry.execute/3 with its usual failing-handler detachment, and delivery never affects the run.

Event catalog

Event nameFrom event type
[:docket, :run, :initialized]:run_initialized
[:docket, :run, :completed]:run_completed
[:docket, :run, :failed]:run_failed
[:docket, :checkpoint, :committed]:checkpoint_committed
[:docket, :node, :completed]:node_completed
[:docket, :node, :failed]:node_failed
[:docket, :channel, :updated]:channel_updated
[:docket, :edge, :triggered]:edge_triggered
[:docket, :interrupt, :requested]:interrupt_requested
[:docket, :interrupt, :resolved]:interrupt_resolved

Measurements: %{step: non_neg_integer(), seq: pos_integer()}.

Metadata: %{run_id, graph_id, graph_hash, node_id, channel_id, task_id, payload, event}event is the full Docket.Event; the ID keys are nil when the event does not carry them, and payloads never contain channel values (matching the event contract).

Summary

Functions

Emits one telemetry event per run event.

Returns the bounded metadata projection safe to use as metric labels.

Functions

emit_events(run, events)

@spec emit_events(Docket.Run.t(), [Docket.Event.t()]) :: :ok

Emits one telemetry event per run event.

Unknown event types are skipped rather than raised: telemetry must never take down a run.

metric_metadata(event, metadata)

@spec metric_metadata([atom()], map()) :: map()

Returns the bounded metadata projection safe to use as metric labels.