CodeIssuesDiscussionsWikiPull RequestsProjectsCommitsActionsReleasesContributorsPulse● GatesSecuritySettingsDeploymentsPipelineInsightsAgents✨ Explain✨ Ask AI✨ Workspace✨ Spec✨ Tests▓ Debt Map✨ NL Search🏛 Archaeology
Blame · Line-by-line history
LAUNCH_TODAY.md
Each line is annotated with the commit that last touched it. Click any SHA to jump to that commit and see the surrounding change.
| 988380a | 1 | # Pre-launch checklist |
| a64e08d | 2 | |
| 988380a | 3 | The platform is effectively feature-complete — BUILD_BIBLE §2 is almost entirely ✅, and blocks A–J have all shipped bar the one row called out below. This doc tracks the remaining go-live work. |
| a64e08d | 4 | |
| 988380a | 5 | Legend: ✅ done · 🟡 in-flight · ❌ not started |
| a64e08d | 6 | |
| 7 | --- | |
| 8 | ||
| febd4f0 | 9 | ## Shipped this sprint |
| 10 | ||
| 11 | Big batches landed on `claude/build-status-update-3MXsf` (see `CHANGELOG.md` for the user-visible breakdown): | |
| 12 | ||
| 13 | - ✅ **Bulk import** — `/import/bulk` paste-a-token flow, multi-repo org migration. | |
| 14 | - ✅ **Migrations dashboard** — `/migrations` per-user history + verify button, backed by `src/lib/import-verify.ts`. | |
| 15 | - ✅ **Spec-to-PR v2 (real AI)** — `/:owner/:repo/spec` + `src/lib/spec-to-pr.ts` now runs the real Anthropic pipeline (graceful fallback if `ANTHROPIC_API_KEY` is unset). | |
| 16 | - ✅ **Repo collaborators + team permissions** — full collaborator model wired through permission middleware. | |
| 17 | - ✅ **Permission middleware** — centralised check applied to all write routes. | |
| 18 | - ✅ **Real-time SSE foundation** — event stream plumbed for live UI updates. | |
| 19 | - ✅ **Preflight CLI** — `bun run preflight` verifies env, DB, git, and required binaries before deploy. | |
| 20 | - ✅ **Error tracking** — `src/lib/observability.ts` wired into `app.onError` (supports `ERROR_WEBHOOK_URL` / `SENTRY_DSN`). | |
| 21 | - ✅ **Launch comms** — `docs/LAUNCH_ANNOUNCEMENT.md` (Show HN + tweet thread + LinkedIn + demo shot list + press kit). | |
| 22 | - ✅ **Demo seed** — `src/lib/demo-seed.ts` + `DEMO_SEED_ON_BOOT=1` flag in `src/index.ts`. | |
| 23 | - ✅ **Public status page** — `/status` HTML + `/status.svg` shields badge. | |
| 24 | ||
| 25 | --- | |
| 26 | ||
| 988380a | 27 | ## Infrastructure |
| 28 | ||
| 90fa787 | 29 | - ✅ Primary deployment target is Fly.io — `fly.toml` is in-repo (see `DEPLOY.md`). A `Dockerfile` is shipped for any other container host. Neon is the database. |
| 988380a | 30 | - ✅ Migrations run via `bun run db:migrate`; release-phase wiring documented. |
| 31 | - ✅ `/healthz`, `/readyz`, `/metrics` endpoints shipped (BUILD_BIBLE §2.6). | |
| 32 | - ✅ Request-ID tracing on every response (`src/middleware/request-context.ts`). | |
| 33 | - ✅ Rate limiting on `/api/*`, `/login`, `/register` (`src/middleware/rate-limit.ts`). | |
| 34 | - ✅ Persistent-volume story for `/data/repos` captured in `DEPLOY.md`. | |
| 35 | - ✅ Bare-repo backups — filesystem snapshot responsibility documented; Neon PITR for the DB. | |
| 36 | - 🟡 `/metrics` shipping to Grafana / Datadog / Prometheus — endpoint exists, pipe not wired. | |
| febd4f0 | 37 | - ✅ Error-tracking wiring — `src/lib/observability.ts` (supports `ERROR_WEBHOOK_URL` + `SENTRY_DSN`, hooked into `app.onError`). Secrets still need real values in Fly. |
| 988380a | 38 | |
| 39 | ## Content | |
| 40 | ||
| 41 | - ✅ Landing page — `src/views/landing.tsx` (`LandingPage`), mounted for logged-out `/` via `src/routes/web.tsx` (BUILD_BIBLE §7, shipped this session). | |
| 42 | - ✅ Legal pages — `legal/TERMS.md`, `legal/PRIVACY.md`, `legal/AUP.md`, `legal/SETUP-GUIDE.md`. | |
| febd4f0 | 43 | - ✅ Demo org / sample repos — shipped via `src/lib/demo-seed.ts` + `DEMO_SEED_ON_BOOT=1` flag wired in `src/index.ts`. Opt-in on boot. |
| 988380a | 44 | - ✅ README reflects shipped feature surface (`README.md`). |
| 90fa787 | 45 | - ✅ Deployment doc reflects Fly.io-first reality (`DEPLOY.md`). |
| 988380a | 46 | - ✅ GATETEST_HOOK.md documents inbound callback contract. |
| 47 | ||
| 48 | ## Operational | |
| 49 | ||
| 50 | - ✅ Autopilot ticker (`src/lib/autopilot.ts`) shipped this session. Runs mirror sync, merge-queue peek, weekly digests, advisory rescans every 5 minutes. Opt out via `AUTOPILOT_DISABLED=1`. Test coverage in `src/__tests__/autopilot.test.ts`. | |
| 51 | - ✅ Site admin panel (`/admin`) + bootstrap rule — oldest user becomes admin when `site_admins` is empty (BUILD_BIBLE Block F3). | |
| 52 | - ✅ Billing plans seeded (free/pro/team/enterprise) + quota enforcement (Block F4). | |
| 53 | - ✅ Audit log surfaced per-user (`/settings/audit`) and per-repo (`/:owner/:repo/settings/audit`) (Block A2). | |
| 54 | - ✅ Email notifications + opt-in weekly digest (Blocks A8, I7). | |
| 90fa787 | 55 | - ✅ Post-receive pipeline — GateTest, secret scanner, AI security review, CODEOWNERS sync, webhook fan-out (Blocks A1, D, repo defaults). |
| 988380a | 56 | - ✅ Auto-repair engine runs when `ANTHROPIC_API_KEY` is set. |
| 57 | - 🟡 Monitoring / on-call rotation — `/metrics` + `/healthz` are live; alerting rules are not. | |
| 58 | - 🟡 Backup restore drill — never rehearsed end-to-end. | |
| 59 | ||
| 60 | ## Communications | |
| 61 | ||
| febd4f0 | 62 | - ✅ Launch announcement draft — `docs/LAUNCH_ANNOUNCEMENT.md` (Show HN + tweet thread + LinkedIn + demo shot list + press kit). |
| 63 | - ✅ Status page surfaced publicly — `/status` HTML page + `/status.svg` shields badge are live. Note: the dedicated external status page (status.gluecron.com or similar) is separate downstream work; the in-app `/status` satisfies the launch bar. | |
| 64 | - ✅ Changelog cadence committed — `CHANGELOG.md` seeded (Keep-a-Changelog / SemVer). Cadence: update on every user-visible release. | |
| 988380a | 65 | |
| 66 | ## Legal | |
| 67 | ||
| 68 | - ✅ Terms of Service — `legal/TERMS.md`. | |
| 69 | - ✅ Privacy policy — `legal/PRIVACY.md`. | |
| 70 | - ✅ Acceptable-use policy — `legal/AUP.md`. | |
| 71 | - ✅ License file — `LICENSE` in root. | |
| 72 | - 🟡 Legal audit — `docs/legal-audit.md` tracks outstanding items; review before launch. | |
| 73 | - ❌ DPA template for enterprise SSO customers (Block I10 shipped, customer paperwork did not). | |
| a64e08d | 74 | |
| 75 | --- | |
| 76 | ||
| 988380a | 77 | ## Go/no-go gates (the short list) |
| a64e08d | 78 | |
| febd4f0 | 79 | **Top blocker: run `flyctl deploy`.** Code is ready; infra just hasn't been provisioned yet. See `DEPLOY_CHECKLIST.md` for the full runbook. |
| 80 | ||
| 81 | 1. **Run `flyctl deploy`** — everything below is gated on this. Release command will run `bun run db:migrate` automatically. | |
| 82 | 2. Set `ERROR_WEBHOOK_URL` or `SENTRY_DSN` as a Fly secret (observability wiring is in place, just needs a real sink). | |
| 83 | 3. Smoke `/healthz`, `/readyz`, `/status` in production → all green. | |
| 84 | 4. Register → create repo → clone over HTTPS → push → GateTest posts back → webhook fires. End-to-end in prod. | |
| 85 | 5. Confirm first-admin bootstrap: oldest user in `users` becomes site admin automatically — register the intended admin first. | |
| 86 | 6. `AUTOPILOT_DISABLED` decision made explicitly (default: enabled). | |
| 87 | 7. `DEMO_SEED_ON_BOOT` decision made explicitly (default: off; flip to `1` if you want sample repos). | |
| a64e08d | 88 | |
| 988380a | 89 | Anything below these bars is non-blocking polish. |