1@README.md 2 3- **The invariants for these files are one folder up**, in 4 `crates/postjevsql-core/CLAUDE.md`, which loads with this one. 5- **A node's score is `Σ ln max(p, 1e-9)`, never the cookbook's geometric 6 mean.** The mean rises with depth, which breaks the bound pruning relies 7 on, and the search stops being exact. 8- **K is Choices asked per round, not a beam width that drops nodes.** A 9 node is dropped only when its bound cannot change the top two leaves (or, 10 under τ, the deepest node at or above τ). `exact_against_exhaustive` holds 11 the search to that; keep it passing for every new option. 12- **Never reorder options or finalists.** Order is part of the question and 13 of the cache key; a shortlist finalist keeps its place in the caller's 14 list, not its rank in round 1. 15- **The unmeasured defaults (K = 3, lookahead m = 2 and a 60,000-token 16 round, twin at 1.5×, `Describe` 20 and 5, `keep` 3) belong to the release 17 gates.** Changing one changes every request a search sends, and so every 18 recorded fixture: re-record (`tools/record-gates`), do not edit fixtures.