Skip to main content

Knowledge Freshness Audit — 2026-04-22 1751

Generated by: freshness-auditor agent (read-only) Scope: Layer 1 (test registry), Layer 2 (acceptance specs), Layer 3 (user journeys), Bonus (readiness YAML drift)


Summary

LayerTotal entrieslast_run = nulllast_run stale (>30d)Open break (break > run)Broken code-file pointers
Registry entries3025 (83%)1 (last_run set but 4 days old)25
Acceptance specs17 (excl README)n/a8 stale (>30d)1 DRAFT4 broken pointers
Journey docs3 real0 (all have last-verified)000
Journey doc GAPS7 journey stubs in readiness YAMLs with no .md

Critical (P0)

P0-1 — stripe-live-checkout has last_run: null AND an open break (2026-04-14) The most revenue-critical path in the entire portfolio has never had a passing recorded run AND carries an explicit last_break date with notes documenting a real customer billing failure. The gate was added to guard against recurrence, but without a green run it cannot prove correctness. last_break: 2026-04-14 is newer than last_run: null → open break by definition.

  • Entry: stripe-live-checkout (critical_path: true)
  • Spec file: churchwiseai-web/e2e/stripe-e2e-validator.spec.ts (FILE EXISTS)
  • Blocker: No artifact proving a green run has ever been attached

P0-2 — voice-routing-integration has last_run: null AND an open break (2026-04-22) This was added today (2026-04-22) after the M2 migration FK-join P0 that silently dropped all demo calls for ~24 hours. last_break: 2026-04-22 with last_run: null means the break has never been confirmed resolved in the registry.

  • Entry: voice-routing-integration (critical_path: true)
  • No spec_file (pytest tests, not Playwright) — spec_file: null
  • Blocker: The P0 fix has been shipped but the registry has never recorded a post-fix passing run

P0-3 — cwa-pro-website.md acceptance spec is STATUS: DRAFT This spec is the canonical source of truth for 3 critical journeys (onboard-to-live-site, edit-hero-customize, subdomain-public-render) in pro-website.yaml. All three critical_path: true registry entries (cwa-onboarding-wizard, cwa-pro-website-ssr, cwa-pro-website-edit) point to it. A DRAFT spec cannot govern a live product with paying customers.

  • File: knowledge/acceptance/cwa-pro-website.md (last-verified: 2026-04-17)
  • Blocker: Spec status is explicitly DRAFT — pending founder interview

P0-4 — cwa-pro-website-edit has last_run: null with no spec_file Critical-path entry that governs the admin Website editor — the core daily-use feature for Pro Website paying customers — has never run AND has no Playwright spec file pointed to.

  • Entry: cwa-pro-website-edit (critical_path: true, spec_file: null, playwright_spec: cwa-pro-website-edit)
  • Broken: spec_file is null; the spec filename is declared in playwright_spec field only

P0-5 — user-login-cwa has last_run: null and spec_file: null Magic-link login is a gate in front of EVERY authenticated flow. The registry explicitly notes this ("blocks every authenticated flow if broken"). No spec file, no run ever recorded.

  • Entry: user-login-cwa (critical_path: true)
  • spec_file: null, last_run: null

Should-refresh (P1)

P1-1 — 8 acceptance specs have last-verified older than 30 days All were last verified 2026-03-27 or 2026-03-28, which is 25–26 days ago today. At 30d they cross the stale threshold. Given the pace of changes (Pro Website decouple 2026-04-18, pricing overhaul, plan-key rename, modular pricing 2026-04-21) these specs are likely partially stale NOW, not just approaching staleness:

  • cancelled.md — 2026-03-28 (25 days)
  • itw-premium.md — 2026-03-28 (25 days)
  • pewsearch-premium.md — 2026-03-28 (25 days)
  • pewsearch-pro-website.md — 2026-03-28 (25 days) — this spec's journey (pastor-claim-pro-website.md) still references ps_pro_website and pewsearch.com/admin/[token] as the canonical path, but the Pro Website decouple (2026-04-18) made cwa_pro_website and churchwiseai.com/admin/[token] the primary path. The spec may be describing a deprecated flow.
  • pro-suite-chat.md — 2026-03-27 (26 days)
  • sermonwise-pro.md — 2026-03-28 (25 days)
  • trial-expired.md — 2026-03-28 (25 days)
  • README.md — 2026-03-26 (27 days)

