booking-flow-full — CT-BOOK-03 findings, 2026-09-02

Cloud QA + Chrome, live with Peyton. Account: Peyton WP. Full write-up: booking-flow-full-findings-2026-09-02.md

BUG — unknown-token save validation doesn't fire on guest-facing fields.
Saved {{bogus_token}} into the "Flow form invite" message with zero warning, both pre- and post-activation. Root cause: the validation code (present in 3 places, all correct) only checks fields typed template_text in the schema — but copy_flow_intro (both templates) and copy_payment_ask (Event only) are still typed textarea live. Mitigated for copy_flow_intro by a send-time scrub before a real guest ever sees it.
PASS — payment-vehicle gate. Activating with an empty payment_link was cleanly blocked server-side ("Some required setup is missing: Payment link") with a full rollback — no assistant, no workspace, no charge created.

Screenshots

Pulse — Active tab
Pulse — Active tab — The corrected Event Booking card live on Pulse (#VNW), Attendees 0 booked — matches the fresh CT-BOOK-03 activation.
Pulse — Overview + Quick Actions
Pulse — Overview + Quick Actions — Full wa.me link with pre-filled ticket-booking text is the prominent copyable string (CT-BOOK-03 step 5 PASS) — not a bare number.
Post-activation Personalize — Your Event
Post-activation Personalize — Your Event — Event name 'Friday Night Hangout Vol. 2' persisted correctly through save, activation, and reload.
Post-activation Personalize — Flow form invite (fixed)
Post-activation Personalize — Flow form invite (fixed) — The bogus-token bug corrected via the same Settings-save + ConfigChangeConfirmModal path — confirms the confirm-modal save flow itself works cleanly; the schema gap that let the bad token through in the first place is documented in the findings.

Root cause (code evidence)

src/components/activation-wizard/ConfigureStep.tsx:293
  if (f.type === 'template_text') { ... findUnknownTokens(val) ... }

src/components/AssistantSettingsTab.tsx:214
  if (field.type !== 'template_text') continue;

supabase/functions/assistants/actions/update-config.ts:587
  if (field.type === 'template_text' && typeof value === 'string') { ... }
  // comment at :86-90 names copy_flow_intro, copy_payment_ask as the intended targets
TemplateFieldLive schema typeShould be
TMPL-EVBK01copy_flow_introtextareatemplate_text
TMPL-EVBK01copy_payment_asktextareatemplate_text
TMPL-WSBK01copy_flow_introtextareatemplate_text
TMPL-WSBK01copy_payment_asktemplate_text ✅—

Confirmed via REST that ASST-MTJNFRQA2VNW.configuration.copy_flow_intro persisted the literal bogus token string on a LIVE active assistant before the fix. Corrected the same session via the post-activation Settings save path (screenshot above), which doubled as a clean proof that the ConfigChangeConfirmModal save flow itself works correctly.