0d777453fa
The salvaged context-window screen (#52392) skips fallback candidates that are too small, and the rate-limit/403 fixes skip candidates that are at capacity. A third hard failure remained uncovered: a fallback that builds a client fine but returns a 400 because it structurally cannot run the model. The canonical case is a configured openai-codex / ChatGPT-account fallback asked to compress a glm-5.2 conversation: 400 - {'detail': "The 'glm-5.2' model is not supported when using Codex with a ChatGPT account."} This is a request-validation error, so should_fallback was False and the explicit-provider gate blocked it — the auxiliary task (compression) aborted every turn, dropping middle turns without a summary and churning the session, which is exactly what destroys the prompt cache. Adds _is_model_incompatible_error() (400 + capability phrasing, excluding not-found and billing 400s which the sibling predicates own) and treats it as a fallback-worthy capacity error in both sync and async call_llm, so the chain skips the incapable route and continues to the next viable candidate.