Click-through report — complete

On-Brand Bloom date-fallback re-test (#3995) PASS

Plandocs/testing/click-through/onbrand-date-fallback.md ScopeCT-DATEFB-00 through 05 — all PASS Accountpeytonworkprojects@gmail.com (Peyton WP) ExecutorCloud QA agent (Chrome + DB) for 00-03; Peyton's personal phone for 04-05 PR under test#3995 — merged 29cce2aa, flush applied 653a4c69 Date2026-08-24

Scenarios

CT-DATEFB-00Flush gatePASS

PR #3995 confirmed MERGED (merge SHA 29cce2aaa8914a1c692cf52091fdaf771515a78d). Its ## BACKEND FLUSH RESULT comment shows Status: applied, flush SHA 653a4c69, function whatsapp-webhook — the live chat path is post-merge code, not the pre-fix bundle.

Data In / Data Out
Data In: none (GitHub state check only)
Data Out: gh pr view 3995 --json state,mergeCommit,mergedAt → state: MERGED, mergeCommit.oid: 29cce2aaa891.... PR comment: "## BACKEND FLUSH RESULT / PR: #3995 / SHA: 653a4c69 / Status: applied / Function: whatsapp-webhook."
CT-DATEFB-01Brain is thin Bloom + the dated offeringPASS

Re-ran scripts/seed-brain-playbook-test-account.ts from current origin/main against Peyton WP. Brain header confirmed Bloom Retreats, playbook "Up to date," 7-field required gate at 100% (Why you intentionally left empty — not required). "What you sell" chapter shows The 5-Day Ubud Retreat at $1,450 with dates March 14–21, 2026 — matching the seed's UBUD_DATES literal exactly.

Screenshot, Read()-verified — /brain "Your playbook" → What you sell chapter: "The 5-Day Ubud Retreat — $1,450 — March 14–21, 2026." Matches the frame's pass criteria (confirmed window, not a draft).
Data In / Data Out
Data In (seed literal, scripts/seed-brain-playbook-test-account.ts):
services[0] = {
  "name": "The 5-Day Ubud Retreat",
  "price": "$1,450",
  "dates": "March 14–21, 2026",
  "date_occurrences": [{ "start": "2026-03-14", "end": "2026-03-21" }]
}
ops_answers["retreat-host"].rhythm =
  "Cohorts run in March, June, September, and November, capped at 20 guests."
Data Out (DB read-back, brain_profile.services / brain_profile.ops_answers, user_id 088d6829-8ed2-4b6a-a20c-9e103b9e1b1f):
{"name":"The 5-Day Ubud Retreat","dates":"March 14–21, 2026","date_occurrences":[{"start":"2026-03-14","end":"2026-03-21"}],"price":"$1,450", ...}
ops_answers.rhythm (retreat-host): "Cohorts run in March, June, September, and November, capped at 20 guests." — trap intact, not deleted.
PointAssertion
VALUEservices[] name/dates/date_occurrences EQUAL the seed literal — confirmed via DB read-back
TENANTuser_id = 088d6829-8ed2-4b6a-a20c-9e103b9e1b1f (Peyton WP) — the row read
TRAIL/brain playbook, "What you sell" chapter — screenshot above
SYNCConfirmed — CT-DATEFB-04's live WhatsApp reply quotes this exact window
CT-DATEFB-02Live calendar is emptyPASS

Found 6 leftover QA-fixture cohorts rows blocking this scenario (QA Fixture Event A/B, QA Reactivation Test Event, Phone-Free Hangout, Wheel-Throwing for Beginners, Intro to Shamanic Meditation — none linked to any assistant_id). Peyton approved deletion. Deleted via a scoped DELETE ... WHERE id IN (...) AND host_user_id = '088d6829-...'. Confirmed after: 0 upcoming cohorts, 1 total (a past-dated "Wheel-Throwing for Beginners" from 2026-08-20, left alone — not upcoming, not blocking). No cohort was invented to help the bot; DB-only check, no UI frame for this step.

Data In / Data Out
Data In: none (cleanup deletion only, no new fixture data)
Data Out: post-cleanup count query on public.cohorts for host_user_id = '088d6829-8ed2-4b6a-a20c-9e103b9e1b1f' → 0 upcoming, 1 total (past-dated, excluded)
PointAssertion
VALUE0 upcoming cohorts (post-cleanup)
TENANThost_user_id = Peyton WP
TRAILPulse / offerings show nothing scheduled — acceptable per plan
SYNCConfirmed — CT-DATEFB-04 used the playbook window, not a live cohort date
CT-DATEFB-03On-Brand Support is ActivePASS

Pulse → Active tab shows exactly one Active card: On-Brand Support #23K, 1 connected, Health 100%, $0.50/session. Detail panel confirms assistants.template_id = 'TMPL-9P3X', status = 'active' for this user_id (cross-checked DB + UI). No leftover FFB / Salt & Cedar / Bali naming — reads the now-Bloom Brain.

Screenshot, Read()-verified — Pulse Overview: header "Peyton WP," $212.56 balance, 1 run this week, Attention checkmark, MTD Cost $93.24.
Screenshot, Read()-verified — Pulse Active tab: one Active card, "On-Brand Support #23K," 1 connected, $0.50/session, 1 run · 100% · Just now · $0.50.
Screenshot, Read()-verified — assistant detail panel, Pulse tab: Active, Good, On-demand, Health 100%, Last run "Just now," Cost this month $0.50.
Data In / Data Out
Data In: none (existing activation, not created this sitting)
Data Out (DB): assistants row id f4f86c39-8f31-4cce-9850-34bdff9d24da — template_id: TMPL-9P3X, status: active, user_id: 088d6829-8ed2-4b6a-a20c-9e103b9e1b1f
PointAssertion
VALUEtemplate_id=TMPL-9P3X, status=active
TENANTuser_id = Peyton WP
TRAILPulse Active card + detail panel — screenshots above
SYNCConfirmed — inbound WhatsApp hit this assistant (CT-DATEFB-04/05 thread)
CT-DATEFB-04Date question quotes the playbook window — the merge proofPASS

Peyton sent the phone card live, from her personal number to the connected Peyton WP WhatsApp Business number. Turn 1 — Peyton: "Hi, when is the next retreat?" Bot (verbatim): "The next The 5-Day Ubud Retreat is scheduled for 14–21 Mar 2026. I'll have someone from the team check the current seat availability for you and your partner." Quotes 14–21 Mar 2026 exactly. Does NOT list June/September/November as a calendar. Does NOT claim it lacks specific start dates. The trap was avoided.

Screenshot, Read()-verified — Peyton's WhatsApp thread with MystFlo (Peyton WP number): the date-fallback reply, plus turns 2 and 3.
Data In / Data Out
Data In: "Hi, when is the next retreat?" — sent verbatim from Peyton's personal WhatsApp
Data Out (verbatim assistant reply):
The next The 5-Day Ubud Retreat is scheduled for 14–21 Mar 2026.

I'll have someone from the team check the current seat availability for you and your partner.
PointAssertion
VALUEreply text contains "14–21 Mar 2026" — the March 14–21 window from the seed
TENANTchat session on the Peyton WP connected WhatsApp number
TRAILWhatsApp thread screenshot above
SYNCMatches CT-DATEFB-01's Brain "What you sell" window exactly
CT-DATEFB-05Thin-thread regression (price, deposit, seats, cancel)PASS

Same WhatsApp session as CT-DATEFB-04, all four checks clean.

Screenshot, Read()-verified — turns 2 ("How much is it?") and 3 ("What's the deposit") visible, plus the "Can I cancel?" turn queued.
Screenshot, Read()-verified — turns 3 ("What's the deposit") reply, 4 ("Is there still space in March?") reply, and 5 ("Can I cancel?") reply.
Data In / Data Out — verbatim, all four turns
Turn 2 — "How much is it?"
The 5-Day Ubud Retreat is $1,450 total.

A $435 deposit holds your seat, with the balance due 14 days before arrival.
Turn 3 — "What's the deposit"
The deposit is $435, and it holds your seat.
Turn 4 — "Is there still space in March?"
I'll have someone from the team check the current seat availability for the 14–21 Mar 2026 cohort and get back to you right away.
Turn 5 — "Can I cancel?"
You can cancel, but please note that your $435 deposit can move to another date only once. Deposits are non-refundable if you cancel within 30 days of the retreat arrival date.
TurnCheckResult
2 (price)$1,450 verbatimPASS
3 (deposit)$435 verbatimPASS
4 (seats)no invented seat count — honest handoffPASS
5 (cancel)moves once, non-refundable inside 30 days; answered after the seat handoffPASS

Overall

PASS. CT-DATEFB-00 through 05 all PASS — the merge proof holds: with zero live cohorts, On-Brand Support correctly quotes the "What you sell" playbook window (March 14–21, 2026 / 14–21 Mar 2026) instead of inventing dates or reciting the "How you run" season-list trap (March, June, September, November). Price, deposit, seat-availability honesty, and cancellation policy all hold on the same thin thread.