step-dispatcher
Internal system feature that drains deferred Tier-2 side-effects (currently webhook.send and mail.send) after their originating transaction commits. Listens via r.multiStreamProjection on the kumiko:system:step.dispatch-requested system event, performs the actual HTTP or mail delivery, then appends kumiko:system:step.dispatched or kumiko:system:step.dispatch-failed back onto the same stream so the outcome is recorded in the event log without a separate status table. Mount this feature explicitly via createStepDispatcherFeature() in your app’s feature list alongside any features that use r.step.webhook.send or r.step.mail.send. Requires the secrets feature (createSecretsFeature()) to be mounted — webhook.send auth resolves per-tenant through it, under step-dispatcher:webhook-auth.<name>. Every webhook.send request carries Idempotency-Key: <dispatch stream id>, stable across redeliveries of the same dispatch request; an explicit Idempotency-Key in headers takes precedence.
How it fits
Section titled “How it fits”What this feature needs to run (Requires).
flowchart TB
n_step_dispatcher["step-dispatcher"]
subgraph how_reqs["Requires"]
n_secrets["secrets"]
end
n_secrets --> n_step_dispatcher
Dependencies
Section titled “Dependencies”- Requires:
secrets - Activation: always on (not toggleable)