Skip to main content

Go-Live Readiness — ChurchWiseAI (Voice + Chatbot) — 2026-04-22T21:52:15Z

Overall: 22% (NOT READY) — 0 P0, 7 P1, 3 P2 open

NOT READY is driven by 7 P1 findings across 6 dimensions. No P0 issues found in this run. The production site is live and serving customers — the rating reflects readiness gaps for confident scaled marketing, not a system-down state.


9 Dimensions

#DimensionScoreStatusEvidence
1User journeys2/5⚠ WARNRegistry checked; 2/5 journeys have confirmed last_run; 3 lack last_run (null)
2Desktop/tablet/mobile0/3⚠ WARNPlaywright commands declared but not run this session (Tests CI failing for pre-existing reasons — FA-045)
3Knowledge accuracy0/1❌ FAILpnpm derive --check fails: 3 sources drifted — products.yaml (4 targets), policies.yaml (5 targets), knowledge:docs (1 target). product_knowledge SQL upserts pending
4Onboarding/billing0/1⚠ WARNstripe-e2e-validator.spec.ts exists; no stripe-e2e-validation-monthly CI artifact found this month. Billing plan keys in cwa.yaml (voice_suite_monthly, bundle_suite_monthly) do not align with stripe-prices.ts key names (cwa_suite_chat, cwa_suite_both)
5User docs1/1✅ PASShttps://churchwiseai.com/help returns 200 with real "ChurchWiseAI Help Center" content
6Drift & issues0/1⚠ WARNAPI drift check: PASS (all 4 checks green). Supabase MCP required auth — founder_action_items, moderation_violations, ops_errors SQL queries not executed this run; graded warn
7Analytics1/1✅ PASSReadinessTab.tsx exists in FounderDashboard, wired to /api/founder/readiness/[property] route — component is present and imported
8Marketing funnel0/1❌ FAILLanding (/) returns 200 ✅. Pricing (/pricing) returns 200 ✅. Prices on page match PRICING.md ✅. BUT: marketing_funnel.mailerlite_group = cwa-leads does not match code (CWA_NEWSLETTER / cwa-newsletter). synthetic_funnel_test: null — no automated smoke test for landing→checkout
9Agent monitoring1/1✅ PASSNo resource overlaps between active workstreams. ensure-solid-orchestrator stale (last activity 2026-04-18T14:20Z — 4 days); voice-agent-testing-backlog stale (started 2026-04-15, no last-activity timestamp). Two stale entries flagged as P2

Overall score: 3/9 dimensions pass = 33% — but any P1+ findings keep status NOT READY.

Score correction: 3 dimensions pass (5, 7, 9), 2 fail (3, 8), 4 warn (1, 2, 4, 6). Warn ≠ pass per scoring rules. Pass count = 3/9 = 33%. Status = NOT READY (P1 findings present).


Punch List (ordered by severity)

P1 Findings

  • P1-1 [Journeys] voice-live-call registry entry: last_run: null, spec_file: null. Critical-path entry has never been run green. FA-047 (browser voice demo E2E) is still open — spec exists as e2e/voice-live-call but no green run on record.

    • Fix: Complete FA-047 — run e2e/voice-live-call.spec.ts against production, confirm green, stamp last_run.
  • P1-2 [Journeys] cwa-chatbot-live-response registry entry: last_run: null. Critical-path entry. spec_file: e2e/journeys/visitor-uses-chatbot.spec.ts exists but no green production run on record.

    • Fix: Run visitor-uses-chatbot.spec.ts against https://churchwiseai.com and stamp last_run.
  • P1-3 [Journeys] cwa-cancelled and cwa-trial-expired journeys listed in cwa.yaml critical_journeys but NOT found in registry.yaml by those names. FA-046 (churn-return auth hole) is open — cancelled customers still have full dashboard access.

    • Fix: Add cwa-cancelled and cwa-trial-expired registry entries; implement tombstone view (FA-046).
  • P1-4 [Knowledge] pnpm derive --check fails: data/products.yaml (4 product_knowledge SQL targets out of sync), data/policies.yaml (5 product_knowledge SQL targets out of sync), knowledge:docs (1 README target out of sync). Self-heal attempt via pnpm derive --all fixed file targets but could not execute SQL upserts (Supabase MCP requires auth this run).

    • Fix: Run pnpm derive --all with Supabase MCP auth active to sync product_knowledge rows. Run validate_product_knowledge() after.
  • P1-5 [Billing] cwa.yaml billing stripe_plan_keys contains voice_suite_monthly and bundle_suite_monthly which do not match canonical key names in stripe-prices.ts (cwa_suite_chat, cwa_suite_both). Config is stale — the stripe-e2e-validator.spec.ts may not exercise the correct keys.

    • Fix: Update cwa.yaml billing keys to match stripe-prices.ts canonical names; re-run e2e validator.
  • P1-6 [Billing] No stripe-e2e-validation-monthly CI artifact found for April 2026. stripe-e2e-validator.spec.ts exists but has not been run in CI this month — manual run required to verify all 9 plan keys have a green checkout path.

    • Fix: Run npx playwright test e2e/stripe-e2e-validator.spec.ts against production and upload artifact.
  • P1-7 [Marketing] marketing_funnel.mailerlite_group = cwa-leads in config does not match actual code group name CWA_NEWSLETTER (MailerLite name: cwa-newsletter). The cwa-leads group may not exist or may be unmapped — new signups from CWA landing page may not be tagged to the right MailerLite segment.

    • Fix: Verify cwa-leads group exists in MailerLite; if not, update cwa.yaml to cwa-newsletter. Wire newsletter signup on landing page to CWA_NEWSLETTER group.

