Skip to content

Connecting traces

DialogAssert reads execution evidence from the telemetry your platform already emits. It does not require you to duplicate traces into another observability system in order to test your agents, and it never writes to your trace backend.

trace_source:
type: jaeger
endpoint: https://jaeger.internal/api
service: cards-banking-agent
Source Status
Jaeger Verified end-to-end against a live deployment
OpenTelemetry collector (OTLP) Supported
LangSmith export Supported
Generic OTel-compatible backend Supported, dialect detection applies

Only Jaeger has been exercised against a production-shaped third-party environment. The others are implemented against documented span shapes. If your backend is not listed, doctor will tell you what it could and could not read rather than failing silently.

Different frameworks describe the same events differently. Span names, attribute namespaces and payload nesting all vary, and tool arguments are frequently wrapped several layers deep or encoded.

DialogAssert separates the envelope (how a backend transports a span) from the dialect (how a framework names and nests its content), detects the dialect, and normalises before any check runs. See trace dialects.

A single conversation is often distributed across multiple traces, and incoming trace IDs are frequently not propagated. DialogAssert tries, in order:

  1. An explicit correlation key you configure.
  2. A detected framework metadata key, such as langsmith.metadata.trace_id.
  3. A self-recorded turn window — the time bracket DialogAssert observed around each turn it sent.

The strategy actually used appears in the report. A correlation fallback is disclosed rather than hidden, because a weaker correlation strategy means weaker turn attribution.

Before evaluating, DialogAssert records what it managed to observe: whether every turn was attributed, whether tool payloads decoded, and whether results were structured. Checks whose required evidence is incomplete return inconclusive rather than a verdict.