# Unguarded invariants `CLAUDE.md` names these as load-bearing. Nothing enforces either one. A rule that lives only in prose gets broken by whoever did not read the prose. Both of these fail silently when broken. `tokenizerRev` and `preRouteLadder` were checked and need nothing. The rev is baked into the embedder key, so a bump triggers re-embedding. A missing ladder rung is observable in the decision record. ## heads_path may equal model_path [#692] {#heads} Costs: the routing heads then score with the same graph the resident e5-small uses, and recall degrades. There is no error and no log line, so it reads as ordinary drift rather than a misconfiguration. Revisit when: `deploy/mavend.json` is edited by hand, or a fine-tuned heads graph is swapped in. Workaround: check the two keys by eye. That is the whole guard today. ## baselineGrammars is mirrored by hand [#693] {#grammars} Costs: the eval fixture restates the stage 0 rule set in the daemon's order, and its own comment says so. Three test files score against it. A grammar added to `buildRouter` alone means every routing measurement scores a set nobody runs. `CLAUDE.md` warns about this failure by name. Revisit when: the next stage 0 grammar is added. That is when it bites. Workaround: add to both lists, which is what the rule already says.