Skip to main content
Zespan records how each model call ended in a small, fixed set of fields on the span, from your SDK or from OpenTelemetry attributes. The fields hold enums, yes/no flags, numbers and short codes only: never prompt or answer text, never an error message. That is why they are available with content capture off. Anything that does not match the rules below is dropped (the rest of the span is kept). They drive the chips on traces and spans (see How a call ended), the Outcome filter on the traces list, the alert metrics truncated_rate, blocked_rate and empty_response_rate (see Alerts), and the causes shown on issues and incidents.

Fields

Which chip a call gets:

Causes

When one of these outcomes is the only evidence a failed or degraded call has, Zespan names the cause and gives fix steps. The cause keys are output_truncated, provider_refusal, empty_response and stream_incomplete. “Maximum tokens reached” is always an output truncation, never a context-length error.

Next steps

  • Traces — the chips, the Outcome filter, and the fix for each outcome
  • Alerts — alert on the rate of cut-off, blocked and empty answers
  • OpenTelemetry integration — the attributes read when you send OTel spans directly
  • Silent-failure coverage — the silent failures Zespan looks for and what each check needs