Skip to content

Repository files navigation

Warrant

Chain-of-Verification + Self-RAG + Constitutional AI. Warrant takes a finished piece of text, a source corpus, and a rulebook, and returns per-claim verdicts — supported / partially_supported / contradicted / unsupported / not_verifiable — with citations, plus rule violations, and a final PASS / PASS_WITH_WARNINGS / BLOCK decision.

It is a gate, not a rewriter. It tells you which passages are a problem. It never edits your document.

Why

  • Pre-publish check on regulated communications — earnings releases, financial promotions, medical/pharma claims, insurance wording.
  • Hallucination insurance for someone else's LLM feature — sits between a model and its user.
  • RFP / security-questionnaire answers verified against your own docs.
  • Marketing-claim substantiation — every superlative traced to a source or flagged.

Two load-bearing ideas

  1. The claim taxonomy routes verification. "Fastest CRM" (comparative), "40% lift" (numeric), "SOC 2 Type II" (factual_internal), "sales should be simple" (opinion), and "next year we'll ship…" (forward_looking) are five different kinds of claim checked five different ways. A flat 1–10 truth scorer collapses them into mush.
  2. Two corpora, never mixed. The subject document is untrusted and under review. The evidence corpus is the source of truth. Warrant refuses to let a claim be "verified" against the very document that made it.

CLI

warrant validate config.yaml           # config sanity — no LLM calls, no spend
warrant check    config.yaml           # run the gate
warrant diff     old.json new.json     # what changed between drafts
warrant explain  verdict.json c-018    # the evidence chain for a claim

Exit codes: 0 PASS, 1 PASS_WITH_WARNINGS, 2 BLOCK. That single line is what turns this from a demo into infrastructure — warrant check drops into a GitHub Action or a pre-commit hook with no glue code.

Status

The pipeline runs end-to-end — decompose → plan (CoVe) → verify (corpus/web) → grade (Self-RAG) → adjudicate → policy check → gate → report. It runs at $0 against built-in offline fakes (--provider fake), and against real providers (anthropic | openai) and a keyword or embedding retriever behind optional extras. The domain/ core — models, adjudication, the gate, savings — is pure and fully unit-tested with no network. See docs/ for the architecture, the claim taxonomy, and the load-bearing design decisions.

Development

uv sync                 # install (core is network-free; LLM/retrieval are extras)
uv run warrant validate configs/example_marketing_claims.yaml
uv run pytest
uv run ruff check .
uv run mypy

About

A verification gate combining Chain-of-Verification, Self-RAG, and Constitutional AI. Cited verdicts, policy checks, CI exit codes.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages