1@README.md
2
3- **The invariants for these files are one folder up**, in
4  `crates/postjevsql/CLAUDE.md`, which loads with this one; the design
5  rules are the root `CLAUDE.md`'s *SQL surface*, *Execution* and *Cache*.
6- **A judgement future must never call Postgres.** Cache reads it needs
7  mid-search go through `scan::on_backend`; writes go through `settle`
8  (receipts). The `Judge` trait in `postjevsql-pg/src/scan/mod.rs` states
9  the rule; the future is polled inside the executor's wait.
10- **Nothing is cached for a NULL.** Under `jev.on_error = unsure` a failed
11  judgment is NULL and leaves no `jev_cache` row; a `Failure` that is not a
12  failed judgment (`is_failed_judgment` false) still raises.
13- **Never hash or store a re-serialized copy of what was sent.** The key,
14  the stored `state` and `question`, and the request body all come from the
15  same bytes (`jev_protocol::question_bytes` and the row's `Json`).