# Admin-AI Fallback Plan — 2026-07-14

## Session lesson

During the app1 admin-ai migration, the working model catalog was not enough proof of health. Real `/v1/chat/completions` probes showed which routes were actually usable.

Verified outcomes at the time of this plan:

- `deepseek-v4-pro` via admin-ai: usable; reasoning models need enough `max_tokens` or they may appear blank/length-limited.
- `deepseek-chat` via admin-ai: usable.
- `gpt-5.5` via admin-ai: blocked by OpenAI insufficient quota.
- `claude-opus-4-8` and `claude-sonnet-4-6` via admin-ai: blocked by Anthropic usage limits until 2026-08-01.
- Gemini worked technically, but Germaine had eliminated Gemini from the normal Sho'Nuff model plan. Do not reintroduce it as a normal fallback just because it is available.
- Ollama/llama3.x is deprecated for Sho'Nuff production routing. Do not use it as automatic fallback or for LLM cron jobs.

## Target fallback shape

Use explicit tier names so same-router fallback is not confused with provider diversity:

1. **Primary:** `deepseek-v4-pro` via admin-ai.
2. **Same-router model fallback:** `deepseek-chat` via admin-ai.
3. **Independent direct provider fallback:** add and test a direct provider such as Qwen/DashScope or Direct DeepSeek.
4. **Aggregator fallback:** `deepseek/deepseek-chat` via OpenRouter.
5. **Manual escalation only:** GPT/Claude after quota/usage limits are fixed.
6. **Manual emergency only:** old AI box / DNS rollback. Ollama is not automatic fallback.

During migration stabilization, it is acceptable to place the independent direct provider before the same-router fallback:

```text
deepseek-v4-pro/admin-ai -> qwen-direct -> deepseek-chat/admin-ai -> openrouter
```

Long term, once app1 admin-ai proves stable:

```text
deepseek-v4-pro/admin-ai -> deepseek-chat/admin-ai -> qwen-direct -> openrouter
```

## Background job policy

- Prefer `no_agent=true` deterministic scripts for watchdogs and health checks.
- Any LLM cron job must be pinned explicitly; cron jobs do not inherit conversation fallback.
- Do not pin cron jobs to Ollama.
- Do not pin normal jobs to Gemini unless the task is specifically vision or the user re-approves Gemini for that class.
- Use `deepseek-chat` via admin-ai for light summaries/classification.
- Use `deepseek-v4-pro` via admin-ai for higher-risk research/reasoning.
- Use premium GPT/Claude only as explicit escalation when quota/limits are healthy.

## Health-check rule

`/v1/models` is catalog health only. It does not prove encrypted credentials, upstream quota, or completions are working. Production health checks must call `/v1/chat/completions` for every active route and classify failures by route:

- admin-ai primary/fallback failure
- OpenRouter fallback failure
- direct-provider fallback failure
- escalation-only quota failure

GPT/Claude quota failures should be reported as escalation-model unavailable, not as total admin-ai failure.