P2 Findings

  • P2-1 [Marketing] marketing_funnel.synthetic_funnel_test: null — no automated smoke test for the landing→pricing→checkout flow. Any silent regression in the conversion funnel goes undetected.

    • Fix: Create a Playwright spec that: loads /, clicks the primary CTA, verifies /pricing renders with correct prices, confirms /onboard or /api/stripe/church-checkout is reachable.
  • P2-2 [Agent monitoring] ensure-solid-orchestrator workstream in ACTIVE_WORK.md last active 2026-04-18T14:20Z (4 days stale). No git commits since that date on feat/ensure-solid-orchestrator branch.

    • Fix: Founder to confirm if this workstream is complete and release it via wt-release, or assign to an agent to finish.
  • P2-3 [Agent monitoring] voice-agent-testing-backlog workstream in ACTIVE_WORK.md started 2026-04-15 with no last_activity timestamp. Worktree C:/dev/cwa-voice-testing still exists.

    • Fix: Founder to confirm status. If complete, release the worktree. If in-flight, update last_activity.

Dimension Details

D1 — User Journeys (WARN)

Journeys declared in cwa.yaml critical_journeys vs registry state:

JourneyRegistry Entrylast_runlast_breakStatus
onboard-signup-activatecwa-onboarding-wizard2026-04-18T02:40Z (15 passed)null✅ Green
chatbot-hear-protocolcwa-chatbot-live-responsenullnull❌ Never run
voice-live-callvoice-live-callnullnull❌ Never run (spec_file: null)
trial-expired-gatingcwa-trial-expiredNot found in registry❌ Gap
cancellation-service-continuescwa-cancelledNot found in registry❌ Gap

Acceptance specs checked: starter-chat.md ✅, starter-voice.md ✅, starter-both.md ✅, pro-suite-chat.md ✅, pro-both.md ✅, suite-both.md ✅, trial-expired.md ✅, cancelled.md ✅ — all 8 spec files exist.

D2 — Viewports (WARN)

Playwright commands declared in cwa.yaml. Commands were not run this session — the Tests workflow has been failing on main since at least 2026-04-18 (FA-045: API contract test 400-vs-401 drift + rate-limit 429s). Running viewport tests against https://churchwiseai.com would have produced unreliable results due to rate-limiter interference. Graded WARN (not-checked-this-run) per skill spec.

Latest CI Tests workflow: FAILING (run 24803634871, 2026-04-22T21:29Z). Critical Path Protection workflow: PASSING (run 24803634845, same push).

D3 — Knowledge Accuracy (FAIL)

pnpm derive --check exit code 1. Self-heal attempted via pnpm derive --all:

  • data/pricing.yaml targets: all UP TO DATE ✅
  • data/features.yaml targets: UP TO DATE ✅
  • knowledge/INDEX.md: UP TO DATE after self-heal ✅
  • data/products.yamlsupabase:product_knowledge: 4 SQL statements pending (cannot execute — Supabase MCP auth required)
  • data/policies.yamlsupabase:product_knowledge: 5 SQL statements pending (same)
  • knowledge:docs README: 1 target out of sync

D4 — Onboarding/Billing (WARN)

