Severity: low | Category: unfinished | Phase: P3.11
Problem
Documented-but-empty by_day; IssueGenerator exported but used by no product code (coverage measures dead code); claude-agent-sdk declared/installed but never imported; dead expression + unread isolate field; health-check timer fires at both 00:00 and 02:00; deploy.yml has no permissions: block and reseeds host keys via live ssh-keyscan; committed .py.backup/scratch/placeholder tests.
Evidence
codeframe/lib/metrics_tracker.py:664 (by_day no-op), codeframe/planning/issue_generator.py:110 (unused module), pyproject.toml:28 (claude-agent-sdk unused), codeframe/core/conductor.py:1537 (dead expr + unused isolate), systemd/codeframe-health-check.timer:7 (double OnCalendar), .github/workflows/deploy.yml:23 (no permissions block), .github/workflows/deploy.yml:57 (unverified ssh-keyscan), tracked tests/*.py.backup + tests/debug/ + tests/test_new_feature.py
Acceptance criteria
Remove or wire each dead item; add permissions: {contents: read} to deploy.yml; pin SSH_KNOWN_HOSTS; drop OnCalendar=daily; delete .backup/scratch/placeholder tests and add *.backup/*.log/coverage.json to .gitignore.
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: low | Category: unfinished | Phase: P3.11
Problem
Documented-but-empty
by_day;IssueGeneratorexported but used by no product code (coverage measures dead code);claude-agent-sdkdeclared/installed but never imported; dead expression + unreadisolatefield; health-check timer fires at both 00:00 and 02:00;deploy.ymlhas nopermissions:block and reseeds host keys via livessh-keyscan; committed.py.backup/scratch/placeholder tests.Evidence
codeframe/lib/metrics_tracker.py:664(by_dayno-op),codeframe/planning/issue_generator.py:110(unused module),pyproject.toml:28(claude-agent-sdkunused),codeframe/core/conductor.py:1537(dead expr + unusedisolate),systemd/codeframe-health-check.timer:7(double OnCalendar),.github/workflows/deploy.yml:23(no permissions block),.github/workflows/deploy.yml:57(unverified ssh-keyscan), trackedtests/*.py.backup+tests/debug/+tests/test_new_feature.pyAcceptance criteria
Remove or wire each dead item; add
permissions: {contents: read}to deploy.yml; pinSSH_KNOWN_HOSTS; dropOnCalendar=daily; delete.backup/scratch/placeholder tests and add*.backup/*.log/coverage.jsonto.gitignore.Dependencies
None
Filed from the SaaS launch-readiness audit. Atomic: one developer, one session. Work order: strictly P0.1 → P3.12 (no forward dependencies).