Plan · Build · Sign-off
Porting www.babanuj.com from Next.js 15 (Vercel) to classic Shopify Hydrogen — React Router 7 + Vite — hosted on Vercel, in a new repo, with a parity-gated cutover.
Claude (Fable 5)plans, reviews every PR, maintains this board
Codex · gpt-5.6 @ mediumcodex exec, one task per PR, never merges
Moeevery merge is yours; rollback stays one DNS re-point away
DNS does not move until every step is green, in order.
Skeleton builds and deploys to Vercel; the three platform risks — deployment adapter, caching without workerd, edge rewrites — proven before any product code.
Shopify client, GraphQL documents, BabanujProduct adapter boundary, and seed-data fallback — callable from React Router loaders.
Tailwind v4 tokens, self-hosted fonts, shared primitives, and the site shell so route milestones only assemble pages.
Cookie cart end-to-end: single optimistic context, RR7 actions, /api/cart/add with PostHog stamping, drawer UI. Checkout-host invariant enforced by test.
All 17 public pages as React Router routes, URL-identical to the old app.
Customer Account API OAuth behind the same URLs — Hydrogen's built-in client vs a port of the bespoke flow, decided by spike.
PostHog, Meta, GA4, Judge.me — behind the same public paths and env vars as production.
Everything Google sees — metadata, OG images, sitemap, redirects, structured data — plus the automated parity audit that gates cutover.
Noindexed staging next to production, automated + human gates, then a reversible DNS cutover with the old app as instant rollback.
| # | Risk | Severity | Mitigation |
|---|---|---|---|
| R1 | No first-party Vercel adapter for classic Hydrogen — the glue is ours | Retired | Spike PASSED Jul 11: live Storefront SSR + streaming proven on a Vercel deployment. One residual: Hydrogen's POST Storefront proxy hits a Node duplex bug — tracked for v0.7 consent decision |
| R2 | Losing tag-based revalidation → stale catalog | Medium | TTL matrix + ≤15 min staleness budget (v0.8-t6) |
| R3 | SEO regression at cutover (canonicals, redirects, sitemap) | High | URL-parity script + gate; apex→www 308 explicitly re-verified |
| R4 | Attribution chain breaks (PostHog revenue, Meta CAPI) | High | Byte-level HMAC test + full rehearsal with a real refunded order |
| R5 | Hydrogen calver breaking changes quarterly | Medium | Pin exact versions; upgrades are explicit post-cutover tasks |
| R6 | Shopify+Vercel's official direction is the new framework-agnostic Hydrogen (Next.js starter) — this port swims against that current | Medium | Acknowledged at sign-off; toolkit path documented as R1's fallback |
babanuj-hydrogen Vercel project (separate from production) and must prove live Storefront SSR + streaming on a preview URL. This is the R1 abort-criterion task.gpt-5.6-terra (gpt-5.6/sol rejected on this ChatGPT plan; Decisions log updated), and Codex's sandbox can't write .git, so the runner performs commits/PRs with Codex-authored content verbatim.moeghashim/babanuj-hydrogen created on GitHub; Codex (gpt-5.6 @ medium) invoked to generate the v0.1 task breakdown under dev/milestones/. It stops for review before any code.