cwkPippa brain fallback 은 Codex → Claude → Gemini per task, per-task override 가능. 왜 셋? 각 provider 가 ~4h/day degraded 다른 시간대. Chain 이 그걸 흡수.
왜 단일 provider 의 retry 로 충분 X
Failure 가 random 아니라서 — Claude 가 bad hour 일 때 Claude 5 번 retry = 5 번 실패 보장. 다른 provider 로 fall over 하는 게 진짜 reliability.
2-of-2 fallback (single provider 안)
- Native vision + Read-tool fallback — 모델 degradation 방어
- OAuth + API-key — identity layer outage 방어
- SQLite + JSONL — store 부패 방어
각 pair 는 deliberate. 'duplicate 처럼 보여' 라고 한쪽 제거 = single point of failure 만듦.
try_chain helper
try_chain(providers, op) — 각 provider 차례로 시도, per-provider timeout, 모두 실패 시 aggregated error. Deliberately-flaky 중간 provider 로 테스트 — chain 이 진짜 흡수하는지.