Skip to content

Commit e00b2aa

Browse files
committed
docs: add v1.0.0 launch-readiness checklist
1 parent daf0345 commit e00b2aa

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

docs/LAUNCH.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Launch readiness (v1.0.0)
2+
3+
The code is launch-ready as of **v0.9.8**. v1.0.0 is the public launch itself — mostly human-gated actions. This checklist organizes them. Bump the version to `1.0.0` only *after* the launch is live and stable (its exit criteria are about real traffic, not code).
4+
5+
## 1. Pre-launch verification
6+
7+
- [ ] **Legal review.** Have a professional review `/privacy` + `/terms` (`frontend/src/app/{privacy,terms}/page.tsx`). They're honest plain-language drafts, **not** legal advice.
8+
- [ ] **Load test.** Run the full warm-`/analyze` 100 RPS test per [`backend/loadtest/README.md`](../backend/loadtest/README.md) (local SRH + Docker). Record max sustainable RPS + p95 in `docs/PROGRESS_LOG.md`.
9+
- [ ] **Security config (verified 2026-05-29, re-confirm before launch):**
10+
- `COOKIE_SECURE=true` in prod — confirmed via the `si_oauth_state` cookie carrying `Secure`.
11+
- `CORS_ALLOW_ORIGIN_REGEX` scoped to our origins — confirmed (`evil.example.com` + arbitrary `*.vercel.app` rejected).
12+
- `INTERNAL_PROXY_SECRET` set on both Vercel services (turns on anonymous `/analyze` IP rate limiting).
13+
- Security headers live — confirmed via `curl -I` (`X-Frame-Options`, `nosniff`, `Referrer-Policy`, `Permissions-Policy`, CSP report-only). Consider promoting the CSP from report-only to enforcing after tuning against real violation reports.
14+
- [ ] **Smoke the live app:** `/health` is `up/up`, sign-in works, an analysis runs, `/me` history + delete work, a `/share/<slug>` link resolves.
15+
16+
## 2. Production domain + SSL
17+
18+
- [ ] Buy the domain.
19+
- [ ] Vercel → Project → **Settings → Domains** → add the domain; follow the DNS records Vercel shows. SSL is automatic.
20+
- [ ] Update env/config that hard-codes the host: `CORS_ALLOW_ORIGINS`, `OAUTH_REDIRECT_URL` (and the GitHub OAuth App's callback URL), `FRONTEND_BASE_URL`, `NEXT_PUBLIC_SITE_URL`, and the repo/footer links if needed.
21+
- [ ] Re-verify OAuth sign-in end-to-end on the new domain (the GitHub callback URL must match).
22+
23+
## 3. Launch day
24+
25+
- [ ] Final deploy on `main`; confirm `/health` version.
26+
- [ ] Launch posts: Hacker News (Show HN), X, Reddit (r/programming), LinkedIn. Lead with a real example report link (e.g. `/u/torvalds`).
27+
- [ ] Watch **Sentry** (errors) + **PostHog** (traffic, web vitals) dashboards.
28+
- [ ] Be available for the first few hours (informal on-call).
29+
30+
## 4. Post-launch
31+
32+
- [ ] Watch for 72 hours of stable traffic (error budget holds, no pool/rate-limit surprises — the v0.9.4 pool knob `DB_POOL_SIZE`/`DB_MAX_OVERFLOW` and Neon connection ceiling ~105 are the levers if needed).
33+
- [ ] Document the informal on-call rotation.
34+
- [ ] Write a launch retro in `docs/PROGRESS_LOG.md`.
35+
- [ ] Bump `CHANGELOG.md` + version literals to **1.0.0**, tag `v1.0.0`, release.
36+
37+
## Beyond v1.0.0
38+
39+
Tracked in [`PLAN.md`](../PLAN.md) "Beyond v1.0": GitLab / LinkedIn / Resume checkers, same deterministic-scoring + narrative architecture.

0 commit comments

Comments
 (0)