Context
Two small alignment gaps found while tracing the inconclusive-verdict incident:
- Copy inaccuracy: `AI_PROVIDER=claude-code,ollama` WITHOUT `AI_DUAL_REVIEW` resolves to a SINGLE-reviewer plan with a same-slot fallback (resolveAiReviewerPlan, src/selfhost/ai.ts) — yet the inconclusive finding text unconditionally says "The dual-model AI review did not return a usable verdict" (src/queue/ai-review-orchestration.ts:803). On single+fallback deployments this misdescribes a provider-chain outage as a two-model disagreement and sent this incident's debugging down the wrong path.
- Asymmetric structural-error classification: isStructuralProviderConfigError (src/services/ai-review.ts) matches only `codex_*` auth-error prefixes, so `claude_code_no_oauth_token` / `claude_code_error_401/403` never get the long structural circuit-breaker cooldown Codex auth errors get — an expired Claude token burns the full retry budget on every review instead of failing fast.
Requirements
Deliverables
Test Coverage Requirements
99%+ patch coverage, branch-counted.
Context
Two small alignment gaps found while tracing the inconclusive-verdict incident:
Requirements
Deliverables
Test Coverage Requirements
99%+ patch coverage, branch-counted.