jev-gates
Seven calibrated gates for Claude Code (rules, scope, intent, done, claims, proof, and commit honesty) that escalate but never approve.
# jev-gates Nine calibrated gates for Claude Code, judged by [TypeSafe Jev](https://docs.typesafe.ai). Each one escalates. None of them ever approves. A live run, nothing staged. Every probability and latency on screen is what Jev returned at render time. [MP4 version](demo/out/jev-gates.mp4). | Gate | Fires on | Catches | | --- | --- | --- | | **Rule guard** (opt-in) | every edit, including shell writes | a change that breaks a rule in your CLAUDE.md | | **Scope guard** (opt-in) | every edit, including shell writes | a change outside what you asked for | | **Intent guard** (opt-in) | every prompt | files edited when you only asked a question | | **Prompt check** (opt-in) | every change request | a request missing its outcome, location, finish line, or bug repro | | **Bash guard** (opt-in) | shell commands that are not plainly read-only | a destructive or irreversible command before it runs | | **Done gate** (opt-in) | every stop | an ask in your prompt left unaddressed | | **Claims gate** (on by default) | every stop | "tests pass" when no test ever ran | | **Proof gate** (opt-in) | every stop | a risky change that nothing ran, tested, or checked after the edit | | **Commit guard** (opt-in) | `git commit` | a message claiming work the diff does not show | From 0.9.0 only the claims gate is on, and the plugin wires only its Stop hook. A week of real sessions showed why. The claims gate caught real overstatements, such as "verified all 22 tickets" when only some were checked live. The intent guard added about 650 ms to every prompt, and its edit asks were mostly on scratch files. Most done and proof blocks landed on turns that were already fine. Every other gate is still here. [Turning on other gates](#turning-on-other-gates) shows how. Each gate costs about half