What Zespan looks for
Each finding says how sure Zespan is (see Findings → Tiers), and shows the evidence it rests on.
Check families
Findings on a trace are grouped into check families. These are the names you filter by on the Findings page:What the checks need
- Inputs must be recorded. Truncation, block and stream-cut detection read the finish outcome from a current SDK or OpenTelemetry mapping; empty-answer detection also works from captured answer text. See the finish outcome reference.
- Trace checks read what was recorded. The answer, the conversation, the system instructions, the tool definitions and the tool results must have been captured in a form the check can read. A check that lacks an input reports that it could not run and names the input; it never passes. See Capture fields.
- Windows, not single calls. Rate checks compare the last hour with the hour before and report a rise. One isolated bad call, or a rise concentrated in one or two stuck runs, is not flagged.
- Intended fallbacks look like swallowed errors. A failed call followed by a fallback answer marks the trace failed whether the fallback was intended or not.
- Retries inside a model client are not seen. Retry detection covers tool calls that report a retry count.
- Repeated tool calls. The repeated-tool-call signal does not compare arguments, so the same tool called for different items can look like a loop. The loop check that compares arguments and results is the stronger one.
- Evaluator drops need volume. An evaluator drop gets a named factor only with at least 30 evaluated samples in each window.
Next steps
- Findings — the findings on a trace and the project’s Findings page
- Finish outcome reference — the fields behind truncation, block, empty and stream-cut detection
- Capture fields — what each check reads and why a check could not run
- Alerts — alert on the rate of cut-off, blocked and empty answers
- Traces — how each call ended

