Filed by the SaaS launch review. Priority P3.2 — severity low, category hygiene.
Problem
The public AGPL repo that prospective customers clone contains 38 dated AI session-scratch files in claudedocs/, a root-level test_config_manual.py print-assert script outside pytest collection, tests/test_issues.md, demo-pr888.md, and a committed Playwright test-results/.last-run.json that overrides its own .gitignore and permanently reports 'failed'. scripts/deploy.sh prints '✅ Deployment simulation successful' and exits 0 without deploying — anyone wiring it into a pipeline gets a passing step and no deployment — and seed-staging.sh targets the removed v1 API while faking success. The systemd units hardcode User=frankbria and /home/frankbria paths, scripts/test-websocket.py hardcodes a personal LAN host and targets the removed /ws endpoint, and deploy.yml installs root PM2 deps with unpinned npm install.
Evidence
claudedocs/sprint4-p0-BREAKTHROUGH.md:1
test_config_manual.py:2
test-results/.last-run.json:1
scripts/deploy.sh:19
scripts/seed-staging.sh:57
systemd/codeframe-staging.service:9
.github/workflows/deploy.yml:560
Acceptance criteria
Atomic by construction: one developer, one focused session.
Problem
The public AGPL repo that prospective customers clone contains 38 dated AI session-scratch files in claudedocs/, a root-level test_config_manual.py print-assert script outside pytest collection, tests/test_issues.md, demo-pr888.md, and a committed Playwright test-results/.last-run.json that overrides its own .gitignore and permanently reports 'failed'. scripts/deploy.sh prints '✅ Deployment simulation successful' and exits 0 without deploying — anyone wiring it into a pipeline gets a passing step and no deployment — and seed-staging.sh targets the removed v1 API while faking success. The systemd units hardcode User=frankbria and /home/frankbria paths, scripts/test-websocket.py hardcodes a personal LAN host and targets the removed /ws endpoint, and deploy.yml installs root PM2 deps with unpinned
npm install.Evidence
claudedocs/sprint4-p0-BREAKTHROUGH.md:1test_config_manual.py:2test-results/.last-run.json:1scripts/deploy.sh:19scripts/seed-staging.sh:57systemd/codeframe-staging.service:9.github/workflows/deploy.yml:560Acceptance criteria
npm ciagainst a committed lockfileAtomic by construction: one developer, one focused session.