1@README.md
2
3- **`#![forbid(unsafe_code)]`, no pgrx, no I/O, no clock or randomness:
4  pure functions only.** `gcra` takes `now` and the atomic words as
5  arguments; it never reads a clock or owns its storage. Anything touching
6  Postgres goes in `postjevsql-pg`.
7- **The key hashes the bytes `jev_protocol::question_bytes` and the state
8  `Json` produce, the same serializer as the request body.** Never hash a
9  re-serialized or sorted copy: a key that differs from what was sent is a
10  wrong key.
11- **Adding a field to the key, or changing its framing, invalidates every
12  stored answer: bump the `v1` domain tag.** Changing how SQL becomes a
13  question bumps `PROMPT_VERSION` instead.
14- **Row in instructions stays unreachable until the layout-parity gate
15  passes.** `LayoutParity` is an empty enum on purpose; do not give it a
16  variant, a constructor or a `Default` to "enable" the layout. A row is
17  placed only from a `Planned` the planner returned.