3 · Detail modal — sheet presentation, Overview tab
C1 — sheet entry
- Card tap / "Details →" rises the detail sheet over the dimmed grid — bottom sheet, never a slide-over.
- Opens on Overview by design ("see first, setup later").
- C1: header stays visible + undimmed — dim + sheet cover the content region only.
T1143 · T1155 · E6 · C11 — Overview tab
- Benefit cards typographic — title + description, no icon (T1143: title carries the meaning).
- Tab order Overview → Personalize → Connect → Try (T1155 personalize-first); step dot fills solid once complete.
- E6: umbrella line ("Teach it once…") sits once above the chart; the 3 nodes = concrete run only — trigger → action → output, no slogan inside a node.
- C11: `.m-body` is the single scroll surface — no nested/half-height scroll panes.
4 · Activation wizard, step 1 — Personalize
E7 — Personalize, content truth (`ConfigureStep`)
- Tier-1 "From your Brain ✓" recap — read-only, never re-asks what the founder already told the Brain.
- Template config: sign-off preference · handling rules · escalation channel (`EscalationReassurance` / `HandlingRulesEditor` / `SignOffPreferenceField`).
- Flat field rows — no boxed form panel.
- E7: live preview beside the form reflects sign-off/handling values as set — two states below.
Live preview — fields empty
Reply preview appears here as you fill in sign-off and handling rules below.
- Before any field is set, the preview shows a neutral placeholder — never a guessed sign-off.
Live preview — fields filled
"Hey! Yes, we have space this Saturday — let me know and I'll hold it for you. — Aria, from the team"
- Updates live as sign-off and handling rules are set — matches the form state in the main frame above.
5 · Activation wizard, step 2 — Connect
E8 · C7 · E9 · C8 · C1 — Connect, content truth (`ConnectStep`)
- Required roles = flat rows; ONLY two connection verbs — Reconnect (action-needed) / Pending (provider-side wait); severity = amber, never a third verb.
- Terms + pricing checkboxes gate the Try tab (`isConnectComplete`).
- E8/C7: "MystFlo AI" renders already-Connected with an "included" chip + quiet "use your own key instead" swap — zero setup.
- E8: Database and Email = grouped pick-one optional enrichments, distinct from required rows.
- E9/C8: wallet-first — balance + "Add funds" (opens top-up sheet), "Manage cards in Billing"; no card entry/change UI in the wizard.
- C1: header stays visible.
6 · Activation wizard, step 3 — Try (test run output)
C12 · C1 — Try, content truth (`PreviewStep`)
- Two-phase: auto-run sample (zero side effects) → real test run to the founder's own WhatsApp number, with progress checklist + "Output" panel.
- C12: emerald confirmation tick on test-passed (green = success, not money-only).
- C1: header stays visible.
7 · Success — assistant is live
Desktop — `ActivationStepper`
- Stepper (connections → payment → ready → WhatsApp → finalizing) completes into this state.
- Copy verbatim: "is live." / "Running and ready to work for you." / "Go to Pulse".
R4 restore · real states (parity audit, 2026-07-20)
- Frames 8–16 ADD real states the frames above didn't show — every card/grid/modal above is unchanged.
- Sources (shipped components): AssistantSummaryCard.pre.tsx · AssistantDetailModal.pre.tsx · BrainGatePanel.tsx + BrainCapabilityRows.tsx · AssistantLibrary.tsx · ConnectsPage.tsx.
8 · Lifecycle-state cards — Active, Stopped, Pending Meta approval
RE1 — lifecycle cards (`AssistantSummaryCard.pre.tsx`)
- An already-activated founder re-encounters the template in one of these states:
state prop (available/active/paused/stopped) + lifecycleStatus === 'pending_template_approval'.
- Badges within canon: neutral dot for Active/Stopped (never green); amber for the Meta-review wait (pending = amber).
- Reactivate carries a split chevron (
DropdownMenu) opening Start Fresh — drawn collapsed (⌄); it's a hover/click reveal, not its own frame state.
9 · Detail-modal header CTA — four labels, one slot
RE2 — gated header CTA (`headerSetupCta.ts` + `AssistantDetailModal.pre.tsx`)
- Same button slot (
detail-activate-cta). Complete Setup stays a button. Amber Complete Setup only while Connect or Personalize is incomplete (guests stay on this label). Connect done, not yet canActivate → quiet Continue to Try. canActivate → white Activate. Live → View in Pulse.
- Click map is unchanged — Activate fires only from Try /
handleHeaderCTA. Do not treat Complete Setup as Activate.
- Shipped code uses an emerald outline for the live state — drawn white here per the token contract (emerald = wallet credits only).
On-Brand Support
Your business answers DMs in your voice, 24/7 — without you typing a word.
Complete Setup✕
Overview
Personalize
Connect
Try
- Guest, or Connect/Personalize incomplete. Tapping it opens the first incomplete tab (or early access for a guest). It does not activate.
On-Brand Support
Your business answers DMs in your voice, 24/7 — without you typing a word.
Continue to Try✕
Overview
Personalize
Connect
Try
- Connect done,
canActivate still false. Quiet / white secondary — not amber. Opens Try.
On-Brand Support
Your business answers DMs in your voice, 24/7 — without you typing a word.
Activate✕
Overview
Personalize
Connect
Try
canActivate — white primary. Activate still fires only from Try / handleHeaderCTA.
On-Brand Support
Your business answers DMs in your voice, 24/7 — without you typing a word.
✓View in Pulse✕
Overview
Personalize
Connect
Try
- Already live — the same slot routes to Pulse instead of the wizard.
10 · Connect step — Brain-gate blocked
RE3 — Brain gate (`BrainGatePanel.tsx` + `BrainCapabilityRows.tsx`)
- Enforcement state behind "Brain first, activation second" — the blocked counterpart of Frame 5's satisfied Brain row.
- Missing sections render as customer-question rows with a single Add action.
- Continue to Try stays disabled until every required row clears.
- Disabled Continue = gray fill, no hover — same row grammar as Frame 5's satisfied case, with the unmet rows visible.
12 · Detail sheet — "Preview shared by a friend" banner
RE5 — guest landing from a shared card
link; copy verbatim from `AssistantDetailModal.pre.tsx`.
13 · Card action cluster — Share + demo video restored
RE6 — action cluster (`AssistantSummaryCard.pre.tsx`)
- Share = wired growth lever (GA4 waitlist-source attribution), on every available card.
- Demo-video icon renders only when the template has a real
videoUrl.
Chases deposits and balances for your retreat — so every booked spot actually pays before it starts.
tap for detailsActivate
- Share (⇧) · Save (♡) · View demo (▷) — most cards show Share + Save only, matching Frame 1.
14 · Empty states — search miss & persona miss
RE7 — copy verbatim from
`AssistantLibrary.tsx`, including the "· soon" persona variant.
15 · Try step — "Activate without a test run?" confirm
RE8 — alt state of Frame 6: Activate
before any preview has run surfaces this guard (no blind activation); copy verbatim from
`AssistantDetailModal.pre.tsx`. Presentation is the canonical ConfirmDialog
(#2576 F15) layered above the dimmed Try step — a small centered confirm, not an inline
amber panel.
Activate without a test run?
Running a free preview first helps catch issues before activation.
Run preview first
Yes, activate anyway
16 · Disconnect confirmation — short confirm dialog
RE9 — disconnect confirm (`ConnectsPage.tsx`)
- Shown when assistants depend on the app; copy verbatim (count is dynamic). Corrected 2026-07-24 (#2682): the server-side removal guard (connection-removal-guard.ts) always refuses this disconnect while an active/paused/error instance requires the app — so the copy previews that refusal instead of a "will pause" outcome that can never happen. Non-destructive framing ("Try anyway") since the guard, not this dialog, is the real gate.
- Small centered dialog per the tap-intent rule (one message + 2 buttons) — not a sheet.
Stripe is required by assistants
2 assistants need this connection to run. Swap the account instead — disconnecting isn't available while it's in use.
Cancel
Try anyway
17 · Lifecycle cards — concurrent instances (Start another, 5-cap)
#3553 — concurrent-instance card states (`AssistantSummaryCard.pre.tsx`)
- Launch Kit family (TMPL-WMKT01, TMPL-RTLK01, TMPL-EVLK01) and Waitlist+Launch (TMPL-WAITL1) allow up to 5 concurrent active/paused instances per founder — a second workshop, a second retreat, are genuinely different programs, not edits of the first. Every other template stays single-instance.
- The lifecycle line (frame 8's "Running since…") swaps to "N running — view Pulse for details" the moment a second instance exists — the single-name/date framing is false once there's more than one.
- "Start another →" is a quiet centered text link under View in Pulse — deliberately not a second full-width button or a split-button dropdown. At the 5-cap it becomes non-interactive explainer text in the same slot rather than disappearing (the lifecycle line above already states the count, so this slot's job is the cap reason, not the count again).
- "Start another" opens Personalize prefilled via carry-forward (frame 11 of `program-launch-kit.html` §11) — durable business facts (price shape, booking link, workshop/retreat/event details) carry over from the source instance; program-specific facts (name, hook, who it's for, dates, where) always start blank. Reuses the existing `start_fresh` ActivationWizard mechanism, not new plumbing.
- A single-instance template (e.g. On-Brand Support) never shows this slot at all — frame 8's plain "View in Pulse" card stays unchanged for it.