Commite78cb41unknown_key
chore: merge TODO updates — Stripe moved to last, migration fix marked done
chore: merge TODO updates — Stripe moved to last, migration fix marked done https://claude.ai/code/session_01DzJMTFASjMHt2f5ze4cNLR
1 file changed+9−2e78cb413f061b1c22c0092787b10c47cceca9cf5
1 changed file+9−2
ModifiedTODO.md+9−2View fileUnifiedSplit
@@ -13,10 +13,9 @@ Work top-to-bottom within each priority.
1313
1414These are NOT build tasks — the code is complete. They need ops/config action.
1515
16- [ ] **Set STRIPE_SECRET_KEY + STRIPE_WEBHOOK_SECRET in production** — Stripe Checkout, customer portal, and webhook handler are 100% built (`src/lib/stripe.ts`, `src/routes/billing.tsx`, `src/routes/stripe-webhook.ts`). The billing UI even shows a warning when the key is missing. Run `scripts/stripe-bootstrap.ts` to create products/prices in Stripe with the right lookup keys (`gluecron_pro_monthly` etc), then set the secrets on Fly.io. Zero code changes needed.
1716- [ ] **Verify SSH git push works end-to-end** — `src/lib/ssh-server.ts` is a full 545-line production implementation that starts at boot (`src/index.ts`). It handles `git-upload-pack` and `git-receive-pack`, does public-key auth against the `ssh_keys` table, and triggers post-receive hooks. Test from a clean machine: add an SSH key at `/settings`, then `git clone git@gluecron.com:user/repo.git`. If the SSH_PORT env var isn't set, default is 2222 — verify the port is open on the server.
1817- [ ] **Enable AI Trio Review** — Three-model parallel PR review (security / correctness / style) is fully built in `src/lib/ai-review-trio.ts` and wired into `src/lib/ai-review.ts`. Set `AI_TRIO_REVIEW_ENABLED=1` to activate. This is a genuine differentiator — no other platform has this.
19- [ ] **Fix duplicate migration number 0065** — Two migration files both named `0065_*.sql`: one for `ai_cost_events` + `ai_budgets`, one for `auto_generate_tests`. Drizzle will apply one and ignore the other. Rename the auto-tests one to `0065b_auto_generate_tests.sql` or the next available number.
18- [x] 2026-06-06 **Fix duplicate migration number 0065** — Renamed `0065_auto_generate_tests.sql` to `0077_auto_generate_tests.sql` (was conflicting with `0065_ai_cost_events.sql`). Both migrations now have unique numbers.
2019- [ ] **Set SERVER_TARGETS_KEY** — Server targets encrypt SSH private keys via AES. If `SERVER_TARGETS_KEY` env var isn't set, deploy target creation will fail silently. Set a 32-byte hex key in production.
2120- [ ] **Set PREVIEW_DOMAIN** — Branch preview URLs are computed as `${branchSlug}-${repoSlug}.preview.gluecron.com` or `PREVIEW_DOMAIN` env var. Set this to match where previews will actually be served.
2221
@@ -172,6 +171,14 @@ Verified by reading actual files — not just the Bible.
172171
173172---
174173
174## 💳 LAST — Stripe/Billing Configuration (When Platform Is Ready)
175
176These are NOT build tasks — the code is 100% complete. Do these only after the platform is stable and ready for paying customers.
177
178- [ ] **Set STRIPE_SECRET_KEY + STRIPE_WEBHOOK_SECRET in production** — Stripe Checkout, customer portal, and webhook handler are 100% built (`src/lib/stripe.ts`, `src/routes/billing.tsx`, `src/routes/stripe-webhook.ts`). The billing UI even shows a warning when the key is missing. Run `scripts/stripe-bootstrap.ts` to create products/prices in Stripe with the right lookup keys (`gluecron_pro_monthly` etc), then set the secrets on Fly.io. Zero code changes needed.
179
180---
181
175182## Notes
176183
177184- `- [ ]` = not started / not configured
178185