9cb456a9b9
The route dict in _persist_model_switch_to_session used filtering (omits falsy values) while the top-level keys used (writes explicit None to trigger deletion in _merge_model_config_json). This asymmetry meant stale keys from a previous /model switch survived in the nested gateway_runtime dict even after the fix in #85261 that properly deleted them from the top-level keys. Fix: build the route dict with and derive the top-level keys from **route so both shapes always use identical deletion semantics. Also filter None values in session_gateway_runtime's reader since gateway_runtime is replaced as a whole dict (not deep-merged), so None values written by the persist path survive in the nested dict. Found by /simplify-code 3-reviewer review on #85261 (all 3 reviewers converged on the route dict asymmetry as the verdict-relevant finding).