The fourteen components
Components 1–6 make the marginals interpretable; most careful evaluations already publish them. Components 7–9 are the missing column. 10–13 make it trustworthy. 14 makes it reproducible.
- Population and denominator
What set of items, how many, and where they came from. Every joint statistic below is a fraction of this set.
- Event definition
What counts as a positive — the thing a guard should catch — stated once, identically, for every system.
- Per-guard configuration
Version, threshold, and settings for each guard. A threshold moved between guards silently changes what a comparison means.
- Same-items confirmation
An explicit statement that every guard was evaluated on the same items. Same benchmark name is not the same item set.
- Full exposure
Every guard saw every applicable item. If an earlier guard's block gated later guards, say so — gated and ungated numbers answer different questions.
- Per-guard counts
Catches among positives and false positives among negatives, as counts with denominators, not only as rates.
- Union detection
Items caught by at least one guard, among positives on the stated full-exposure item set. It is unrecoverable from marginals.
- All-miss rate
Items caught by no guard, among positives on that same static item set. It equals 100% minus union detection; it is not, by itself, terminal deployment risk under routing, gating, or adaptation.
- Residual coverage
For each added guard: what it catches among the items the preceding set missed. This is the measured value of adding the guard.
- Intersections
Pairwise (and higher-order, where feasible) overlaps of catches or misses. Pairwise alone does not determine the higher-order structure; it still constrains it.
- Uncertainty
Intervals for the joint statistics, not only the marginals. A union estimate without uncertainty invites overreading.
- Missingness
Errors, refusals, and timeouts, and how each was scored. A timeout scored as a catch is a decision, not an accident.
- Order semantics
For sequential stacks: the order, and what a block at stage k means for the stages after it.
- Per-item release
One row per item with each guard's decision, when license and safety permit. This single artifact makes every statistic above recomputable by anyone.
The paste-in row
For a results table that already lists per-guard rates, the minimum viable disclosure is two added rows and three lines of caption:
| System | Catch rate on the positive set | |-------------------------|--------------------------------| | Guard A (version, thr.) | 91.0% (910 / 1,000) | | Guard B (version, thr.) | 88.0% (880 / 1,000) | | Any guard — union | __._% (___ / 1,000) | | No guard — all-miss | __._% (___ / 1,000) | Denominator: 1,000 positives, defined as <event definition>. Every guard scored every item independently (no gating). Errors/timeouts: <n>, scored as <policy>.
The row, demonstrated on public data
One evaluation in the census released per-item verdicts: BELLS's 2025 misuse-detection study published 170 prompts with eleven systems' decisions as columns. That release is the only per-item outcome release the census's bounded search found — so here is this page's arithmetic, run on it, for the five specialized supervisors in that file:
| System | Catch rate, 82 harmful prompts |
|---|---|
| Lakera Guard | 63.4% (52 / 82) |
| Prompt Guard | 6.1% (5 / 82) |
| LangKit | 30.5% (25 / 82) |
| NeMo Guardrails | 85.4% (70 / 82) |
| LLM Guard | 0.0% (0 / 82) |
| Any guard — union | 89.0% (73 / 82) |
| No guard — all-miss | 11.0% (9 / 82) |
The product of the five individual miss rates is 3.5%: an independence plug-in reference. The release-recomputed all-miss in this static OR aggregation is 11.0%: about 3.1× that plug-in on this subset. The same union flags 19 of the 50 benign prompts — a separate static benign-union column needed to interpret this aggregation, not a deployment utility assessment.
The ask, for benchmark authors
You evaluated multiple guardrails on a common benchmark. Did you retain one binary decision per item for every system? If so, would you consider publishing the union detection rate and the corresponding all-miss rate, together with the denominator and event definition? Those two rows identify static all-miss for the declared full-exposure evaluation without assuming independence — and I will gladly supply the calculation or a small reporting patch: bhavepranavwork@gmail.com.
Reference implementation
scripts/mjgd_reference.py computes every static component above from one decision per item per guard — union, all-miss, residual coverage in stack order, and pairwise intersections — and asserts its own identities (union + all-miss = denominator; residual coverage telescopes to the union; intersections respect their feasibility bounds) against synthetic fixtures in CI. It is ~a hundred lines, and it is the entire cost of the disclosure when per-item decisions were retained.
What this page does not claim: that any organization has adopted this standard; that the missing statistics, once measured, would show strong dependence; or that disclosure alone makes a stack safe. The census tracks the first; measurement — not assumption — settles the second; nothing settles the third.