Filed by the SaaS launch review. Priority P3.3 — severity low, category dead-code.
Problem
The CLI is the product's primary surface, so its source is the most-read code in the repo. helpers.py's two public functions (require_auth, format_date) have no importer, codeframe/cli/commands/ is an empty placeholder package that looks like an in-progress refactor, .env/API-key loading is duplicated three times in validators.py on top of app.py's import-time load, and the engine/provider key-validation block is copy-pasted across three commands so any future change to key handling gets applied to two of three sites. cf work batch run --help also advertises --isolation worktree, which the batch command unconditionally rejects.
Evidence
codeframe/cli/helpers.py:21
codeframe/cli/commands/__init__.py:1
codeframe/cli/validators.py:13
codeframe/cli/app.py:2531
codeframe/cli/app.py:3797
Acceptance criteria
Dependencies
Atomic by construction: one developer, one focused session.
Problem
The CLI is the product's primary surface, so its source is the most-read code in the repo. helpers.py's two public functions (require_auth, format_date) have no importer, codeframe/cli/commands/ is an empty placeholder package that looks like an in-progress refactor, .env/API-key loading is duplicated three times in validators.py on top of app.py's import-time load, and the engine/provider key-validation block is copy-pasted across three commands so any future change to key handling gets applied to two of three sites.
cf work batch run --helpalso advertises --isolation worktree, which the batch command unconditionally rejects.Evidence
codeframe/cli/helpers.py:21codeframe/cli/commands/__init__.py:1codeframe/cli/validators.py:13codeframe/cli/app.py:2531codeframe/cli/app.py:3797Acceptance criteria
cf work start,cf work batch runandcf tasks generate, all rejecting a missing key with the same messagecf work batch run --helpno longer offers worktree, or batch accepts ituv run pytest tests/cli/ && uv run ruff check .passesDependencies
Atomic by construction: one developer, one focused session.