The model
Sessions
A session is one conversation, identified by your conversation id — Eldros never invents it when you have one. On WebSocket connections the connection is the session; on HTTP turn-based protocols the id rides each request.session_id= on the turn wins; otherwise the ambient session (set_session() at connect) applies; a fresh id is minted only for genuinely single-shot calls.
Turns
A turn is one user message and the agent’s reply — the unit our judges score. Each turn is a span carrying the transcript as structured events, so the judge reads clean role/content pairs rather than raw protocol frames.Traces
Everything the agent did during the turn — LLM calls, tool invocations — nests under the turn span automatically, because the turn is the active span while your handler runs. No ids to manage: the correlation is structural.Transcripts are what get judged; traces explain the verdict. Both flow through one OpenTelemetry pipeline — there is no second integration to add later.