3513e508b7
V-659 measured the destination at 12/33 on the classifier cascade and named the gap: recall 0/15, because nothing anywhere names it. The model could not help, for a structural reason rather than a capability one. Nothing in routeSystem mentioned a Source and routeGrammar could not emit one, so there was no string for it to write. Same shape as the Praxis reach V-517 measured at 0/12. routeGrammar grows a source rule, closed over router.Sources plus the empty floor. A grammar cannot emit a destination that does not exist, which is the guarantee V-546 wants from a softmax and gets here for free. The prompt lists the twelve in Russian, one line each, and says plainly that "" is a normal answer to give often: two sources that can both answer means the chain walks, and guessing is the failure mode this whole field exists to stop. The read-back goes through ValidSource and runs on IntentQuery alone. The grammar already bounds the enum, but it is a request to a server that may be running another build, and only a query reaches queryWalk. Measured against gemma-4-12b on the workstation, same fixture, cascade with a hash fallback: destination 24/33 (72.7%) against the classifier's 12/33, and intent 81/96 (84.4%) which is where it already was. Recall is the whole move, 0/15 to 14/15. The model alone scores 26/33. Four cases the cascade loses and llm-only wins are calendar. The possessive agenda rules claim them at stage 0 and deliberately name nothing, because "что у меня в списке покупок" matches the same rule and naming the calendar would take the list source off the turn. So stage 0's caution now costs four destination points it did not cost before. That is a real trade and it wants its own argument, not a quiet edit here. The resident Qwen3-1.7B is unmeasured: it binds --port 0 inside the container and no host process can reach it. llm/check_prompt_parity.py in the training workspace compares its copy of routeSystem to this one and will fail until that copy gets the same edit. V-362 covers the catch-up. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ptwopxyo3Z2kwFckHkLvN