Authoritative source for the Universal Model Resolution Rule referenced by Orchestrator. The runtime model is selected by this rule, governed by governance/model-routing.json and governance/runtime-policy.json#model_dispatch.
Before every agent/runSubagent call, regardless of dispatch context, apply this rule:
- Load
governance/model-routing.json. - Load
governance/runtime-policy.jsonand resolveruntime_model_modefrom per-dispatch override when present, elsemodel_dispatch.default_mode(now defaults toauto; deterministic is the opt-in mode used for pinned dispatch). - Set payload marker
runtime_model_modeon every delegation payload for auditability and mode-consistency checks. - Look up the target agent name in the top-level
agent_role_indexmap to get its role. - Read
roles[role].by_tier[complexity_tier]. If the entry is{ "inherit_from": "default" }, use the role's top-levelprimarymodel; otherwise use the tier-specificprimary. - Pass the exact target as the outer
agentNameparameter toagent/runSubagent. - Deterministic mode (opt-in, used for pinned dispatch): pass the resolved
primarymodel string as the outermodelparameter toagent/runSubagent. Never omit outermodelin deterministic mode. - Auto mode: omit the outer
modelparameter so Copilot platform auto-selection can choose the runtime model. Keep payload-levelmodeloptional in this mode and rely onruntime_model_mode: automarker for contract semantics and audits. - For initial planning dispatches before any plan
complexity_tierexists: deterministic mode uses the target role's top-levelprimarymodel; auto mode still omits outermodel. Missing tier context changes the resolution source (deterministic) or preserves omission (auto), not the mode contract.
This rule covers all dispatch paths without exception: Plan Review Gate reviewers (PlanAuditor, AssumptionVerifier, ExecutabilityVerifier), phase CodeReviewer dispatch, final CodeReviewer dispatch, failure-classification retry dispatch, needs_replan Planner dispatch, and Implementation Loop executor dispatch.