5bccc4e238
`model.key_env` is not custom-only: the Desktop settings UI stores REGISTRY provider keys there (e.g. HERMES_CUSTOM_LMSTUDIO_API_KEY with provider lmstudio, #106336) and auth._model_level_key_env honours it. The previous predicate (`not custom or route_changed`) therefore wiped that pointer on a same-provider same-base_url model re-pick and silently broke the user's credential. The pointer now clears ONLY when provider or base_url changed; the inline api_key/api rule is unchanged. Custom-endpoint activation (model_setup_flows_custom) popped base_url / api_key but never key_env, so a stale pointer from a previous endpoint outranked the credential it had just written — pop it alongside. Tests: the same-route re-pick case now covers a registry provider (red on the old predicate), and the two clear_model_endpoint_credentials tests are folded into one invariant.