StatifierOban

Durable timers and async invoke execution for Statifier, backed by Oban.

Statifier's session runs delayed sends on Process.send_after/3, so every in-flight timer dies with the node: a deploy silently drops every pending delayed send. Charts with human-timescale delays - follow-ups, escalations, timeouts measured in hours or days - need the timers to outlive the process. This package consumes Statifier's effect vocabulary and schedules that work in Oban instead.

Installation

def deps do
[
{:statifier_oban, "~> 0.1"}
]
end

Status

Early, under active development. Delayed sends run through Oban end to end - schedule from the SendDelayed effect, cancel from the Cancel effect, deliver behind the run-liveness check - and use StatifierOban.Invoke.Handler is the Oban-backed invoke handler base on statifier's handler registry.

The contract this package implements

The host-facing pattern is already specified upstream, and this package is one implementation of it rather than the definition of it:

Read both before adding code here. One limit recorded upstream shapes what this package can promise:

(An earlier limit is gone: ADR-0059 in statifier-ex added a per-execution ordinal to the durable-timer effects, so a hand-written id on a <send delay="..."> inside a <foreach> is fully supported and the old leave-the-id-off guidance is retired.)

Scope

In scope: delayed sends into Oban jobs with cancellation, and an Oban-backed invoke-handler base built on Statifier's per-session handler registry.

Out of scope: storage of chart state, and the handler registry itself. Both belong to other packages.