100 synthetic cases × 5 passes · 1,500 recorded decisions
Decisions,
under inspection.
A reproducible look at how three AI models classified the same security evidence, five times each. These are saved outputs—not live browser inference.
- Jev
- TypeSafe System One decision model
- Terra
- OpenAI model through Codex CLI
- Opus
- Anthropic Claude Opus through Claude tooling
Loading recorded-method provenance…
Data caveats
01 / Scoreboard
The run at a glance
Errors stay in every denominator. Missing usage or cost stays unknown—not zero. Balanced accuracy is the mean of per-class recall over vulnerable, safe, and insufficient context.
02 / Comparison
Balanced accuracy & recall
| Model | Balanced accuracy | Vulnerability recall | False positive rate | False safe rate |
|---|
03 / Outcomes
Decision matrices
04 / Speed
The same 100 cases, in real time
Each lane replays that model’s own recorded per-decision latencies, compressed so the slowest finishes in about twelve seconds. Nothing is animated for effect — the pacing is the measured time each decision actually took.
Speed alone is easy to make flattering, so the counter shows decisions made and how many were right. A model can win the race and still be the wrong choice.
05 / Method
Same evidence in.
Saved decisions out.
Every evaluator received identical canonical evidence for 100 synthetic TypeScript/Node.js cases across injection, broken access control, and SSRF. Span paths are numbered rather than named, span text is label-neutral, and no context-resolution flags are shown to any model. The expected labels are part of the frozen corpus but never part of the evidence. A build-time check fails if any repeated path token concentrates in one label.
Every evaluator is also given the same per-outcome definitions: Jev receives them as typed Choice criteria and the reasoning models receive the identical text, built from one shared source so the two cannot drift apart.
Jev answers one five-way typed Choice and its full probability distribution is recorded; the selected option is scored exactly as Terra's and Opus's structured answers are scored. No threshold changes Jev's selection. Vulnerability recall counts vulnerable cases labeled vulnerable with any family; recall with the family required, family accuracy, and precision are in the data.
Model latency is the time around the model request only; end-to-end CLI time is recorded separately. Token counts for Claude include cache reads and writes. Jev probabilities are not compared with any frontier-model confidence value.
This is a descriptive demo, not a statistical benchmark. Everything here is a saved result: the page never calls a model, changes a decision, or sends data elsewhere.
Every case was put to every evaluator five times. Each pass is kept, so a model that gives a different answer to identical evidence is visible rather than averaged away, and the accuracy figures are taken over all five hundred answers per model rather than one pass.
Known limits. The expected labels were written by one author, so an arguable label is possible and would move these numbers. At 100 cases a difference smaller than roughly fifteen points is not distinguishable from noise, and per-class figures rest on about thirty cases each. The corpus is balanced by construction across the three outcomes; real code is overwhelmingly not vulnerable, so precision here does not transfer to production. Cases are hand-written rather than drawn from real repositories, which removes any chance a model memorised them and equally removes the messiness that makes real triage hard. Latency compares Jev’s API against frontier models driven through agentic command-line tools, so it reflects how each is actually operated here, not a like-for-like inference-speed measurement.
06 / Evidence
Case explorer
Loading cases…