Correlate, don't duplicate
An Actae execution is addressable at several levels; a tracing backend addresses traces and spans. The bridge is a metadata convention, not a schema change: attach trace_id and span_id when you record, and an Actae event can be found from the trace and vice versa.
- channel / cursor — the durable execution stream and ordered position.
- trace_id / span_id — the external trace context, carried in event metadata.
- fork receipt / execution id — fork and tool-ledger provenance, available as correlation tags.
Export durable events as GenAI spans
The ActaeOTelBridge replays a channel and emits one span per event, lifting the OpenTelemetry GenAI semantic conventions (request/response model, usage tokens, tool name) and the actae.* identity attributes. The Python and TypeScript bridges are dependency-free — pass the real OpenTelemetry tracer at runtime. Go uses the OTel API directly.
Two directions
Import: the OpenAI Agents SDK tracing processor and the Codex OTLP receiver mirror framework telemetry into Actae. Export: the bridge mirrors Actae's durable events into your tracer. Use either or both.
Actae does not push to a collector itself — the bridge runs in your process, so the server carries no observability egress or credentials. Spans are point-in-time projections of replayed events, not a reconstructed parent/child waterfall.