Severity: medium | Category: correctness | Phase: P2.19
Problem
work start/batch/retry validate ANTHROPIC_API_KEY based on engine only, ignoring --llm-provider/CODEFRAME_LLM_PROVIDER/config — so built-in-engine + OpenAI/Ollama workflows are blocked without an Anthropic key and OPENAI_API_KEY is never checked. prd stress-test and tasks generate are hardcoded to Anthropic, so an OpenAI-only user cannot run the Think phase at all.
Evidence
codeframe/cli/app.py:2433 (key check), :1712 (stress-test), :1859 (tasks generate)
Acceptance criteria
A shared helper resolves the effective provider (flag→env→config→default) and validates the matching key; Think-phase commands route through the same provider resolution or explicitly document Anthropic-only.
Dependencies
None
Filed from the SaaS launch-readiness audit. Atomic: one developer, one session. Work order: strictly P0.1 → P3.12 (no forward dependencies).
Severity: medium | Category: correctness | Phase: P2.19
Problem
work start/batch/retryvalidateANTHROPIC_API_KEYbased on engine only, ignoring--llm-provider/CODEFRAME_LLM_PROVIDER/config — so built-in-engine + OpenAI/Ollama workflows are blocked without an Anthropic key andOPENAI_API_KEYis never checked.prd stress-testandtasks generateare hardcoded to Anthropic, so an OpenAI-only user cannot run the Think phase at all.Evidence
codeframe/cli/app.py:2433(key check),:1712(stress-test),:1859(tasks generate)Acceptance criteria
A shared helper resolves the effective provider (flag→env→config→default) and validates the matching key; Think-phase commands route through the same provider resolution or explicitly document Anthropic-only.
Dependencies
None
Filed from the SaaS launch-readiness audit. Atomic: one developer, one session. Work order: strictly P0.1 → P3.12 (no forward dependencies).