Label semantics
The part integrators get wrong. A label is not a severity — severity is measured, published, and yours to derive. Every list on this page is generated from the served guidance, so it cannot drift from what the engine does.
Five classes, and the rule that assigns them
The served guidance publishes five label classes. Every label entry in a response also states its class in-band as label_class. Classify a label by membership in these lists — never by whether some other field happens to be present.
typed_hallucination_category in (citation, statute) dropped every manual_review_required label in SILENCE — that label carries no accusation category (it makes no fabrication claim, by design) and no advisory marker (it moves the verdict), so it fell through every branch of a detector written to catch exactly it. A partner reproduced this on a paragraph-pin finding and reported it (1.19.4). Read label against success / gap / review / advisory and treat anything in none of them as LOUD. Any field may be absent on any label; the label value never islabel_classlabel_class — success | gap | review | advisory | accusation — the same class the lists below give, stamped from the engine's own vocabulary as the envelope is served (stored records too), so no consumer needs a copy of these lists at all.The full served statement
accusation is new as a list: not_found_in_covered_volume, the attribution-class extras (pin_cite_out_of_range, case_name_mismatch, citation_year_mismatch, parallel_cite_mismatch, statute_section_not_found) and the quote lane's quote_not_found — the labels whose evidence makes a claim against the citation; read each with its label_metrics tier (case_name_mismatch is review-tier). The taxonomy is now EXHAUSTIVE over every label the engine produces: review gained ambiguous_multiple_matches (the corpus holds the citation more than once — you pick, never an accusation) and superseded_or_outdated (a REAL C.F.R. unit removed by the asked date — a currency finding, not a fabrication claim); negative_treatment_flag, in the published enum since the first envelope, is produced by nothing (reliance signals are served as the treatment block) and is listed as reserved with contradicts and wrong_jurisdiction. An entry with NO label_class carries a label in no class; treat it as LOUD. A response replayed from before this version lacks the field for at most 24 hours. The lists are also served at /.well-known/verdict-consumer-guidance.json (this document; no authentication) — there is no /v1/guidance route, and a 404 there means the wrong URL, not that the question cannot be answeredSuccess labels
The only labels that positively assert a verification outcome, and therefore the only ones that may reach a clean verdict.
Existence is not currency
verified_statute_exists says the section is real, not that it is in forcestatus.If you are gating on current law, derive your success set from
label_classes as usual, then additionally reject status in repealed, recodified, omitted, eliminated, former, historical_range, transferred, renumbered. null, range, reserved and vacant are not currency findings. Where a section was recodified, successor names the current section — which may sit in a different title.That status set is the statute lane’s.
verified_rule_exists carries its own, in the engine’s words: a rule number the appendix prints as [Abrogated …], [Reserved], [Transferred] or Renumbered is a REAL rule number and verifies, carrying status abrogated | reserved | transferred | renumbered as a CURRENCY advisory (null = live) — the same shape as a repealed U.S.C. section. A consumer that needs current law rejects a non-null statusa served section with a not_found pin is a VERIFIED section carrying a review flag: it counts as verified law for the document status (a regulations-only document is partially_verified, never unverified) and once in summary.regulations_review, not in regulations_partial; verdict_check_brief lists the pin label among its flags Pricing: no price: the pin check rides the section's unit.
Applies to
verdict_check_citations, verdict_check_brief, verdict_check_ai_output, verdict_get_law. Since guidance 1.14.1 (disclosure; the section gate has always been section-level); 1.17.0 (C.F.R. paragraph pins read); 1.18.0 (U.S.C. paragraph pins read).§ 401-02 where the source printed §§ 401–02 — verifies just the same, and the envelope keeps the dash glyph but not the section-mark count. A consumer that must catch that transcription defect needs its own source-versus-output check; this gate will not be its detector.Coverage gaps
A gap means “no corpus we hold claims this cite” — nothing more. It has already survived the rescue chain before you see it, so it is a meaningful review signal, but it is never proof of fabrication and must never block. Gate it as unknown.
typed_hallucination_categoryAccusations, and their published precision
Labels whose evidence makes a claim against the citation. Blocking is derived only where a label’s precision is measured and published; an unmeasured accusation is review-tier.
We measure our own labels and publish the numbers. Where a label's measured precision does not support blocking, the guidance says so — and your gate should read that rather than assume. A row marked finding is a structural finding the engine carries on a label (its precision applies to that finding); a row marked withdrawn is kept so an older stored record still reads correctly.
| Label | Tier | Precision | Measured |
|---|---|---|---|
| case_name_mismatch | review | 0.255 | 2026-08-21 |
| citation_year_mismatch | review | 0.667 | 2026-08-21 |
| case_name_variant | advise | n/a | release gate |
| caption_reversed (finding) | review | 1 | 2026-09-09 |
| REVIEW class, never the fabrication class: the case exists and the citation resolves. The pooled floor is 0.89 — it does NOT clear the 0.90 a blocking tier would want, which is why this finding demotes and asks for a look rather than accusing. It fires only where the lane reads BOTH party names from the document's own caption; end-to-end recall on running prose is lower than 0.968 and is not claimed | |||
| sovereign_mismatch (finding) | review | 0.71 | 2026-09-09 |
| REVIEW class, decided by the panel: the floor is 0.36 at n=7, nowhere near an accusation tier, and the class stays review until a larger harvest and a second panel say otherwise; the marker and the evidence do not change with the label | |||
| rule_absent (finding) | review | 0.89 | 2026-09-09 |
REVIEW class by the floor AND by construction: the store is the current ruleset with no renumbering history, so a correct 1982 citation to Bankruptcy Rule 752 is absent here too, and one signal never accuses. The evidence names a sibling ruleset holding the number (elsewhere), which is the commonest real error | |||
| supports | advise | 0.98 | 2026-09-08 |
| related_insufficient (withdrawn) | withdrawn | 0.4 | 2026-09-08 |
| WITHDRAWN as a label since 1.16.3 (the measurement is kept here so a pre-1.16.3 stored record's entry can be read); the block verdict remains with the closest description quoted, for the reader — a block verdict is never a label | |||
| not_found_in_covered_volume | block | n/a | release gate |
Fabrication-class labels run under a standing zero-false-positive release gate: every release re-proves zero false accusations over a fabricated/real probe corpus, and field false-positive classes are fixed same-day and disclosed.
Never gate on a shared type string
case_name_mismatch carries typed_hallucination_category: "citation" — the same string a genuine fabrication label carries — while measuring precision 0.255, which is why it is review, not block. A gate keyed on the type string promotes it and deletes a correct citation. Derive blocking from label_metrics.recommended_tier and nothing else.Review and advisory
A review label moves the verdict to review and makes no fabrication claim — it carries neither an accusation category nor an advisory marker, which is exactly why a field-keyed detector misses it.
An advisory label is informational: never a fabrication claim, never a blocking signal, and a clean verdict never rests on one.
Reserved, and everything else must be loud
These 3 labels are in the closed enum but in no served class — produced by nothing today. A label in no class, or one you do not recognise, belongs in a bucket that refuses a clean verdict.
output_schema_sha256 of the tools you call, and let a label newer than your pin break your checker visibly.Our reference gate does exactly this, in about 200 lines with no dependencies — it derives its policy from the served guidance and is meant to be copied: see the tools for what it calls, and read label_metrics in the consumer guidance for the live numbers. Generated from guidance 1.20.15; where this page and the served guidance disagree, the guidance wins.