jev-gates
Seven calibrated gates for Claude Code (rules, scope, intent, done, claims, proof, and commit honesty) that escalate but never approve.
# jev-gates Seven 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** | every edit, including shell writes | a change that breaks a rule in your CLAUDE.md | | **Scope guard** | every edit, including shell writes | a change outside what you asked for | | **Intent guard** | every prompt | files edited when you only asked a question | | **Done gate** | every stop | an ask in your prompt left unaddressed | | **Claims gate** | every stop | "tests pass" when no test ever ran | | **Proof gate** | every stop | a risky change that nothing ran, tested, or checked after the edit | | **Commit guard** | `git commit` | a message claiming work the diff does not show | Each gate costs about a second and a fraction of a cent. A wrong answer costs one permission prompt or one retry. It never costs a wrong write, a silent skip, or a false claim you believed. ## The problem CLAUDE.md works for twenty minutes. Then the context fills, the rules drift out of attention, and an edit quietly breaks one. Claude says done when it is not. You ask for three things, it does two, writes a confident summary, and stops. Claude says the suite is green when nothing ran. You find out later. Claude changes a default, adds a branch, and stops. It never claimed to test it, so nothing catches that it never did. You read the whole diff to find out what still needs checking. Every one of those is the same shape: a fixed list to check, one piece of evidence, a yes or no per item, on every edit or every stop. That