stripe-e2e-validator.spec.ts exists at e2e/stripe-e2e-validator.spec.ts. No CI artifact found for the current month. Critical Path Protection CI is green on main. Config key mismatch flagged (P1-5). Graded WARN.

D5 — User Docs (PASS)

https://churchwiseai.com/help returns 200 with real Help Center content covering Getting Started, Voice Agent, Chatbot, and other sections. help_surface.canonical_source: null in config (still a documentation gap) but the surface itself passes the presence check.

Note: Config still shows canonical_source: null. This means there is no accountable KB source documented — the help content is live but not version-controlled or linked to a canonical source in the readiness config. Recommend updating cwa.yaml help_surface.canonical_source to point to the backing source.

D6 — Drift & Issues (WARN)

API drift check (bash scripts/check-api-drift.sh): ALL 4 CHECKS PASSED

  • All API routes documented in docs/api-catalog.md
  • All critical files have CODEOWNERS entries
  • No changes to legacy directories
  • All page routes documented in CLAUDE.md

Supabase SQL checks: Not executed this run (Supabase MCP required browser-based OAuth — not available in headless agent context). Graded WARN not FAIL per skill spec (not-checked-this-run). Prior context: FA-045 documents pre-existing CI issues. No new P0/P1 ops_errors known.

Open founder action items relevant to CWA (from FOUNDER_ACTIONS.md): FA-058 (P1, voice preview DID), FA-057 (P1, FuneralWiseAI demo), FA-047 (P1, voice demo E2E), FA-046 (P1, churn-return auth), FA-045 (P1, CI red Tests workflow), FA-037 (P1, voice security test plan).

D7 — Analytics (PASS)

ReadinessTab.tsx exists at src/app/founder/[token]/components/ReadinessTab.tsx and is imported in FounderDashboard.tsx. Tab key readiness is in the tab list. API route src/app/api/founder/readiness/[property]/route.ts exists. Component fetches from /api/founder/readiness?token= and /api/founder/readiness/${property}?token=. Passes presence check.

D8 — Marketing Funnel (FAIL)

CheckResult
https://churchwiseai.com (landing)✅ 200, content loads
https://churchwiseai.com/pricing✅ 200, prices visible
Price consistency check✅ Chat Starter $14.95 ✅ Chat Pro $34.95 ✅ Chat Suite $59.95 ✅ Voice Starter $49.95 ✅ Voice Pro $99.95 ✅ Bundle Starter $54.95 ✅ Bundle Pro $119.95 ✅ Bundle Suite $139.95 — all match PRICING.md
MailerLite group cwa-leads❌ MISMATCH — code uses CWA_NEWSLETTER (MailerLite name: cwa-newsletter), not cwa-leads
synthetic_funnel_test❌ null — no automated smoke test

D9 — Agent Monitoring (PASS)

No resource overlaps between active workstreams. The product-gates-testing-2026-04-22 workstream was released. funeralwiseai-and-founder-ux-2026-04-22 is paused (no active conflict). Two stale entries flagged as P2 (see punch list).


Self-Healed This Run

  1. pnpm derive --allknowledge/INDEX.md was drifted (1 target: new-vertical-launch.md description updated 2026-04-22). Re-derived to current state. File targets now clean. SQL targets (supabase:product_knowledge) could not be applied — Supabase MCP auth not available. These remain open (P1-4 in punch list).

  • API drift check: ran bash scripts/check-api-drift.sh in churchwiseai-web/ — exit code 0, all checks PASS
  • Production landing: https://churchwiseai.com — 200 OK, content verified
  • Production pricing: https://churchwiseai.com/pricing — 200 OK, all 8 key prices verified against PRICING.md
  • Help surface: https://churchwiseai.com/help — 200 OK, real Help Center content
  • GitHub CI: last main push run 24803634871 — Tests FAIL, Critical Path Protection PASS
  • Registry file: C:/dev/knowledge/tests/registry.yaml
  • Acceptance specs: C:/dev/knowledge/acceptance/ — all 8 declared specs present
  • Derive check: C:/dev/knowledge/pnpm derive --check exit 1 (3 source groups drifted); self-heal partially applied
  • ACTIVE_WORK.md: C:/dev/ACTIVE_WORK.md — 5 active workstreams reviewed, 2 stale flagged
  • FOUNDER_ACTIONS.md: C:/dev/FOUNDER_ACTIONS.md — 6 open P1s relevant to CWA