New: PHASE9_COMMERCE_AND_LAUNCH.md, WEBSITE_REGISTRATION_AND_CHECKOUT.md, STRIPE_INTEGRATION_RUNBOOK.md, WINTER_BREAK_LAUNCH_CHECKLIST.md. Updated: ROOTNODE_ACADEMY_BUSINESS_AND_PRODUCT_ARCHITECTURE.md (commerce boundary + PHASE 9 BUILT rows), OFFERING_AND_REGISTRATION_MODEL.md (pricing, the payment/commerce boundary, three-status principle), WEBSITE_ENROLLMENT_INTEGRATION.md (price fields, real agreement/checkout/webhook sections replacing Phase 8 placeholders), WINTER_BREAK_CAMP_OPERATIONS.md (real payment step replacing the manual placeholder).
4.6 KiB
Winter Break Camp — Launch Checklist
The single go/no-go list for opening the Winter Break Linux & Systems Foundations Camp
(docs/WINTER_BREAK_CAMP_CURRICULUM_OPTIONS.md Option A) to real public registration. Combines
docs/WINTER_BREAK_CAMP_OPERATIONS.md's operational sequence with Phase 9's commerce
requirements into one checklist Chase can walk top to bottom. Nothing on this list is invented by
the platform — every unchecked item is a real decision or asset that has to come from Chase, the
legal reviewer, or Stripe, not from more code.
Platform readiness — done, verified, ready whenever the business inputs below land
- Offering, capacity, registration lifecycle, agreements — built and tested (Phase 7/8).
- Offering pricing field, payment-provider abstraction, hosted checkout, verified webhook, refund recording, abandoned-reservation reaper — built and tested against the deterministic test provider (Phase 9).
- Website registration + checkout + agreement + status-lookup contract — documented and
tested (
docs/WEBSITE_REGISTRATION_AND_CHECKOUT.md). - Admin UI for offering pricing and per-registration payment/refund status.
GET /api/admin/offerings/:id/readinessreflects real configuration state, including the newpriceandpayment_providerchecks.- Full Winter Break commerce rehearsal green end to end against a real, freshly-built stack
(
infra/scripts/drills/test-phase9-winter-camp-commerce.js, 13/13): admin configuration, minor and adult registration, checkout, payment success, webhook, enrollment activation, a real classroom session, a real Lab task, failed payment, duplicate webhook, abandoned checkout, and a last-seat race.
Business decisions — Chase's call, not invented by this phase
- Real camp dates and duration.
- Real venue/location (or confirm fully online/remote).
- Real capacity (seat count).
- Real price and currency.
- Whether registration opens ahead of, or alongside, a specific marketing push.
- Refund policy in plain terms (the platform can RECORD any refund decision; it does not
decide policy — see
docs/OFFERING_AND_REGISTRATION_MODEL.md's "Payment and the commerce boundary" section for what "record, never auto-cascade" means operationally).
Legal review — required before any real family sees the agreement
- The actual participation/media/liability agreement text, reviewed by a real attorney
(
agreement_definitions.body_summaryis currently a plain-language placeholder only — seedocs/STUDENT_GUARDIAN_DATA_MODEL.md's legal-review list). - Jurisdiction-specific minor-consent requirements confirmed.
- Data-retention/deletion policy decided and, if needed, reflected in the agreement text.
- A decision on whether emergency-contact fields need additional encryption at rest.
Payments — pending real Stripe credentials
- Real Stripe account created/available (live mode).
STRIPE_SECRET_KEY/STRIPE_WEBHOOK_SECRET(live values) provisioned into production configuration only — seedocs/STRIPE_INTEGRATION_RUNBOOK.md's "Going live" section.- At least one real, small, refundable test transaction run end to end in production before opening registration publicly, then refunded.
- Recommended (not required — the test provider already validates the application logic):
one full rehearsal against Stripe's own TEST mode (fake cards, no real money) before
flipping to live credentials, per
docs/STRIPE_INTEGRATION_RUNBOOK.md's test-mode section.
Website (separate repo, not RootNode-owned)
- rootnodeacademy.com's own registration/checkout form built against
docs/WEBSITE_REGISTRATION_AND_CHECKOUT.md. Not tracked or built in this repository — if that repo becomes available to RootNode's own engineering effort, say so explicitly before any code changes are made against it. - The website's
INTEGRATION_SHARED_SECRETprovisioned into its OWN backend configuration (never browser-reachable) — seedocs/WEBSITE_ENROLLMENT_INTEGRATION.md's "Production secret handling." - The website's success page built against the status-lookup polling pattern in
docs/WEBSITE_REGISTRATION_AND_CHECKOUT.md§6 — never derived from the redirect URL alone.
Final go/no-go
Registration should not open to the public until every box above is checked. The platform side (first section) has been true since this phase shipped; everything else is a business, legal, or external-team dependency this phase deliberately did not — and should not — invent on Chase's behalf.