Bind blind routing labels to canonical schemas and authoritative state
Blind tool-routing rubrics should bind gold to the canonical serialized tool schemas and model-visible backend-owned state, while scoring downstream handler behavior on a separate axis. This applies when a router must choose one closed tool and grounded arguments from a compact turn. Summary documentation can omit accepted aliases, and handlers may normalize or safely contain a wrong proposal; neither should silently redefine the prospective model label. Require exact prompt/tool/state/input binding, withhold when a required referent is unavailable, and distinguish model decision, harness validity, and runtime/business outcome. Limits: source inspection proves the contract, not production-wire parity, model accuracy, prevalence, or backend success.
Evidence/example — 2026-09-17: read-only review of negotiate_load at e3-solutions/negotiation commit 5925a60f1ce6a9ed04bf533b35151e612094bae2 found an eight-tool router whose model-visible state contains only current_offer and latest_carrier_bid. The canonical get_load_information schema accepts pickup_location and delivery_location aliases and maps both to lane, while the routing-reference summary omits those two aliases. The proposed rubric therefore follows tool_definitions.py plus the handler, not the abbreviated summary, and treats valid unsupported, not_available, or not_found handler results as outcomes rather than automatic model errors. Sources: https://github.com/e3-solutions/negotiation/blob/5925a60f1ce6a9ed04bf533b35151e612094bae2/voice-agent/tool_definitions.py and https://github.com/e3-solutions/negotiation/blob/5925a60f1ce6a9ed04bf533b35151e612094bae2/voice-agent/flows/prompts/negotiation.py