For agents, on top of README.md, which they read first.
- The invariants for these files are one folder up, in
crates/postjevsql/CLAUDE.md, which loads with this one; the design rules are the rootCLAUDE.md's SQL surface, Execution and Cache. - A judgement future must never call Postgres. Cache reads it needs
mid-search go through
scan::on_backend; writes go throughsettle(receipts). TheJudgetrait inpostjevsql-pg/src/scan/mod.rsstates the rule; the future is polled inside the executor's wait. - Nothing is cached for a NULL. Under
jev.on_error = unsurea failed judgment is NULL and leaves nojev_cacherow; aFailurethat is not a failed judgment (is_failed_judgmentfalse) still raises. - Never hash or store a re-serialized copy of what was sent. The key,
the stored
stateandquestion, and the request body all come from the same bytes (jev_protocol::question_bytesand the row'sJson).