CodeIssuesDiscussionsWikiPull RequestsProjectsCommitsActionsReleasesContributorsPulse● GatesSecuritySettingsDeploymentsPipelineInsightsAgents✨ Explain✨ Ask AI✨ Workspace✨ Spec✨ Tests▓ Debt Map✨ NL Search🏛 Archaeology
Blame · Line-by-line history
TODO.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.
| 58267aa | 1 | # Gluecron Master To-Do List |
| 2 | ||
| 43461a9 | 3 | Last updated: 2026-06-06 (rev 4 — full codebase audit complete, Bible is 35% of reality) |
| 58267aa | 4 | |
| 43461a9 | 5 | **IMPORTANT:** The BUILD_BIBLE.md documents ~35% of the actual codebase. 34 migrations (0043–0076) and 87+ lib files exist beyond what the Bible tracks. This list is based on direct code scanning, not the Bible. |
| 58267aa | 6 | |
| 43461a9 | 7 | Tick off items as they ship. Add `[x] YYYY-MM-DD commit:abc` when done. |
| 8 | Work top-to-bottom within each priority. | |
| 58267aa | 9 | |
| 10 | --- | |
| 11 | ||
| 43461a9 | 12 | ## 🔴 PRIORITY 1 — Configuration Blockers (Built, Just Not Configured) |
| 58267aa | 13 | |
| 43461a9 | 14 | These are NOT build tasks — the code is complete. They need ops/config action. |
| 58267aa | 15 | |
| 43461a9 | 16 | - [ ] **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. |
| 17 | - [ ] **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. | |
| e78cb41 | 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. |
| 43461a9 | 19 | - [ ] **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. |
| 20 | - [ ] **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. | |
| d3a4be7 | 21 | |
| 22 | --- | |
| 58267aa | 23 | |
| 43461a9 | 24 | ## 🟠 PRIORITY 2 — Genuine Code Gaps (Need Building) |
| 58267aa | 25 | |
| 43461a9 | 26 | These are confirmed missing by direct code inspection. |
| 58267aa | 27 | |
| 43461a9 | 28 | - [ ] **Container registry (Docker/OCI)** — No files exist for this anywhere in the codebase. npm package registry is complete (`src/lib/packages.ts`). The OCI push/pull protocol needs implementing: `GET /v2/`, `HEAD /v2/:name/blobs/:digest`, `POST /v2/:name/blobs/uploads/`, `PUT /v2/:name/manifests/:ref`. Without Docker support, teams with containerised apps can't fully leave GitHub. |
| 5c7b43d | 29 | - [x] 2026-06-06 **Redis SSE fan-out** — `src/lib/sse.ts` rewritten. When `REDIS_URL` or `VALKEY_URL` is set, uses two `Bun.RedisClient` instances (pub + sub) with `autoReconnect`. Topic-scoped SUBSCRIBE/UNSUBSCRIBE. On disconnect, re-subscribes all channels. Falls back to local delivery if Redis unreachable. In-memory path unchanged when no URL set. Zero API changes to callers. |
| 34d9e27 | 30 | - [x] 2026-06-06 **Workflow cache SAVE** — `saveCacheEntry()` implemented in `src/lib/actions/cache-action.ts`. DB-backed via `workflow_run_cache` Postgres table; tarballs paths, SHA-256 hashes, 100MB cap, upserts content. Wired in `src/lib/workflow-runner.ts` post-job. LOAD unchanged. |
| bb3979c | 31 | - [x] 2026-06-06 **Pack-content ruleset enforcement** — `commit_message_pattern`, `blocked_file_paths`, `max_file_size` now blocking at push time via pre-receive hook (`GIT_CONFIG_COUNT` env injection). Git commands: `git log --format="%H %s"`, `git diff --name-only`, `git cat-file -s`. Wired in `src/routes/git.ts` (HTTP) and `src/lib/ssh-server.ts` (SSH). All 10 push-policy + 23 ruleset tests pass. |
| 699f33e | 32 | - [x] 2026-06-06 commit:44ed968 **Branch preview expiry cleanup** — `expireOldPreviews()` wired as `preview-expiry` autopilot task in `src/lib/autopilot.ts`. Admin UI updated to show 10 tasks including `auto-merge-sweep`, `ai-build-from-issues`, and `preview-expiry`. |
| 30dcfbe | 33 | - [x] 2026-06-06 **Server targets → customer-facing** — `src/routes/deploy-targets.tsx` (414 lines). `GET/POST /settings/deploy-targets`, `POST /settings/deploy-targets/:id/delete`, `POST /settings/deploy-targets/:id/test`. AES-256-GCM encryption via `SERVER_TARGETS_KEY`. Ownership-gated. Added to settings subnav and registered in `src/app.tsx`. |
| 77b6461 | 34 | - [x] 2026-06-06 **Claude Web Sessions → customer-facing** — `/:owner/:repo/claude` now open to all authenticated users with repo access. `listSessionsForUser()` scopes sessions to owner. Session list: colour-coded status badges, reverse-chron order. SSE stream via `GET /:owner/:repo/claude/:sessionId/stream?prompt=`. Spawns `claude --print --output-format stream-json`. "✨ Claude AI" sidebar card added to repo home (`src/routes/web.tsx`). |
| da5ceed | 35 | - [x] 2026-06-06 **AI budget hard enforcement** — `assertAiQuota(userId)` added to `src/lib/billing.ts` with 60s in-memory cache. Wired into `ai-review.ts` (posts skip comment), `ai-review-trio.ts` (fail-closed trio result), `ai-ci-healer.ts` (returns skipped), `spec-to-pr.ts` (returns error to UI). Warn at 90%, throw `AiQuotaExceededError` at 100%. Fails open on DB error. |
| 23d8851 | 36 | - [x] 2026-06-06 **Spec-to-Live real-time progress UI** — `src/routes/specs.tsx` (+593 lines). POST redirects to `/:owner/:repo/spec/:jobId/progress`. Polling (2s, <20 lines JS) as primary; SSE endpoint as secondary. 8-stage timeline: analyzing→writing→opening_pr→ai_reviewing→gates_running→merging→deploying→done. In-memory `SpecJob` Map with 10-min eviction. No-JS server-render fallback. |
| 43461a9 | 37 | - [ ] **Agent marketplace — real listings** — Migration `0070_agent_marketplace.sql` is complete with full schema (listings, installs, reviews, 30% revenue cut built in). The route `src/routes/marketplace-agents.tsx` exists. But there are only seed listings. Write a "Publish an agent" guide, reach out to 10 developers, get 20+ real listings. |
| 58267aa | 38 | |
| 39 | --- | |
| 40 | ||
| 43461a9 | 41 | ## 🟡 PRIORITY 3 — Messaging (Every Page Needs This) |
| be18eee | 42 | |
| 3b2f7bf | 43 | - [x] 2026-06-06 **Landing hero** (`src/views/landing.tsx`) — H1: "Write the spec. Gluecron ships it." Subhead: "Spec to PR in 90 seconds. Push to live in 25. AI review, auto-merge, deploy — automatic." Sleep Mode demoted to single closing clause. Rail label: "deploys shipped". |
| 44 | - [x] 2026-06-06 **Landing "what's happening now" rail** — Rail label updated; "Three reasons" card 1 rewritten to lead with timing numbers. Sleep Mode demoted to one line. | |
| f12113a | 45 | - [x] 2026-06-06 **vs-github AI rows** (`src/routes/vs-github.tsx`) — All 10 AI-native rows now have latency numbers: "AI review fires the moment PR opens (~8s)", "auto-merge triggers the instant gates pass", "ai:build → draft PR in 90 seconds", etc. Sleep Mode renamed to "async batch digest" — framed as opt-in, not the headline. |
| 46 | - [x] 2026-06-06 **Demo page** (`src/routes/demo.tsx`) — Tile headings: "being built right now" / "merged the instant gates passed". Steps updated with real-time language. Live feed subtitle: "Happening right now". Empty states rewritten. | |
| 47 | - [x] 2026-06-06 **Sleep Mode demoted** — Demoted across landing (one closing clause) and vs-github (async opt-in framing). Never leads anywhere. | |
| 3b03d2e | 48 | - [x] 2026-06-06 **OG/meta descriptions** — All pages audited. Landing title/desc: "AI-native git host. Spec to PR in 90 seconds." Pricing, vs-github, demo, explore, help: descriptions added. Per-repo pages: dynamic description. "wake up to", "overnight", "while you sleep" stripped everywhere including landing-2030.tsx body copy. Tests updated. |
| c78704e | 49 | - [x] 2026-06-06 **Pricing page** — Speed-first hero: monospace "Spec to PR in 90 seconds." accent stat, sub-copy with timing numbers. "Included in every plan" pill strip. All 4 plan card taglines mention AI review + auto-merge. OG/meta description added. |
| 58267aa | 50 | |
| 51 | --- | |
| 52 | ||
| 43461a9 | 53 | ## 🔵 PRIORITY 4 — Polish & Customer Experience |
| 58267aa | 54 | |
| 43461a9 | 55 | ### Onboarding |
| b27fb82 | 56 | - [x] 2026-06-06 **Empty state for new repos** — 3-option panel in `src/routes/web.tsx`: git commands to push first commit, link to /import, link to /:owner/:repo/specs. Done in wave 1. |
| 6972416 | 57 | - [x] 2026-06-06 **Onboarding email sequence** — `drizzle/0081_onboarding_emails.sql` adds `onboarding_emails_sent jsonb`. `src/lib/onboarding-drip.ts`: T+0 welcome (fire-and-forget in `auth.tsx` POST /register), T+1d "Try Spec-to-PR", T+3d "Your AI is watching" via `onboarding-drip` autopilot task. Idempotent via jsonb key tracking. Skips when RESEND_API_KEY unset. |
| 002ce06 | 58 | - [x] 2026-06-06 **Dashboard "AI just did this" widget** — `AiActivityWidget` added to `src/routes/dashboard.tsx`. Queries `audit_log` (auto_merge.merged, ai_build.dispatched) and `gate_runs` (status=repaired) for last 60 minutes. Shows per-category counts, item list with links, "All quiet — AI is watching." empty state. |
| 562a5d1 | 59 | - [x] 2026-06-06 **Push Watch → make it discoverable** — Pulsing "● Live" badge in `RepoHeader` (red + `pushWatchPulse` animation when <5min, muted "○ Watch" when <24hr). Query on `activity_feed` WHERE action='push'. Eye-icon watch link on every commit row. `src/views/components.tsx`, `src/views/layout.tsx`, `src/routes/web.tsx`. |
| 2455f0a | 60 | - [x] 2026-06-06 **Repo overview AI stats strip** — `getRepoAiStats(repoId)` in `src/routes/web.tsx`. Shows "⚡ AI merged N PRs this week · Saved ~X hrs · N open security alerts" below file tree. Queries `activity_feed` (auto_merge), `pr_comments` (is_ai_review), `gate_runs` (security). Hidden when all zeros. |
| 58267aa | 61 | |
| 43461a9 | 62 | ### Admin |
| 614b42d | 63 | - [x] 2026-06-06 **Admin > AI cost breakdown** — `/admin/ai-costs`: monthly total, breakdown by `category`, top 10 spenders with CSS bar chart. `ai_cost_events` JOIN `users`. Added to admin dashboard nav. |
| ee17176 | 64 | - [x] 2026-06-06 **Admin > Stripe sync** — `src/routes/admin-stripe.tsx` at `/admin/stripe`. Fetches non-free users from `user_quotas`, calls live Stripe API per user, flags plan mismatches. `POST /admin/stripe/:userId/sync` corrects local plan to match Stripe. Degrades gracefully without STRIPE_SECRET_KEY. |
| 614b42d | 65 | - [x] 2026-06-06 **Admin > Autopilot health** — `/admin/autopilot/health`: 10 tasks with last-tick status, duration, 24h success/error counts from `audit_log`. In-process `getLastTick()`/`getTickCount()` from autopilot.ts. |
| 66 | - [x] 2026-06-06 **Admin > User growth chart** — `/admin/growth`: daily signups last 30 days (`date_trunc('day', created_at)`), activation rate (users with ≥1 repo), CSS bar chart table. | |
| 699f33e | 67 | - [x] 2026-06-06 commit:44ed968 **K3 tasks on `/admin/autopilot`** — `auto-merge-sweep` and `ai-build-from-issues` were already present; `preview-expiry` added. Badge updated to "10 tasks". |
| d3a4be7 | 68 | |
| 43461a9 | 69 | ### Developer Experience |
| dc39a44 | 70 | - [x] 2026-06-06 **System/autopilot user** — `drizzle/0078_bot_user.sql` seeds `gluecron[bot]` (empty password_hash, non-loginable). `src/lib/bot-user.ts` lazy-caches the UUID. 10 comment call sites updated across `stale-sweep.ts`, `ai-review.ts`, `ai-review-trio.ts`, `autopilot.ts`. 🤖 bot pill shown in PR/issue comment headers. |
| 6969bfb | 71 | - [x] 2026-06-06 **Notification preferences** — Restructured into 4 categories in `src/routes/settings.tsx`: AI activity, CI/CD, Code review, Mentions. All existing `name=` attrs preserved — POST handler unchanged. Email pill count updated to 5 events. |
| b27fb82 | 72 | - [x] 2026-06-06 **Repo health badge on repo overview** — Health score badge added to `RepoHeader` in `src/routes/web.tsx`. Grade colours: Elite=green, Strong=blue, Improving=yellow, Needs Attention=red. Links to /:owner/:repo/insights/health. Done in wave 1. |
| 98bc72c | 73 | - [x] 2026-06-06 **AI Trio Review UI indicator** — `TrioVerdictPills` component added to `src/routes/pulls.tsx`. Three pills (Security/Correctness/Style) in the PR header meta div. Feature-flagged on `AI_TRIO_REVIEW_ENABLED=1`. Pills link to `#trio-review-section`. No extra DB query — reads from already-fetched `prComments`. |
| b1e6ede | 74 | - [x] 2026-06-06 **L1 sleep-mode column split** — `drizzle/0079_sleep_digest_column.sql` adds `last_sleep_digest_sent_at`. Schema updated. `sleep-mode.ts` and `autopilot.ts` now write/read the dedicated column. Tests updated. (Renamed from 0077 to avoid collision with `0077_auto_generate_tests.sql`.) |
| 6969bfb | 75 | - [x] 2026-06-06 **GitHub unlink route** — `POST /settings/github/unlink` deletes `sso_user_links` rows with `subject` starting `"github:"`. "Disconnect GitHub" button shown on settings page when GitHub is linked. Audited via `auth.github.unlink`. |
| 43461a9 | 76 | - [ ] **Branch preview expiry UX** — previews.tsx shows status pills (building/ready/failed/expired). Once expiry cleanup is wired, test the "expired" state renders correctly. |
| 77 | ||
| 78 | ### Documentation & Help | |
| 9c80804 | 79 | - [x] 2026-06-06 **Docs site** — `src/routes/docs.tsx` (1600 lines). Routes: /docs, /docs/getting-started, /docs/workflow-yaml, /docs/mcp-server, /docs/api, /docs/agents. All 15 MCP tool names from mcp-tools.ts, real rate limits, real workflow YAML examples, agent.json manifest format. Footer "Docs" link updated. |
| b1e6ede | 80 | - [x] 2026-06-06 **Changelog page** — `src/routes/changelog.tsx` at `/changelog`. June + May 2026 releases listed. "Subscribe to updates" CTA → `/settings/notifications`. Changelog link added to footer in `layout.tsx`. |
| 43461a9 | 81 | - [ ] **Legal pages attorney review** — All four legal pages (`terms`, `privacy`, `dmca`, `acceptable-use`) are substantive drafts marked "DRAFT — requires attorney review." Get legal sign-off before any paid launch. |
| af39632 | 82 | - [x] 2026-06-06 **Status page — polish** — `drizzle/0080_incidents_and_status_subscribers.sql` adds `incidents` + `status_subscribers` tables. `src/routes/status.tsx` rewritten: overall status banner, 6 service uptime rows, last-10 incident history table, subscribe form with confirm/unsubscribe token flow. |
| 58267aa | 83 | |
| 84 | --- | |
| 85 | ||
| 43461a9 | 86 | ## 🟣 PRIORITY 5 — Growth & Distribution |
| d3a4be7 | 87 | |
| 43461a9 | 88 | - [ ] **60-second demo video** — Screen record: type a spec → AI writes code → PR opens → trio review posts → gates pass → auto-merged. Show elapsed time counter. No voiceover. Embed everywhere. |
| 89 | - [ ] **VS Code extension → publish** — `vscode-extension/` is built. Run `vsce package`, publish to VS Code Marketplace. Free discovery. | |
| 90 | - [ ] **CLI → publish to npm** — `cli/gluecron.ts` is built. Publish as `gluecron` npm package. `npx gluecron login` as zero-install entry. | |
| 91 | - [ ] **CLI → Homebrew formula** — `brew install gluecron`. Mac developer standard. | |
| 92 | - [ ] **JetBrains plugin** — Same four commands as VS Code. Kotlin plugin. Covers IntelliJ, WebStorm, GoLand. | |
| 30639af | 93 | - [x] 2026-06-06 **GitHub migration as primary CTA** — "Migrate from GitHub →" button added to landing hero and logged-out nav (accent pill). "Coming from GitHub?" callout card on explore page. Import page headline: "Migrate your GitHub org in 60 seconds." |
| 94 | - [x] 2026-06-06 **Developer program page** — `src/routes/developer-program.tsx` at `/developer-program`. Hero: "Build on Gluecron. Earn revenue." Publish agent / 70% revenue share / partner badge sections. Partner application form (POST logs + redirects). Footer link added. | |
| 6972416 | 95 | - [x] 2026-06-06 **Shareable AI hours saved card** — `src/routes/share.tsx`: SVG OG image at `/share/hours-saved?user=:username` (1200×630, dark bg, green glow number). HTML share page at `/share/:username` with og:image, Twitter pre-fill, copy-link button. "Share your AI stats" link added to billing usage page. Hours: PRs×1.5 + reviews×0.5 + heals×0.3. |
| 43461a9 | 96 | - [ ] **Blog / devlog** — Monthly shipping updates. Developers follow platforms that ship visibly. |
| d3a4be7 | 97 | |
| 43461a9 | 98 | --- |
| d3a4be7 | 99 | |
| 43461a9 | 100 | ## ⚫ PRIORITY 6 — Strategic / Long-Term |
| 101 | ||
| 102 | - [ ] **SOC 2 Type II** — Engage auditor, scope controls. 6–9 months. No enterprise deals without it. | |
| 103 | - [ ] **EU data residency** — Neon postgres EU region + Fly.io EU region. "Data region" selector at org creation. | |
| ee17176 | 104 | - [x] 2026-06-06 **GDPR account deletion verification** — Two gaps fixed in `src/lib/account-deletion.ts`: disk repo cleanup (rm each `repositories.diskPath` + user dir) and Stripe subscription cancellation. DB CASCADE already handled sessions/ssh_keys/api_tokens etc. `audit_log.user_id` ON DELETE SET NULL anonymises rows. New `/admin/deletions` page + force-purge button. |
| 80b1b18 | 105 | - [x] 2026-06-06 **Audit log SIEM export** — `GET /api/v2/audit` in `src/routes/api-v2.ts`. Admin Bearer auth, params: since/until/limit/cursor/actor/action/resource_type. Returns `{events, nextCursor, hasMore}` + `X-Total-Count` header. Each event: id, action, actor_username, resource_type, metadata, created_at, ip_address. |
| 106 | - [x] 2026-06-06 **Enterprise sales page** — `src/routes/enterprise.tsx` at `/enterprise`. Sections: custom pricing, SSO (SAML/OIDC), SLA, data residency, SOC 2, SIEM. Contact form `POST /enterprise/contact` → `enterprise_leads` table (migration 0082). Footer "Enterprise" link added. | |
| 43461a9 | 107 | - [ ] **Native iOS app** — Minimum viable: repo browser, notifications, PR approve/reject, AI chat. React Native. |
| 108 | - [ ] **Native Android app** — Share React Native codebase with iOS. | |
| 5426376 | 109 | - [x] 2026-06-06 **Multi-agent pipeline UI** — `src/routes/agent-pipelines.tsx` (1100 lines). Routes: `/:owner/:repo/agents` (list), `/agents/new` (builder, JS-free ?stages=N pattern), `POST /agents` (creates session + lease rows), `/:sessionId` (live view, 5s meta-refresh), `/:sessionId/cancel`. "Agents" tab added to RepoNav. |
| b27fb82 | 110 | - [x] 2026-06-06 **AI pair programmer (browser)** — Covered by "Claude Web Sessions → customer-facing" above. `/:owner/:repo/claude` open to all authenticated users. SSE streaming via `claude --print --output-format stream-json`. "✨ Claude AI" sidebar card on repo home. |
| 43461a9 | 111 | - [ ] **End-to-end test suite** — Playwright covering register → push → PR → AI review → merge. Catches flow regressions that unit tests miss. |
| 112 | - [ ] **Load testing** — k6 or Artillery before any growth push. What happens at 1000 concurrent git pushes? | |
| 113 | - [ ] **Database connection pooling verification** — Confirm PgBouncer or Neon pooling is correctly configured for multi-instance load. | |
| d3a4be7 | 114 | |
| 43461a9 | 115 | --- |
| d3a4be7 | 116 | |
| 43461a9 | 117 | ## ✅ CONFIRMED COMPLETE (Direct Code Verification) |
| 118 | ||
| 119 | Verified by reading actual files — not just the Bible. | |
| 120 | ||
| 121 | **Revenue/Billing:** | |
| 122 | - Stripe Checkout + webhook + customer portal — complete, needs env vars only | |
| 123 | - Billing plans, quotas, usage tracking — complete | |
| 124 | - Billing UI with usage bars, plan cards, upgrade flow — complete | |
| 125 | - AI cost events + per-call tracking (`ai_cost_events` table) — complete | |
| 126 | - Budget cap warning system — complete (advisory; hard enforcement is a gap above) | |
| 127 | ||
| 128 | **Auth & Identity:** | |
| 129 | - SSH git push — complete (ssh-server.ts, 545 lines, wired at boot) | |
| 130 | - Password reset, email verification, magic link sign-in — complete | |
| 131 | - Google OAuth — complete | |
| 132 | - Playground anonymous accounts — complete | |
| 133 | - Account deletion with grace period — complete | |
| 134 | - Terms acceptance audit trail — complete | |
| 135 | ||
| 136 | **AI Features (all wired, not stubs):** | |
| 137 | - AI CI healer (auto-fixes failed workflow runs) — complete, runs every 5 min | |
| 138 | - AI proactive monitor (platform health surveillance) — complete, runs hourly | |
| 139 | - Stale PR/issue sweep (two-stage poke + auto-close) — complete, runs every 5 min | |
| 140 | - AI trio review (three-model parallel: security/correctness/style) — complete, opt-in | |
| 141 | - AI standup generation (daily/weekly briefs) — complete | |
| 142 | - Repair flywheel (learning cache for patches) — complete | |
| 143 | - Voice-to-PR — complete (1092 lines) | |
| 144 | - Multi-repo refactoring — complete | |
| 145 | - Migration assistant (AI-driven major dep upgrades) — complete | |
| 146 | ||
| 147 | **Developer Experience:** | |
| 148 | - Per-repo AI chat — complete (repo-chat.tsx, 967 lines) | |
| 149 | - Personal cross-repo AI chat — complete (personal-chat.tsx, 1137 lines) | |
| 150 | - Hosted Claude loops (deploy Claude agents as endpoints) — complete | |
| 151 | - Cloud dev environments (browser IDE) — complete (schema + routes, feature-flagged) | |
| 152 | - Branch preview URLs — complete (URL gen; expiry cleanup missing — see Priority 2) | |
| 153 | - PR sandboxes — complete (4h TTL, auto-provision on PR open) | |
| 154 | - PR live co-editing with cursor presence — complete | |
| 155 | - Comment moderation queue — complete | |
| 156 | - Import secrets from GitHub — complete | |
| 157 | - Agent multiplayer (sessions, leases, budgets) — complete | |
| 158 | ||
| 159 | **Integrations:** | |
| 160 | - Slack/Discord/Teams chat notifications — complete | |
| 161 | - Durable webhook delivery with exponential backoff retry — complete | |
| 162 | - Synthetic uptime monitoring — complete | |
| 163 | - Deploy timeline + step streaming — complete | |
| 164 | ||
| 165 | **Admin:** | |
| 166 | - /admin/diagnose — 14 system health checks — complete | |
| 167 | - /admin/self-host — self-hosting wizard — complete | |
| 168 | - /admin/servers — SSH deploy targets — complete (admin-only; customer rollout is a gap) | |
| 169 | ||
| 170 | **Everything in BUILD_BIBLE §2 marked ✅** is confirmed present in the codebase. The Bible claims 100% accuracy for what it documents — no phantom features found. | |
| 58267aa | 171 | |
| 172 | --- | |
| 173 | ||
| e78cb41 | 174 | ## 💳 LAST — Stripe/Billing Configuration (When Platform Is Ready) |
| 175 | ||
| 176 | These 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 | ||
| 43461a9 | 182 | ## Notes |
| 58267aa | 183 | |
| 43461a9 | 184 | - `- [ ]` = not started / not configured |
| 185 | - `- [x] YYYY-MM-DD commit:abc` = done | |
| 186 | - Bible is accurate but covers only ~35% of the codebase by file count | |
| 187 | - 34 migrations beyond 0042 represent major post-Bible development | |
| 188 | - When in doubt: scan the code, don't trust the Bible |