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.
Envelope versus dialect
Section titled “Envelope versus dialect”- 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.
Metadata aliasing
Section titled “Metadata aliasing”Frameworks put the same fact in different places. Aliasing maps them onto one internal name.
langsmith.metadata.trace_id ─┐otel.trace_id ├─→ conversation_idcustom.session.id ─┘Payload decoding
Section titled “Payload decoding”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.
Completeness tracking
Section titled “Completeness tracking”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.