Skip to content

Trace dialects

The first real third-party environment DialogAssert connected to exposed the integration problem every cross-estate product eventually meets: incoming trace IDs were not propagated, one conversation was distributed over multiple traces, span attributes were framework-specific, metadata was namespaced, tool payloads were deeply wrapped, and turn attribution was ambiguous.

The response is a normalisation layer that runs before any check sees anything.

  • The envelope is how a backend transports a span: Jaeger, OTLP, a vendor export.
  • The dialect is how a framework names and nests its content inside that span.

The same LangGraph run looks different through Jaeger and through a LangSmith export, and a LangGraph run and a Copilot Studio run look different through the same Jaeger. Both axes are detected separately.

Frameworks put the same fact in different places. Aliasing maps them onto one internal name.

langsmith.metadata.trace_id ─┐
otel.trace_id ├─→ conversation_id
custom.session.id ─┘

Tool arguments and results are frequently JSON-encoded strings inside an attribute, sometimes more than once, sometimes truncated by the backend. Decoding is bounded and explicit: DialogAssert attempts a fixed number of decode passes, records whether decoding succeeded, and marks the evidence unavailable rather than guessing at a partial payload.

An argument that could not be decoded produces an inconclusive result for any control that required it. It never produces a failure.

Normalisation records, per run:

Signal Meaning
Turn coverage Was every turn DialogAssert sent attributed to observed spans?
Correlation strategy Explicit key, detected framework key, or self-recorded turn window.
Payload decode Did tool arguments and results decode to structured values?
Result structure Were results structured, or free text?

All four appear in the report. A weaker correlation strategy is disclosed, because it means weaker turn attribution, and a reviewer is entitled to know that before trusting a sequencing finding.