b837f07dcd
Follow-up on the salvaged #56392 guard. The cherry-picked change matched custom:<name> pool entries against the primary by raw base_url string equality, which (a) can't disambiguate two named custom providers sharing one gateway base_url and (b) left a latent bare-"custom" entry bypass. Route the match through get_custom_provider_pool_key(rt[base_url]) compared against the entry's custom:<name> key, mirroring the sibling guard in recover_with_credential_pool. Use CUSTOM_POOL_PREFIX instead of the literal. Add regression tests for the custom same-endpoint (swap) and cross-endpoint (skip) branches, plus the plain-provider fallback-pool case from #56885.