Go-Live Readiness — Pro Website — 2026-04-18T09:30Z
Overall: 60% (NEEDS WORK) — 0 P0, 2 new P1 (CI regression, derive still drifting), 3 P1 carried, 2 P2 carried
Regressed from yesterday's 65% → 60% because the plan-contract regression-defense PR merged
src/lib/__tests__/tier-config.contract.test.tsto main without installingvitest. TypeScript Check + Tests workflows have been red on main for 3 consecutive pushes since 2026-04-18T02:38Z. This is not customer-impacting yet but violates the green-CI rule and must be fixed before anything else ships.
Two-axis score
| Axis | Yesterday 17:00 | Today 09:30 | Change |
|---|---|---|---|
| A — Customer Reality | 60% (capped) | 60% (capped) | — (still no real paying customer) |
| B — Regression Safety | 78% | 61% | −17 pts (CI red + no new stamps) |
| Overall weighted (0.7A + 0.3B) | 65% | 60% | −5 pts |
Axis A — Customer Reality (capped at 60% until first real paying customer)
Pro Website Stripe subscriptions state today:
| church_id | plan | status | stripe_sub | admin_email | is_real? |
|---|---|---|---|---|---|
fb628ffc…eb8 | cwa_pro_website | active | ✅ sub_1TN0DCFa… | john+pws2@churchwiseai.com | ❌ founder test |
00000000…002 | ps_pro_website | active | ❌ null | john@churchwiseai.com | ❌ demo |
00000000…003 | ps_pro_website | active | ❌ null | john@churchwiseai.com | ❌ demo |
Real-paying non-founder non-demo subscriptions: 0. Cap holds. Axis A unlocks only when a subscription has stripe_subscription_id IS NOT NULL AND admin_email NOT LIKE '%@churchwiseai.com' AND church_id NOT IN (demo UUIDs).
Axis B dimensions — new state
| # | Dimension | Yesterday | Today | Note |
|---|---|---|---|---|
| 1 | Journeys | ✅ PASS | ⚠ WARN | 3/3 registry entries present, but all last_run: null; spec still DRAFT |
| 2 | Viewports | ⚠ WARN | ⚠ WARN | 4 pro-website Playwright specs exist, none stamped this month |
| 3 | Knowledge | ❌ FAIL | ❌ FAIL | derive --check still drifts (INDEX.md diff) + 17 PK WARNINGs. Self-heal still blocked by concurrent WIP in knowledge repo (8 files uncommitted). |
| 4 | Billing | ✅ PASS | ✅ PASS | Critical Path Gate on PR #51 green (2026-04-18T03:12Z). Stripe E2E Monthly last green 2026-04-14. |
| 5 | Docs | ✅ PASS | ✅ PASS | /help/pro-website → 200, canonical_source points to src/app/help/pro-website/page.tsx |
| 6 | Drift & Issues | ✅ PASS | ❌ FAIL (new) | API drift ✅, SQL counts clean (0 P0/P1, 0 open ops_errors), but CI workflows Critical Path Protection + Tests red on main for 3 consecutive pushes |
| 7 | Analytics | ✅ PASS | ✅ PASS | /api/founder/readiness/pro-website returns 401 (correctly auth-gated) |
| 8 | Marketing | ✅ PASS | ✅ PASS | Landing + pricing 200; e2e/synthetic/pro-website-funnel.spec.ts present; MailerLite group verification skipped (env var path mismatch — P2 backlog) |
| 9 | Agents | ⚠ WARN | ⚠ WARN | No resource conflicts; voice-agent-testing-backlog 2 days stale |
Score: (0.5 + 0.5 + 0.0 + 1.0 + 1.0 + 0.0 + 1.0 + 1.0 + 0.5) / 9 = 61% Weighted: 0.7 × 60 + 0.3 × 61 = 60.3% → NEEDS WORK
The one thing that matters this run
Fix CI on main. src/lib/__tests__/tier-config.contract.test.ts:12 does import { describe, it, expect } from 'vitest' — vitest isn't in churchwiseai-web/package.json. Every push to main has failed Critical Path Protection → TypeScript Check since 2026-04-18T02:38Z. Options:
- Add vitest as a devDependency (
pnpm add -D vitest) if we want the contract to run as a real unit test. - Swap to the existing test runner — the repo's other unit tests use Playwright's
test.describe+ plainassert. Rewrite the file to match (lower churn, no new dep). - Delete the file and redefine the contract as a Playwright spec that exercises the webhook end-to-end (closer to how the original 2026-04-17 P0 actually broke).
Recommended: option 2 (rewrite, no new dep). Option 3 is better long-term but is larger scope.
Punch list
- P1 (new) CI red on main —
tier-config.contract.test.tsimports vitest (not installed). Blocks every merge's post-push Critical Path Protection + Tests workflows. See newFA-043appended toFOUNDER_ACTIONS.md. - P1 (new)
Testsworkflow — behavioraltest_demo_data_completeness.pyfailing onreal_customer_rows_have_minimum_identity("unsupported data-state case shape") andevery_full_demo_has_required_fields(Saint Joseph demo missingpremium_churchesrow per test expectation; actually row exists — test's lookup logic appears stale). Same root PR: rolled in with the regression-defense commit. - P1 (carried) Knowledge drift (
pnpm derive --checkfails + 17 PK WARNINGs). Still blocked by concurrent uncommitted WIP in knowledge repo (data/pricing.yaml,data/products.yaml,acceptance/pewsearch-premium.md,changelog.md, others). Either commit-and-derive or stash-and-run in a scoped branch. - P1 (carried) Playwright specs
cwa-onboarding-wizard,cwa-pro-website-ssr,cwa-pro-website-editall havelast_run: null. Run against staging + stamp registry. - P1 (carried)
knowledge/acceptance/cwa-pro-website.mdstill DRAFT — needs founder interview on 7 CWA-specific deltas vspewsearch-pro-website.md. - P2 (carried)
voice-agent-testing-backlogworkstream 2 days stale (last commit 2026-04-16). Confirm active or release. - P2 (carried) MailerLite
pro-website-leadsgroup presence not verified this run (env var path differed from expected). Small fix.
Self-healed this run
None. Same as yesterday — pnpm derive self-heal blocked by concurrent agent's uncommitted knowledge/ WIP (data/pricing.yaml, data/products.yaml, acceptance/pewsearch-premium.md, changelog.md, INDEX.md, FRESHNESS_REPORT.md, products/chatbot/overview.md, products/premium-page/overview.md). Running derive would clobber in-flight edits. Recommended: the owner of those edits commits first, then we run derive as a follow-up.
Evidence
- Critical-Path-Gate run (green): https://github.com/ChurchWiseAI/churchwiseai-web/actions/runs/24595630415
- Critical Path Protection on main (RED — TypeScript): run
24595630636, failed stepTypeScript Check, errorerror TS2307: Cannot find module 'vitest'atsrc/lib/__tests__/tier-config.contract.test.ts:12 - Tests workflow on main (RED — behavioral): run
24595630634, failedtests/behavioral/verticals/church/test_demo_data_completeness.py - API drift check:
cd C:/dev/churchwiseai-web && bash scripts/check-api-drift.sh→ALL CHECKS PASSED - Knowledge derive check:
cd C:/dev/knowledge && pnpm derive --check→DRIFT DETECTED(INDEX.md diff, 274+ lines differ) - SQL counts: 0 open P0/P1 founder_action_items, 0 open P0/P1 ops_errors (7d), 17 product_knowledge CRITICAL/WARNING rows
- Sample public URL: https://the-bridge-church.john316.church → 200
- Help page: https://churchwiseai.com/help/pro-website → 200
- Landing: https://churchwiseai.com/pro-website → 200
- Pricing: https://churchwiseai.com/pricing → 200
- Founder readiness API: https://churchwiseai.com/api/founder/readiness/pro-website → 401 (auth-gated, route exists)
Path to READY (unchanged from yesterday, plus CI unblock)
Axis B → 95%+ (self-serve today):
- Fix vitest import (Option 2 above) → D6 flips PASS. Axis B ~72%.
- Resolve concurrent knowledge WIP → commit → rerun derive → D3 flips PASS. Axis B ~83%.
- Run Pro Website Playwright sweep against staging + stamp registry → D2 flips PASS. Axis B ~94%.
- Promote
cwa-pro-website.mdDRAFT → COMPLETE (founder interview) → D1 flips PASS. Axis B 100%.
Axis A → 94% (founder-gated): First real paying Pro Website customer (non-founder email, non-demo UUID) unlocks cap.
With both: overall ≈ 95% → READY.
Generated by /ensure-solid pro-website (workspace-root copy at C:/dev/.claude/skills/ensure-solid/).