What's the difference between a trace and a span?
A trace is the whole turn; a span is one step inside it. A trace covers everything between a user’s message and the agent’s full response: every LLM call, every tool call, every step it took to get there. A span is a single one of those steps, one LLM call or one tool call, with its own start time, end time, and payload.
The relationship is containment, not overlap. A session holds every trace from one conversation, a trace holds every span from one turn, and a span never spans more than one turn. That nesting is what lets a finding point at exactly where things went wrong: “the third tool call in this turn returned bad data” is a span-level fact, “this turn answered the wrong question” is a trace-level one, and neither substitutes for the other.
What a Tessary trace actually stores follows the same shape: one trace per turn, keyed to your own ids, with the spans nested inside it as the evidence behind every classifier finding.