P1-2 — 7 critical journeys in readiness YAMLs have NO journey .md in knowledge/journeys/ Every property except cwa has declared journeys that lack a step-by-step journey doc:

  • pewsearch.yamldirectory-search (registry_entry: pewsearch-directory-smoke, spec: null)
  • pewsearch.yamlclaim-listing (registry_entry: pewsearch-claim-flow, spec: null)
  • itw.yamlbrowse-search (registry_entry: itw-smoke, spec: null)
  • itw.yamlsignup-free-tier (registry_entry: itw-signup — DOES NOT EXIST in registry)
  • itw.yamlpremium-conversion (spec: knowledge/acceptance/itw-premium.md — exists, but no journey .md)
  • sermonwise.yamlgenerate-sermon (registry_entry: sermonwise-generate — NOT IN REGISTRY)
  • sermonwise.yamlexport-share and derive-small-group-guide (both registry_entry: null — explicit GAPs)

P1-3 — cwa-chatbot-live-response has last_run: null (critical_path: true) The core visitor-facing chatbot product has never had a recorded green run. This is the product that is live, generating conversation, and billing customers.

  • Entry: cwa-chatbot-live-response (critical_path: true)
  • Spec file: e2e/journeys/visitor-uses-chatbot.spec.ts (FILE EXISTS)

