Catch the regression, and the change that caused it
When your AI agent gets worse in production, Tessary tells you exactly what caused it, fast enough to fix it before it does damage. Detection reads your live traffic; attribution names the change, whether it shipped in a PR or never touched your repo. The same attribution, run before the merge, flags the next risky PR, so either way you get the cause, not just the score that moved.
- Detects
- The regression in production, as a trend across grader verdicts.
- Attributes
- The failing quality dimension, traced back to the change that caused it.
- Gates
- The next PR: a trouble report posts and a GitHub Action can hold the merge.
The diff that broke production was already merged when you found out.
The pain is not that evals are hard to write. It is that the agent layer moves constantly, a release bundles a prompt edit, a code change, and a dependency bump into one diff, and breakage rarely announces which of them caused it. A score that moved is easy to see. The change that moved it is the work.
- 0.8%
of requests were misrouted on August 5, 2025, the first day of a routing bug Anthropic later documented in a public postmortem. The drop started small.
Anthropic engineering postmortem, 2025
- 16%
of Sonnet 4 requests were misrouted at the worst-impacted hour on August 31, almost a month later. The postmortem is blunt: "The evaluations we ran simply didn't capture the degradation users were reporting."
Anthropic engineering postmortem, 2025
Detect the drop, name the cause, gate the next change
Tessary watches the agent in production, traces a drop to the change behind it, and runs the same check on the next PR before it merges.
Watch the agent in production
Push traces over OTLP with the TypeScript or Python SDK, or pull a slice from Langfuse or Braintrust. Tessary runs graders over that traffic, natural-language checks and extracted tool errors, so what gets scored is what your users actually send.
Catch the drop as a trend
Graders score the live traffic and Tessary watches how their verdicts move over time. A regression surfaces as a shift in the trend, visible before a support ticket names it.
Trace it to the change that caused it
A failing grader names the quality dimension that broke. Tessary traces that dimension back through the agent chain to the change behind it: a prompt edit, a tool update, a dependency bump, an upstream agent whose output shifted, or a model provider update that never touched your repo.
Run the same check before the next merge
The same attribution engine runs before the merge. A diff classifier reads the PR, maps the touched surface to the failure families it endangers (tool-call errors, hallucinated citations, refusal spikes), and scores it against what broke last time. A trouble report posts on the PR and the GitHub Action can hold the merge.
From a moving score to the change behind it
What a catch looks like
A PR swaps the retrieval tool client. Risk routing flags the citation-accuracy family, which broke twice in the last quarter. The trouble report posts on the PR and the merge holds until someone looks.
A gate that lives in CI
The trouble report posts as a PR comment, in the place you already review code. One boundary to know: a gate only fires on changes that ship through a PR, so production detection stays on for everything that does not.
Grounded in production traffic
Graders run on real traces, ingested over OTLP or pulled from Langfuse or Braintrust, not on synthetic prompts that miss the inputs that actually break. Langfuse and Braintrust hold the traces and track the scores; Tessary adds which change moved them.
Lineage for every change, diff or not
Commit-SHA lineage ties each run to the deploy that was live, which rules the diff in or out. Attribution also covers the causes that never appear in a diff at all.
Questions about regression detection
Related pages
Pre-deploy failure prediction
Read the next PR for the failures it endangers, scored against what your production traffic actually shows.
Agent behavior drift
When behavior shifts with no deploy at all: a provider update, an upstream agent, a tool returning different data.
Agent failure replay
Walk a failed production session turn by turn to the decision that went wrong.
LLM evals that evolve
Graders drafted from observed behavior that sharpen as bugs are fixed.
Find the change behind the next regression
The next time a grader trend drops, you get the change that caused it, not just the alert, and the next risky PR gets a trouble report before it merges. No credit card required to start.