A tool that grades your agent should be willing to be graded itself. Every number below was produced by a command you can run, against a corpus you can rebuild, and is read straight out of the run's artifact file — nothing here is typed by hand. The limitations are in the body, not a footnote.
A corpus where the answer is known exactly: 100 customer-support agent traces, 60 of them carrying one deliberately planted failure of six known kinds, 40 clean. The pipeline was given the traces and nothing else — no labels, no hint that anything was planted, no list of what to look for.
It independently discovered all 6 of the 6 planted failure types and named them in its own words. Judging every trace against every discovered mode, it flagged 60 of the 60 traces that carried a planted failure and 5 of the 40 clean ones — 100.0% recall at 92.3% precision, Cohen's κ of 0.894 against the ground truth. Every one of the 600 judge cells returned a verdict; none were dropped.
| Threshold set before the run | Required | Measured | Result |
|---|---|---|---|
| discovery (of 6 planted types) | >= 5 | 6/6 | pass |
| judge precision (pooled) | >= 0.85 | 0.923 | pass |
| judge recall (pooled) | >= 0.8 | 1 | pass |
| trace-level TPR | >= 0.85 | 1 | pass |
| trace-level TNR | >= 0.9 | 0.875 | fail |
| Cohen's kappa | >= 0.7 | 0.894 | pass |
npm run validate:planted
100 traces · seed 42 · judged by google/gemini-3.7-flash · 664 model calls · $0.66 · run 2026-08-20 · prompts 7fd23382
TRAIL pairs 148 real agent traces (GAIA and SWE-Bench scaffolds) with 841 errors annotated by human experts — each with a category from their 21-category taxonomy, and the exact span where it happens. We read 40 of those traces cold. The annotations were never visible to any stage of the pipeline.
It flagged 34 of the 39 traces that contain a human-annotated error — 87.2% recall. That is the good news, and it is the part that matters most for the product: given a corpus, it finds the traces worth looking at. The rest is not good news. It independently surfaced only 2 of the 12 error categories humans catalogued, and when it pointed at where in a trace a failure happened, it landed on the annotated span 18.8% of the time — against a 21.4% rate for pointing at random. Localization here is at chance.
| Threshold set before the run | Required | Measured | Result |
|---|---|---|---|
| TRAIL taxonomy coverage (of 12 categories occurring >= 3x) | >= 0.5 | 2/12 | fail |
| trace-level recall (traces with >= 1 annotated error) | >= 0.7 | 0.872 | pass |
| trace-level Cohen's kappa | >= 0.3 | -0.043 | fail |
npm run validate:trail
40 traces · seed 42 · judged by google/gemini-3.7-flash · 292 model calls · $2.14 · run 2026-08-20 · prompts 7fd23382
The MAD corpus carries 19 real multi-agent traces (AppWorld, HyperAgent, AG2, ChatDev, MetaGPT, GAIA) in which three human annotators independently marked which MAST failure modes are present. We ran the pipeline over the full transcripts with no sight of those labels, then matched the modes it invented against MAST's using a different model family, in both presentation orders.
None of them matched. 0 of the 5 modes it discovered corresponded to any of the 16 MAST modes present in these traces, so judge-versus-human agreement could not be computed at all. The modes it found are concrete and task-level — "Hallucination of Code Artifacts and Outputs", "Premature Task Abort or Incomplete Generation". MAST's are process-level properties of multi-agent systems — "Lack of result verification", "Fail to elicit clarification", "Ignoring suggestions from agents". Both are reasonable descriptions of the same transcripts; they are answers to different questions.
| Threshold set before the run | Required | Measured | Result |
|---|---|---|---|
| MAST coverage (of 11 modes occurring >= 3x) | >= 0.5 | 0/11 | fail |
| judge-vs-human kappa (pooled) | >= 0.4 | NaN | fail |
npm run validate:mad
19 traces · seed 42 · judged by google/gemini-3.7-flash · 143 model calls · $0.92 · run 2026-08-20 · prompts 7fd23382
τ²-bench — how much benchmark failure is recoverable from the transcript alone — is wired up and has not produced a publishable run. The first attempt lost a third of its judge matrix part-way through when the model key hit its spend limit, and the harness now refuses to score a run with that many holes rather than quoting rates computed over whatever survived. It will appear here when it completes cleanly.
Two things nobody has measured at all: whether the failure modes it discovers are the ones a team would actually prioritise, and whether the insights change what anyone does. Those need users, not benchmarks.