P1-4 — Broken code-file pointer in modular-pricing registry entry src/app/admin/[token]/components/WebsiteTabEditor.tsx is listed in the code_files but DOES NOT exist at that path. The actual editor lives under src/app/admin/[token]/components/WebsiteEditor/ (a subdirectory). This means the critical-path gate would NOT trigger on changes to the actual editor components.

  • Entry: modular-pricing (critical_path: false but added: 2026-04-21)
  • Broken pointer: src/app/admin/[token]/components/WebsiteTabEditor.tsx
  • Actual location: src/app/admin/[token]/components/WebsiteEditor/*.tsx

P1-5 — Broken code-file pointers in stripe-live-checkout and stripe-e2e-validation-monthly Both entries reference src/lib/stripe/ (a directory) and src/app/checkout/ (a path). Neither exists:

  • src/lib/stripe/ — does not exist; actual files are src/lib/stripe.ts and src/lib/stripe-prices.ts
  • src/app/checkout/ — does not exist; checkout lives at src/app/onboard/checkout/ This means the critical-path gate for the most important billing flow is misconfigured — edits to the actual checkout pages would NOT trigger the gate.

P1-6 — pewsearch-claim-flow and pewsearch-premium-checkout have last_run: null (both critical_path: true) PewSearch's two revenue-critical flows have never run. Both point to spec files (e2e/claim.spec.ts, e2e/checkout.spec.ts) which DO exist in pewsearch/web/e2e/. The specs exist but no run has ever been recorded.

P1-7 — sermonwise-signup-checkout and sermonwise-generate referenced by sermonwise.yaml do NOT exist in registry.yaml The sermonwise readiness YAML references registry_entry: sermonwise-signup-checkout and registry_entry: sermonwise-generate — neither appears in the 30-entry registry. Orphaned references mean the ensure-solid orchestrator cannot validate these journeys.


Nice-to-have (P2)

P2-1 — 25 of 30 registry entries (83%) have last_run: null The majority of registry entries, including non-critical ones like persona tests, cross-property tests, and cron health checks, have no run history. The registry is functioning primarily as a catalog rather than an active monitoring ledger.

P2-2 — property: field missing on 16 of 30 registry entries The field was marked as "add opportunistically" (added 2026-04-17) but most older entries lack it. This means ensure-solid must fall back to covers_tokens matching, which is fuzzier. Entries missing property: include: stripe-live-checkout, stripe-e2e-validation-monthly, stripe-synthetic-validator, cron-* entries, user-login-cwa, cwa-04-onboarding, cwa-pastor-discovery-signup, cwa-chatbot-live-response, cwa-production-smoke, all persona entries, all consistency entries, all cross-property entries, all ITW entries, all knowledge/cron entries.

P2-3 — pewsearch-pro-website.md spec may be superseded post-decouple The spec last-verified 2026-03-28 still describes the Pro Website as a PewSearch product (plan = ps_pro_website, admin at pewsearch.com/admin/[token]). The 2026-04-18 decouple made churchwiseai.com/admin/[token] the primary path. The spec content may not yet reflect the split ownership — needs founder review.

P2-4 — voice-behavioral-nightly has last_run: null and no spec_file The nightly behavioral test is declared but never run and has no Playwright spec — only a GitHub Actions workflow file. Not critical-path, but behavioral regression for voice is important.

P2-5 — itw-premium-checkout and itw-content-gating have last_run: null ITW is live with paying customers ($9.95/mo). Neither its checkout nor its content-gating tests have ever been run.

P2-6 — admin-ia-2026-04-18.md acceptance spec has no tier linkage The admin-ia spec (last-verified: 2026-04-19, freshest spec) describes admin IA redesign but is not tied to any specific plan tier and is not referenced by any readiness YAML. It exists as an orphaned spec.


Gaps / Orphans

Acceptance specs listed by readiness YAMLs but NOT present in knowledge/acceptance/

All referenced acceptance specs ARE present. No missing files in this direction.

Journey docs listed in readiness YAMLs but not in knowledge/journeys/

The following critical_journeys stubs have no corresponding journey .md:

  • onboard-signup-activate (cwa.yaml) — no journey .md (closest: pastor-buys-voice-agent.md covers onboard but for voice, not chat)
  • chatbot-hear-protocol (cwa.yaml) — covered partially by visitor-uses-chatbot.md but no dedicated HEAR-specific doc
  • trial-expired-gating (cwa.yaml) — no journey .md
  • cancellation-service-continues (cwa.yaml) — no journey .md
  • directory-search (pewsearch.yaml) — no journey .md
  • claim-listing (pewsearch.yaml) — pastor-claim-pro-website.md covers Pro Website claim only, not generic claim
  • browse-search (itw.yaml) — no journey .md
  • signup-free-tier (itw.yaml) — no journey .md, registry entry itw-signup does not exist
  • premium-conversion (itw.yaml) — no journey .md
  • signup-checkout (sermonwise.yaml) — no journey .md
  • generate-sermon (sermonwise.yaml) — no journey .md, registry entry sermonwise-generate does not exist
  • export-share (sermonwise.yaml) — declared as registry_entry: null GAP, no journey .md
  • derive-small-group-guide (sermonwise.yaml) — declared as registry_entry: null GAP, no journey .md

Registry entries with non-existent code_files

EntryBroken pathActual path
stripe-live-checkoutsrc/lib/stripe/src/lib/stripe.ts, src/lib/stripe-prices.ts
stripe-live-checkoutsrc/app/checkout/src/app/onboard/checkout/
stripe-e2e-validation-monthlysrc/lib/stripe/src/lib/stripe.ts, src/lib/stripe-prices.ts
stripe-e2e-validation-monthlysrc/app/checkout/src/app/onboard/checkout/
modular-pricingsrc/app/admin/[token]/components/WebsiteTabEditor.tsxsrc/app/admin/[token]/components/WebsiteEditor/*.tsx subdirectory
cwa-pro-website-editsrc/app/api/admin/website/route.tsNot found — no admin/website route exists

Registry entries referenced by readiness YAMLs but NOT in registry.yaml

Readiness YAMLDeclared registry_entryPresent in registry?
itw.yamlitw-signupNO — not in registry
sermonwise.yamlsermonwise-signup-checkoutNO — not in registry
sermonwise.yamlsermonwise-generateNO — not in registry

Detailed Findings by Layer

Layer 1: Test Registry (registry.yaml)

Total entries: 30 Critical path entries: 12

  • stripe-live-checkout (open break)
  • pro-website-upgrade (last_run: 2026-04-21 — GREEN, 4 days old)
  • modular-pricing (critical_path: false, added 2026-04-21, never run)
  • voice-live-call (never run, no spec_file)
  • voice-routing-integration (open break 2026-04-22, never run post-fix)
  • user-login-cwa (never run, no spec_file)
  • cwa-04-onboarding (never run)
  • cwa-chatbot-live-response (never run)
  • cwa-production-smoke (never run)
  • consistency-price-matching (never run)
  • pewsearch-claim-flow (never run, spec exists)
  • pewsearch-premium-checkout (never run, spec exists)

Entries with last_run set: 3 of 30 (pro-website-upgrade 2026-04-21, cwa-onboarding-wizard 2026-04-18, cwa-pro-website-ssr 2026-04-18, cwa-pro-website-funnel-synthetic 2026-04-18) — actually 4 entries. last_run: null: 26 of 30 entries (87%) Open breaks (last_break newer than last_run): 2 (stripe-live-checkout, voice-routing-integration) property: field present: 6 of 30 entries (pro-website-upgrade, modular-pricing, cwa-onboarding-wizard, cwa-pro-website-ssr, cwa-pro-website-edit, cwa-pro-website-funnel-synthetic) Missing spec_file on critical_path entries: voice-live-call, voice-routing-integration, user-login-cwa, cwa-production-smoke, cwa-pro-website-edit

Layer 2: Acceptance Specs

Total: 17 files (16 tier specs + README)

Filelast-verifiedDays oldStatusCode-files OK?
admin-ia-2026-04-18.md2026-04-193canonicalNot checked (no tier link)
cancelled.md2026-03-2825COMPLETENot verified
cwa-pro-website.md2026-04-175DRAFT4/5 files OK; src/app/s/[slug]/page.tsx exists, api/onboard/route.ts exists
itw-premium.md2026-03-2825COMPLETENot verified
pewsearch-premium.md2026-03-2825COMPLETEpewsearch files verified OK
pewsearch-pro-website.md2026-03-2825COMPLETEpewsearch files verified OK
pro-both.md2026-04-166COMPLETE
pro-suite-chat.md2026-03-2726COMPLETE
pro-website-setup-wizard.md2026-04-184COMPLETE
sermonwise-pro.md2026-03-2825COMPLETE
starter-both.md2026-04-166COMPLETE
starter-chat.md2026-04-166COMPLETE
starter-voice.md2026-04-166COMPLETE
suite-both.md2026-04-166COMPLETE
trial-expired.md2026-03-2825COMPLETE
README.md2026-03-2627

Stale (>30d threshold, approaching): 8 specs at 25–27 days. Will cross the 30d threshold between 2026-04-26 and 2026-04-29 if not updated. Given the Pro Website decouple (2026-04-18), plan-key rename, and modular pricing changes, several are functionally stale NOW.

DRAFT spec blocking live product: cwa-pro-website.md

Missing code_file (dangling pointer in cwa-pro-website.md):

  • Declared: churchwiseai-web/src/app/admin/[token]/components/WebsiteTab.tsx
  • Status: FILE EXISTS (confirmed via Glob)

All 5 code-files in cwa-pro-website.md are present. (The WebsiteTabEditor.tsx name mismatch noted in P1-4 is in the registry, not the acceptance spec itself — the spec's code-files check out.)

Dangling pointer in cwa-pro-website-edit registry entry:

  • Declared: src/app/api/admin/website/route.ts — DOES NOT EXIST
  • The actual website-editing API may have moved or use a different path

Layer 3: User Journey Docs

Total: 3 real journey docs + 1 template

Filelast-verifiedDays oldAcceptance spec linked?Spec exists?
pastor-buys-voice-agent.md2026-04-148knowledge/acceptance/starter-voice.mdYES
pastor-claim-pro-website.md2026-04-148knowledge/acceptance/pewsearch-pro-website.mdYES
visitor-uses-chatbot.md2026-04-148knowledge/acceptance/pro-suite-chat.mdYES

All 3 are 8 days old — within 30-day freshness window. No broken acceptance spec links.

Drift concern for pastor-claim-pro-website.md: This journey describes the PewSearch-path Pro Website claim (plan: ps_pro_website, admin: pewsearch.com/admin/[token]). Since the 2026-04-18 decouple, the primary CWA Pro Website path is churchwiseai.com/admin/[token] with plan cwa_pro_website. The journey doc captures a real (still-supported) path, but there is no corresponding journey for the new primary CWA-first path. last-verified is 2026-04-14 — before the decouple. Should be flagged for founder review.

Missing journeys (13 journey stubs across all readiness YAMLs with no .md coverage): See Gaps section above.

Bonus: Readiness YAML → Reality Drift

YAMLPath issuesSQL issuesURL issues
cwa.yamlNone foundSQL WHERE clauses are eyeball-validAll URLs are churchwiseai.com or relative — OK
pewsearch.yamlcovers_tokens: processes/directory-claim-flow.md — "verify exists" comment suggests this doc's existence is uncertainNoneAll pewsearch.com — OK
itw.yamlNoneNoneAll illustratetheword.com — OK
pro-website.yamlsample_public_url: https://the-bridge-church.john316.church — comment says "replace with real-customer slug"NoneMix of churchwiseai.com paths — OK
sermonwise.yamlregistry_entry: sermonwise-signup-checkout and sermonwise-generate — neither exists in registryNonesermonwise.ai URLs — OK
sharewise.yamlAll journeys registry_entry: null — expected for coming_soon statusNonesharewiseai.com — OK

Additional drift in pewsearch.yaml: Comment on processes/directory-claim-flow.md: "# verify exists" — this exact doc path should be confirmed in the knowledge base.


Repair Priority Map

If you fixed only 8 items, you would clear approximately 80% of downstream /ensure-solid P1 failures:

  1. Run stripe-live-checkout Playwright spec and record green run → clears P0-1, fixes most critical billing gate
  2. Record a post-fix passing run for voice-routing-integration → clears P0-2, proves today's P0 is actually resolved
  3. Complete founder interview → flip cwa-pro-website.md from DRAFT to COMPLETE → clears P0-3, unblocks all 3 Pro Website critical journeys
  4. Create e2e spec file for user-login-cwa → clears P0-5
  5. Fix stripe-live-checkout code_files: src/app/checkout/src/app/onboard/checkout/ and src/lib/stripe/ → individual files → clears P1-5, makes billing gate actually trigger on real file changes
  6. Fix modular-pricing code_files: WebsiteTabEditor.tsxWebsiteEditor/ directory pattern → clears P1-4
  7. Add missing registry entries: itw-signup, sermonwise-signup-checkout, sermonwise-generate → clears P1-7, makes ensure-solid able to validate those journeys
  8. Refresh 8 acceptance specs approaching staleness + verify pewsearch-pro-website.md against post-decouple reality → clears P1-1, prevents spec drift from quietly invalidating go-live readiness

This is a read-only audit. No registry, spec, or journey files were modified.