Three patterns, three blast radii
Fallback for Claude calls has three flavors. Same provider, smaller model — Sonnet → Haiku when Sonnet is rate-limited. Cross-provider — Anthropic → OpenAI → Gemini for capability-equivalent calls. Async deferral — push the call to Batch API or a queue when sync fails. Each has a different cost story and different UX implications.
Degraded mode is honest UX
If your fallback path returns a lower-quality answer, tell the user. 'Reply generated by Haiku because Sonnet was unavailable' is better than silently shipping a worse answer. cwkPippa surfaces the brain via UI badges so Dad knows when Pippa is running on the smaller model.
Drill it once a quarter
Untested fallbacks have bugs. Every quarter, deliberately disable the primary path in staging and watch the fallback run end-to-end. Bugs you find in a drill are bugs that will not bite you in production.