All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Entries for unreleased work are not written here directly. Each issue drops a
fragment in changelog.d/; the fragments are assembled
into a version section at release. See that README for the format and for when a
change warrants an entry at all.
[0.4.1] 2026-09-06
Patch release: an Oban scheduling point emitted under a durable driver now lands on the step span open in the emitting process instead of rooting a trace of its own.
Changed
- 2026-09-06: corrects the 0.3.0 entry for
OpentelemetryStatifier.Oban.setup/0,1. A scheduling event lands on the macrostep span that armed it when the session is stepping in the emitting process, and on the step span open there under a durable driver.
Fixed
- A
statifier_obanscheduling event now falls back to the step span open in the emitting process whenscopeis a host's durable run id, instead of rooting a trace of its own.
[0.4.0] 2026-09-02
Minor release: a host with its own durable stepper can now declare the parent span, and a subscriber can resolve an open macrostep span by key.
Added
OpentelemetryStatifier.Parent.register/2,unregister/1andwithin/3let a host with its own durable stepper declare the span its macrostep spans nest inside, the waystatifier_persistence's step span already does.OpentelemetryStatifier.SpanContext.lookup/2resolves the open macrostep span for a(session_id, macrostep)pair to its W3C trace and span ids, so astatifier_uisubscriber can be wired to it as an:otel_contextproducer directly.
Fixed
- The macrostep span now carries
statifier.driver, so a backend can tell a durable macrostep from a session-hosted one.
[0.3.0] 2026-09-01
Minor release: the bridge now covers the family sibling packages.
Added
- Adds
OpentelemetryStatifier.Persistence.setup/0,1, bridging the fourteen[:statifier_persistence, ...]events into astatifier_persistence.run.stepspan with the storage, lock and lifecycle detail inside it. - Adds
OpentelemetryStatifier.Oban.setup/0,1, bridging the eleven[:statifier_oban, ...]events: scheduling events onto the macrostep span that armed them, and each delivery event as its own span linked to the arming trace throughcaller_context.
Changed
- A macrostep span now nests inside the
statifier_persistence.run.stepspan around it, instead of always rooting its own trace. With no sibling setup attached, nothing changes.
[0.2.0] 2026-09-01
Minor release: the bridge tracks the statifier 2.4 line.
Changed
- The
statifierrequirement moves from~> 2.0to~> 2.4, the release whose published guides carry the design this bridge implements. Anyone reading the engine'sdocs/opentelemetry.mdalongside the bridge now reads the version the bridge is built and tested against.
[0.1.2] 2026-08-27
Patch release: refreshes the published documentation with worked examples. No code changes.
Changed
- README gains a worked card-authorization example - chart, setup, the four
macrostep spans it exports, and an invoke handler for
myapp:authorize- plus a signup-wizard A/B example showing why chart vocabulary lands in attributes rather than span names. Every snippet is executed by the suite.
[0.1.1] 2026-08-24
Patch release: brings the published documentation to the shared statifier docs standard. No code changes.
Changed
- The hexdocs no longer publish the repo's ADRs, and
mix docscompletes with zero warnings (CHANGELOG.md is on the undefined-reference skip list for its changelog.d link). - README gains the standard badge row (CI, hex.pm version and downloads, hex docs, license), and the License section links to the LICENSE file by absolute GitHub URL so the link also works on hexdocs.
[0.1.0] 2026-08-22
First release: the OpenTelemetry bridge for the
statifier statechart engine, built on
its public :telemetry events only. A statechart macrostep is a span;
effect and trace telemetry events are span events on it; each macrostep
roots its own trace, stitched to its neighbors with span links. The design
is recorded upstream in statifier-ex's docs/opentelemetry.md and
st-ADR-0062.
Added
OpentelemetryStatifier.setup/1, which attaches the bridge to statifier's session telemetry and emits astatifier.macrostepspan per macrostep.- Records the effect, trace,
:interpret,:unroutable, and:halttelemetry events as span events on the open macrostep span, and links each macrostep span to the session's previous macrostep and (for an invoked child's:initializemacrostep) to the invoking parent's open span. Datamodel values are excluded unlesssetup/1receivesrecord_datamodel_values: true. - Cleans up the span table over the session lifecycle:
:terminateremoves the session's rows (ending a still-open macrostep span with an error status), and a periodic sweep does the same for sessions whose process died without a:terminate, so a brutal kill orphans no open span and leaks no rows. Withtrace: falsethe bridge degrades to macrostep-grained spans with effect-level span events, no configuration needed.