3a67a7be55
An aggregator whose pooled credentials are all exhausted/dead still counted as an authenticated provider during no-provider /model resolution. It then won the model-name match, was set as the sticky session provider, and poisoned every later switch with "empty API key" errors while still routing through the dead aggregator. list_authenticated_providers now requires a pool to have at least one available entry (has_available, not has_credentials / bare key presence) at all three credential-pool gates. Simple token-style entries that don't parse into exhaustion-tracked entries keep the prior behaviour, so providers whose creds live only in the auth-store credential_pool still appear. Fixes #45759