Releases: tonydzi/verdict-contract
Release list
v0.1.0 — a verdict you can act on
Your LLM reviewer said APPROVE. Did it? First tagged release — the tag has existed since the code was published; this is its changelog.
The failure it fixes
A reviewer model writes three paragraphs and ends with something that reads like approval. Your pipeline greps for "approve", or asks a second model what it meant, or trusts the last line. Every one of those is wrong on some real reply — a sentence like "I would not approve this" contains the word, a fenced example can contain a verdict that belongs to the example, and a review that never states a verdict at all is the most common case of the three.
What is in v0.1.0
verdict_contract.py—PROMPT_RULE(what you paste into the reviewer's prompt), a strict parser, a weak legacy layer, andexit_code(), all in one stdlib-only file you can read in a sitting.test_verdict_contract.py— 42 contract cases plus precedence, fence-desync, self-poisoning, loud rendering and exit-code checks. Every case is a counterexample a vendor model produced over seven adversarial rounds; four of those rounds found a real hole in code we already believed was correct. The round-by-round record is indevlog/.examples/review_gate.py— wrap any CLI reviewer so the verdict reaches the exit status.- CI on Linux/macOS/Windows × Python 3.9/3.11/3.13, plus a weekly schedule so rot surfaces without a push.
Provenance
The sanitized twin of a module that has gated every code review across a 6-machine agent fleet since 2026-07-21, unchanged since. Not included, on purpose: our reviewer prompts, machine topology and approval routing — the contract is the reusable part.
Known and deliberate
The weak legacy layer can block but never approve. An APPROVE is only clean as the single sentinel on the final non-blank line — anything more ambiguous is treated as "no verdict", which exits non-zero rather than passing.
What's next
More counterexamples (a reply that fools it is the most useful thing you can send us), wrappers for more reviewers — a GitHub Action and a pre-commit hook are the common asks — and eventually retiring the weak legacy layer.
Every noticeable change ships as its own release, so this feed is where you can see whether the contract moved under you.
Full Changelog: https://github.com/Palo-Alto-AI-Research-Lab/verdict-contract/commits/v0.1.0