Design preview · Workshop Launch Kit (TMPL-WMKT01) — the founder's full journey, Explore to a kit she's happy with · rebuilt 2026-08-01 · revised 2026-08-03 for ADR-035 · restructured 2026-08-06 to the 8-section shape

← Design HQ  ·  HTML on GitHub ↗  ·  PRD ↗

Workshop Launch Kit — activation writes the kit, Pulse makes it right

Program Launch Kit — Discover, set the facts, write the kit, then live on Pulse.

SizePortrait scrolls 375 · sideways is a slide deckNotes
Design brief — overview · scope · journey (closed)

Give it one program's facts — what it is, when it happens, what to bring — and it writes the whole launch set in the founder's voice: description, page copy, launch blast, IG captions, flyer copy. Five pieces, one sitting, from the same Brain every other assistant reads.

This file follows the same frame sequence as every other assistant flow in this folder — Explore card → Overview → Personalize → Connect → Try → Activated → Pulse. Activation writes the kit; Pulse is where the founder makes it right. Personalize holds this program's facts and a static example of how a finished kit looks — the persona/lens is preset by the card, never a founder-facing picker (ADR-035). Tapping Activate runs the real first generation: the founder watches the five pieces stream, the $3.00 settles once, and Activated means kit v1 exists. From Pulse she reads each piece and — where one isn't right — shares corrective feedback through the same share-anything composer the Brain uses, and that piece is rewritten at AI cost only. One instance = one program = one kit. A different program is a new activation of the same template, with its own name and ID, carrying most fields forward. Companion to the master build contract: assistant-flows/assistant-lifecycle.html, and the sibling exemplars assistant-flows/on-brand-support.html (token block, CSS classes, and the R32 split-pane mechanic this file reuses verbatim) and assistant-flows/workshop-booking.html (the 6a activating loader).

Widths here sample a fluid continuum — content scales continuously; structure steps only at sm 640 · md 768 · lg 1024. Kit: design-canon.md U8.

Every $ figure drawn in these frames ($3.00 per kit, wallet balances) is illustrative — the real price arrives from assistant_templates.price_per_run at runtime, never an authored literal (single-source pricing).

Reading order: § Desktop journey first, then § Mobile journey — 375 below it in the same order, as a wrapping grid. Two sections, never interleaved — a review-document convention only (design-canon.md § Mockup review reading order). Mobile 375px is still designed and scored FIRST in the /design ritual (kit canon U5/U8).

AssistantWorkshop Launch Kit
Template idTMPL-WMKT01
Price$3.00 per kit, once, at activation
RewritesAI cost only — no second kit fee
Statuscoming soon — not publicly activatable
Typegeneration · founder-triggered · Brain-only

Card family (ADR-035). This card is Workshop Launch Kit (TMPL-WMKT01, frozen id) on the shared Content Generation Engine. Retreat Launch Kit is a sibling card on the same engine — zero engine code, just a new assistant_templates row (migration), a registry entry, and its own persona config/prompt module. The Explore persona filter pre-routes a founder to the right card; a founder running both program types activates two cards. Personalize (frames 3/3b/3c) shows only THIS card's own workshop persona block and example — never a lens toggle and never the sibling card's fields, which appear only in frame 3a for build-reviewer comparison. The founder-facing shared-spine facts (program name, price, dates, location) stay the pre-existing “Sunrise Yoga Retreat” worked example carried through Try/Activate/Pulse — those fields are persona-agnostic, so they read as this founder's own facts regardless of program type.

15 active frames · card → set up → activate (writes v1) → review & refine one instance = one program = one kit (locked 2026-08-01, third pass) $3.00 once at activation · rewrites bill AI only · tier=generation card = Workshop Launch Kit · lens preset by card, never picked (ADR-035) feedback is per-run context — never a Brain write amber = action/pending only · emerald = live/done only
In this build
  • The full founder journey for THIS card — Explore card → Overview → Personalize → Connect (AI Model + Brain Check, no external app rows) → Try → activation writes kit v1 → Pulse review · refine · deliver — 15 active frames across desktop and 375.
  • Per-piece corrective rewrite via the share-anything composer (AI cost only), per-piece free retry (3-try cap), the platform-fault free-retry state (frame 10b), the activation-succeeded/no-kit recovery (frame 6b), and reactivation carry-forward for a different program (frame 11).
Explicitly out — drawn nowhere as Active
  • Retreat Launch Kit's own screens — a sibling card on the same engine (ADR-035); only its persona block appears here, frame 3a, for build-reviewer comparison.
  • Event Launch Kit and an Online Course card — unscoped, F0.
  • The Brain-save bridge (“worth keeping?”) — F2 · full multi-version history / diff viewF3 · PDF exportF4 · the permanently-failed terminal stateF1.
  • A founder-facing lens picker — retired by ADR-035; a build that adds one is drift, not a variant.
Resolved — Peyton's direction (2026-08-01, THIRD ruling of the day), locked Three rulings landed on this assistant's lifecycle in one day. Stating all three honestly, because the first two are still cited in older docs and a build agent reading only this file needs to know which one wins.

(a) Morning — generation moved INTO Personalize: the facts form became the reusable write-a-kit surface, Generate button included. (b) Midday — generation moved OUT of the wizard to post-activation Pulse, as a repeatable multi-kit action: activation was SETUP, a kit was a RUN, and the Pulse card carried “▶ Write a kit” behind a per-run confirm step. (c) Evening — the current lock, and what this file draws: activation runs the real first generation. Activated means kit v1 exists and has been delivered; the $3.00 fires at activation; ONE instance owns ONE program and ONE kit; Pulse becomes review + refine + deliver, with corrective feedback collected through the share-anything composer and rewrites billed at AI cost only.

Why (c) wins over (b) — three structural reasons, none of them taste. It matches Preview / Test / Activate (Test produces a real artifact; a generation assistant activating to an empty shelf inverts that). It matches the reactivation lifecycle already shipped — a second program is a second activation, which is exactly Peyton's “isn't that the assistant lifecycle itself?”, so (b)'s bespoke multi-kit machine was rebuilding something that existed. And it dissolves the platform_triggered carve-out: that enum prescribes a real activation artifact, and the first generation now IS it.

Survives all three rulings: the facts live in Personalize and nowhere else; Personalize never generates. Frame changes from (b): confirm step (old 8) removed, its slot now the refine surface; writing state (old 9) relocated to activation as 6a; old 10 → 8, old 11 → 10; 9 and 11 new. Recorded in mystflo-kit/design-decisions.md (2026-08-01 evening entry, supersedes both earlier same-day entries).

Amendment (2026-08-02, ADR-035): “the lens is picked in Personalize step ①” above is itself now superseded — card-per-persona cardinality moved lens selection off the founder entirely, onto the card's identity. This mockup's Phase 3 frames (3/3a/3b) are updated to match; see the decision box's own record above for why (a)/(b)/(c) still stand unaffected by this later, orthogonal change to WHERE the lens is chosen.
Inputs — this instance's facts Personalize, frames 3 / 3b
  • Lens — preset by the card (ADR-035): this card always writes as the workshop persona; which persona branch runs was decided when the founder opened THIS card, never inside a form.
  • 8 required shared-spine fields, persona-agnostic (PRD § Setup Contract): program_name · program_hook · who_its_for · what_happens · price · dates_times · location · how_to_book.
  • This card's workshop persona block: materials_or_what_youll_make + skill_level (required) + venue_or_parking (optional — sparser page copy, never a pause, C-F2 ↗). The sibling Retreat card swaps in its own 5 optional retreat fields (frame 3a).
  • From the Brain: business name + brand voice via Brain Check (frame 4) — brand voice is a hard gate; a missing voice blocks activation, it never generates “generic”.
Outputs — the kit: 5 pieces, one write
  • Program description · page copy · launch blast · IG captions · flyer copy — written together at activation (frame 6a), $3.00 once for the set.
  • Each piece versions independently — v1 at activation, v2/v3… per corrective rewrite (AI cost only); only the single immediately-prior version is retained (frame 9; fuller history is F3).
  • Per-piece status vocabulary: pending · generating · done · failed — failed retries free (3-try cap, AC-BILL-07 ↗); a platform-fault failure gets an uncapped free retry (frame 10b).
Results shape — vertical accordion + the share-anything composer
  • The kit renders as a vertical accordion (locked 2026-08-01; pass-bar ../archetypes/generation-surface.md): one row per piece — status dot, name, version chip, expand to read — with Copy on every row and Google-Doc delivery for the set (frame 8).
  • Corrective feedback goes through the share-anything composer — ONE box: type · paste · drop a file, the file landing as a chip in the same box; never tabs (“one job, one surface”, 2026-06-06). Feedback is per-run context, never a Brain write — the boundary line rides every composer.

No customer/guest side exists for this assistant — it's founder-triggered, not message-triggered. The line that matters is the one between the phases: Activate delivers the kit; Monitor makes it right. There is no “activated but empty” state and no multi-kit machine — this instance belongs to Sunrise Yoga Retreat forever. A different program is a different activation.

┌ DISCOVER ──────────────────────────────────────────────────────────────┐
│ Founder browses Explore — sees the card, price, and that it's          │
│ coming soon (not yet publicly activatable).                            │
└──────────────────────────┬─────────────────────────────────────────────┘
                           ▼
┌ EVALUATE ──────────────────────────────────────────────────────────────┐
│ Opens Overview — what it writes, how it works, key benefits.           │
└──────────────────────────┬─────────────────────────────────────────────┘
                           ▼
┌ ACTIVATE — this is where the kit gets written, and where $3.00 fires ──┐
│ Personalize  fill the program's facts (lens preset by card)      → 3b  │
│              └─ preview panel: how a kit looks (static example,        │
│                 fixed per card — never a real generation)              │
│ Connect      Brain Check (business name + brand voice)           → 4   │
│ Try          read-back: what will be written, from these facts,        │
│              in your voice · “$3.00 writes your kit when you       → 5b  │
│              activate” — the Activate button IS the write button      │
│ Activating   the 5 pieces stream, piece by piece                 → 6a  │
│ Activated    “Your kit is ready — all 5 pieces” · [View the kit] → 6   │
└──────────────────────────┬─────────────────────────────────────────────┘
                           ▼
┌ MONITOR — Pulse · review · refine · deliver ───────────────────────────┐
│  card     Sunrise Yoga Retreat · Kit ready — all 5 pieces · v1  → 7    │
│  the kit  read each piece · Copy · deliver to Google Doc        → 8    │
│           └─ “Not quite?” → share-anything composer               │
│              (type · paste · drop a file — ONE box)                    │
│              └─ ▶ Rewrite this piece — AI cost only                    │
│  rewritten  piece shows v2, “rewritten just now”                 → 9    │
│  failed     per-piece retry — free, distinct from a rewrite     → 10   │
└──────────────────────────┬─────────────────────────────────────────────┘
                           ▼
┌ A DIFFERENT PROGRAM = A NEW INSTANCE ──────────────────────────────────┐
│ Activate the template again → new name, new ID, most fields     → 11   │
│ carried forward, prefilled — editing or clearing them starts fresh.    │
│ The old instance keeps its own kit, untouched. THAT is the lifecycle.  │
└────────────────────────────────────────────────────────────────────────┘
Sequencing principle BINDING · Peyton 2026-08-01 evening
  • Activation delivers version 1. Peyton, verbatim: “once a generation assistant is activated, the generated output should already be delivered and consider completed (version 1) at least, not activate and then review and create again.” The activation pipeline already carries a payment step — the $3.00 settles there, like every other assistant's activation charge. Activated therefore means a kit exists, never “ready to write kits”.
  • One instance = one program = one kit. Peyton, verbatim: “each assistant kit should be unique to one … they can create the same assistant again but with different program details, assistant name and ID but holds majority of the fields same if they want to or start fresh. isn't that the assistant lifecycle itself?” Yes — so the multi-kit machine is dead. No “3 written · $9.00 total”, no “write another kit”, no per-run confirm step. A new program routes through the platform's existing start_fresh reactivation mode, opened directly and prefilled from the current instance's saved facts — no visible chooser card (frame 11).
  • Pulse is review + refine + deliver, not a trigger. The founder reads the kit, and where a piece isn't right she gives corrective feedback and it is rewritten — v2, v3 — until she's satisfied. There is no in-app text editor: “edit” means share feedback → regenerate; hand-tweaks happen in the copy-out or the exported Doc.
  • The feedback input is the share-anything composer, not a bespoke form. Peyton, verbatim: “can we use the same share anything composer? … same engine use everywhere”. ONE box — type, paste, or drop a file, and the file lands as a chip in that same box. Never tabs (“one job, one surface” lock, 2026-06-06).
  • Rewrites bill AI only. The $3.00 is the kit fee, paid once at activation. A rewrite re-bills only the AI it burns (additive ai_usage). Copy says “AI cost only” and “charged as used, a few cents per rewrite” — never an invented exact figure.
  • Feedback is per-run context, never a Brain write. What she shares in the rewrite composer shapes THIS regeneration and nothing else. Every composer carries the boundary line saying so. A “worth keeping? Save to your Brain” bridge is deferred to F2 — not drawn as Active.
  • The lens (Retreat / Workshop) is preset by the card, never a founder-facing picker (ADR-035, superseding the same-day lens-picker-as-step-① lock) — it shapes which facts Personalize collects, decided before the founder ever opens the wizard. Connect carries no EXTERNAL app-connection rows — AI Model (2026-08-04 ledger lock, no per-assistant exceptions) plus Brain Check are the only rows/readiness gate (AUTO-only AI).
Where each phase lives below
  • Discover — “is this worth a tap?” → 1
  • Evaluate — “what does it actually do?” → 2
  • Activate — “set the facts, turn it on, watch it write” → 3 · 3a · 3b · 3c · 4 · 5 · 5b · 6a · 6 · 6b
  • Monitor — “read it, fix what's off, take it away” → 7 · 8 · 8b · 9 · 10 · 10b
  • Next program — “activate it again” → 11

Frames below are the current build contract — the dev team matches them pixel for pixel; only current / being-built state lives here. Deferred ideas live under Part II · Future at the bottom. Acceptance ids cited (AC-* ↗) live in docs/product/assistants/shared/prd-as-program-launch-kit.md § Test Plan — this artifact cites ACs, never mints them.

PRD debt, stated once here so no frame has to re-explain it. The PRD still encodes the midday model (b) and has NOT yet been updated for the evening ruling (c) — that sync happens after Peyton signs off this mockup. Four shipped criteria are now contradicted by this design and every affected frame is flagged NEW (PRD debt — supersedes …) inline: AC-LIFE-01 (“activation makes zero AI calls” — it now makes five), AC-LIFE-02 (“activated promises a capability, never a kit” — it now promises a kit), AC-RUN-01 (the empty Pulse state — there is no empty state) and AC-RUN-02 (the per-run confirm step — removed). Criteria whose meaning survives are cited normally: AC-SETUP-01/02/03 (Personalize purity + the static preview), AC-DLV-01…05 (delivery), AC-GEN-01/02/04/05/06/07/08, AC-BILL-01/02/04/07, AC-LIFE-03 and AC-RUN-03/04. The refine surface (frames 8/9), the rewrite-in-flight Pulse state (frame 7's third state), the activation-succeeded/no-kit recovery state (frame 6b, CTO Fork 8 / B2), the platform-fault failed-piece state (frame 10b, Peyton's partial-credit ruling), and the brand-voice hard gate (frame 4's not-ready state, Peyton's ruling) have no PRD coverage at all and each carries its own NEW (PRD debt) criteria. Nothing here mints an id.

Part I — Active build now, in journey order
Discover
Phase 1 · Discover “is this worth a tap?” · the founder's first glance in Explore
Workshop Launch Kit
One event's facts in — page copy, launch blast, IG captions, flyer out, in your voice.
$3.00 per kit MystFlo AI
Personalize Connect Try
coming soonActivate
Frame 1 · Explore card — coming soon [Discover]
  • Story — As a founder scrolling Explore, I see Workshop Launch Kit's price and what it writes, but the Activate button is honestly disabled — this one isn't open yet.
Design notes
  • Coming-soon treatment matches the shipped componentAssistantSummaryCard.pre.tsx's isComingSoon prop. The card body is unchanged (title, description, price, chips, stepper all render normally); only the Activate button dims (bg-white/10 text-white/40, disabled) and its micro-pill swaps from “tap for details” to amber “coming soon”. No separate coming-soon badge exists anywhere else on the card.
  • description verbatim from this card's own assistant_templates row (migration copy) — under ADR-035 card-per-persona, Workshop Launch Kit and its sibling Retreat Launch Kit are separate catalog rows with their own price and copy, not a shared row with a per-run lens variant. The Explore persona filter routes a founder to the right card.
  • Price is plain text (R27) — $3.00 per kit, the real outcome_unit. One app chip, MystFlo AI, always included — there's nothing else to connect.
768 not yet drawn for this flow. Desktop and 375 are the contract.
This step is 1180. No 375 drawing — use the Desktop size.
Evaluate
Phase 2 · Evaluate “what does it actually do?” · the Overview tab
Workshop Launch Kit
One event's facts, five pieces of launch copy back — page, blast, IG captions, flyer, description — in your voice.
$3.00 per kit
Overview Personalize Connect Try
What it does

Give it the date, price, venue, and what they'll make — your own facts, or a facilitator's if you're the venue — and it writes the launch set in your voice: description, page copy, launch blast, IG captions, flyer copy. Pairs with your registration page: generate the kit, then fire the launch.

How it works
01
Teach it once
Your voice, in the Brain.
02
Save the program's facts
What, when, price, who it's for.
03
Tap Activate
Turns it on and writes the kit — same tap.
04
Writes the launch kit
5 pieces, your voice.
Kit ready to use
Copy it, save it to a Doc, or ask for a rewrite.
Key benefits
In your voice — the one you confirmed
No re-explaining your voice, your prices, your policies every launch. It already knows.
Never invents a fact you didn't give it
Missing a date or a price? It asks — it never guesses and never ships a made-up detail.
No staring at a blank page five times
Description, page copy, launch blast, IG captions, flyer — all out of one set of facts, not five starts from scratch.
Written to feed your launch page, not replace it
Description and page copy come out sized for Waitlist + Launch — one program's facts in, ready to paste.
Frame 2 · Overview tab [Evaluate]
  • Story — As a founder deciding whether this is worth setting up, I read what it writes, how it works, and why it beats retyping the same launch copy five different ways.
Design notes
  • description, long_description and details.tldr pulled verbatim from the PRD's Workshop Launch Kit (workshop-host lens) Catalog Copy block (prd-as-program-launch-kit.md § Catalog Copy, 2026-07-31 fix pass) — never the retired neutral/“All” canonical row, since this card only ever runs the workshop lens. The 4 Key Benefit cards are the same PRD section's lens-shared set (fear-killer rubric, playbook §Catalog Copy Standard) — target copy pending build-commit migration, not yet the literal DB row.
  • Try stays disabled until Personalize + Connect complete — same stepper convention as every other assistant.
  • Correction (2026-08-04, CPO build-readiness review): Card 4's description read “…one program's facts in, ready to fire” — “ready to fire” implies a working Waitlist + Launch hand-off button that isn't built (PRD § Gaps: that hand-off “needs a small ① wizard hook — an Open Question, not built”). Changed to “ready to paste”, the same honest phrase this file already uses for the identical fact (frame 2's flow outcome node, “Copy it, save it to a Doc, or ask for a rewrite”). The PRD's own Catalog Copy source (prd-as-program-launch-kit.md:102) still has the unfixed “ready to fire” wording verbatim — this mockup and the PRD are meant to mirror each other exactly (T1144 drift guard), so the PRD needs the same one-word fix in the same pass this mockup syncs back, not a second, separate correction.
  • Re-cut to 5 nodes (2026-08-04, Platform PL build-readiness pass) — this mockup was the drift, not the PRD. “How it works” drew 3 compressed steps; the PRD's Operating Flow table (§ Operating Flow) is the contract-conformant version — 5 nodes, within the locked 4–6 range, exactly one outcome, one AI node where AI truly runs. Re-cut node-for-node: 01 Teach it once (setup) → 02 Save the program's facts (setup) → 03 Tap Activate (trigger) → 04 Writes the launch kit (ai-action) → outcome Kit ready to use (adds “or ask for a rewrite”, which the compressed 3-step version dropped entirely). Node 3's “same tap” framing matches the evening lifecycle ruling (activation IS the write) — never the retired “write a kit from Pulse, every time you launch” phrasing an earlier PRD revision briefly carried.
768 not yet drawn for this flow. Desktop and 375 are the contract.
This step is 1180. No 375 drawing — use the Desktop size.
Activate
Phase 3 · Activate “set the facts, turn it on, watch it write” · Personalize and Connect spend nothing; the Activate tap writes the kit and settles $3.00
dimmed Explore page peeks — revealGap · app header stays visible above (C1)
Workshop Launch Kit
One event's facts, five pieces of launch copy back — page, blast, IG captions, flyer, description — in your voice.
$3.00 per kit
Overview Personalize Connect Try

These are notes, not the finished copy. Give us the facts below, share your rough draft, or both — activating writes the kit from whatever you've given us, in the voice you confirmed in your Brain.

The facts we can't guess
What's it called?
Sunrise Yoga Retreat
Price (#3480 — amount + currency + qualifier, was one prose field)
1,450
USD
per person, shared room
Dates & times
12–17 October 2026
Where
Marrakech, Morocco
How to book / get in touch
mysite.com/october-retreat

A WhatsApp link, your Workshop Booking assistant, or your website — wherever people reach you.

No Workshop Booking for THIS program yet:Set up Workshop Booking

Workshop Booking active for THIS SAME program — shown for comparison:Grab my Workshop Booking link — fills the field above with wa.me/15551234567?text=Book — Sunrise Yoga Retreat, replacing whatever was there.

Checked by program match, not just “any Workshop Booking assistant active” — a Workshop Booking instance for a DIFFERENT program shows “Set up Workshop Booking” too, since there's nothing matching to grab a link from.

Everything else — however you've already got it
Rough draft, old flyer, voice notes, mood shots — drop it here
Same as last October but warmer — it's the last one before winter. Vibe is the second photo, not the first. Don't say “transformative”, I hate that word.
⊕ Or drop a file, screenshot, photo or link — it goes in this same box
last-october-flyer.pdf  × mood-2.jpg  ×

Nothing is read or written yet — this rides along and the writer uses it when you activate. Used for this kit only; it doesn't change your Brain.

Or type it in — whichever you'd rather
What's the one-line hook? — or leave it, it's in your notes
Five mornings of yoga, five long lunches, zero notifications.
Who's this for? — or leave it, it's in your notes
Women in their 30s–50s who've never done a retreat before.
What happens (the shape of it) — or leave it, it's in your notes
Covered in what you shared above
Workshop details
What will they make or learn? — or leave it, it's in your notes
A finished mug or bowl, glazed and fired — yours to keep.
What skill level?
Beginner-friendly
All levels welcome
Intermediate
Advanced
Venue details / parking (optional)
Street parking on Elm; small lot behind the building.
Continue to Connect

Nothing is written yet — activating writes your kit, and refines everything above into your confirmed voice.

This is a static example Because this is a generation assistant, we only show your real generated content after you activate.
Example — how a workshop kit looks

Description

One evening at the wheel. You'll throw, trim and glaze a mug that's fired and waiting for you two weeks later.

Page copy

Weekend Pottery Intensive — Saturday, 2–6pm
No experience needed. Clay, tools, glaze and firing are all included — bring nothing but short nails…

Launch blast

Doors open Saturday — Weekend Pottery Intensive. Six seats at the wheel, one afternoon. If you've been meaning to try this, here's your seat…

IG captions

“Six seats. One afternoon. Clay under your nails by 2pm.” — 3 ready to post.

Flyer copy

Weekend Pottery Intensive · Sat 2–6pm · No experience needed · Link to book below.

·· example, not your data ··
Frame 3b · Desktop 1180 — form left, example kit right [Activate]
  • Story — As a founder on desktop, I fill in the program's facts on the left while a sample of what a finished kit looks like sits on the right, so I know the shape of what I'm turning on before I turn it on.
Acceptance
  • AC-SETUP-01 ↗ — no control that starts a generation renders on this tab, and no AI call, fetch, write or URL generation fires from it; its only forward action is “Continue to Connect”.
  • AC-SETUP-02 ↗ — the preview panel shows a labelled static example: the header just names the example (“Example — how a workshop kit looks”) plus the “·· example, not your data ··” footer, and never the founder's own program name or any generated prose.
  • AC-SETUP-03 ↗ — editing any program-spec field does not change the panel — it is a fixed example for this card, not a per-keystroke reactive preview.
  • NEW (PRD debt) · § Setup Contract amendment — required set narrows from 8+2 to 5 (2026-08-12, Peyton /design item 1). NEEDS PEYTON'S SIGN-OFF; this frame draws the amendment, it does not assume it. Given the Personalize tab, when the founder has filled program_name, price, dates_times, location and how_to_book, then “Continue to Connect” is enabled regardless of whether program_hook, who_its_for, what_happens or materials_or_what_youll_make carry a value — those four are satisfiable by EITHER their field OR the shared-notes box, and a run with neither produces sparser copy, never a pause (the C-F2 ↗ precedent, extended). The five that stay hard-required are exactly the facts AC-GEN-02 ↗ names as un-inventable (date, price) plus the three whose invention would misroute a real buyer — name, place, and where to book. The PRD currently declares all 8 shared-spine fields required; this is a real spec change, not a reading of it.
  • NEW (PRD debt) · the shared-notes box is an INPUT, not an action — Given anything typed, pasted or dropped into the notes box, when the founder is on Personalize, then no AI call, no extraction, no fetch and no upload-parse fires — the material is held with the draft instance config and handed to the writer at activation. This is what keeps AC-SETUP-01 ↗ true: the box carries no submit control and no price, because a control that starts a generation may not render on this tab. A build that auto-fills the fields from a dropped file breaks AC-SETUP-01 and meters an unbilled extraction (feedback_ai_extraction_always_metered) — it is explicitly out of scope here.
  • NEW (PRD debt) · notes never reach the Brain — Given material shared in the notes box, when the kit is written, then that material is scoped to this instance's generation and is never persisted to brain_documents or any Brain surface — the same boundary AC-GEN-04 ↗ already sets for the program facts and the rewrite composer.
  • Locks it must satisfy (not ACs): activation PRD amended BINDING Personalize/Try rule — a state-rendered artifact preview with “zero side effects, no fetch, no URL, no AI call”; and the four-slot table's generation row ① “Doc skeleton, sections toggle live, ░ body”.
  • NEW (PRD debt) · cross-assistant field read — genuinely new mechanism, not yet wired. Given a Workshop Booking (TMPL-WSBK01) instance exists for THIS SAME program, when the founder taps “⇩ Grab my Workshop Booking link”, then the “How to book / get in touch” field fills with that sibling instance's own generated “Your booking link” value (read-only field, shipped on Workshop Booking's own Personalize/Connect surface). Every existing field source in this codebase is founder-typed, Brain path, connected app, or seeded default — reading a live generated value out of a different assistant's own instance is a 5th category nothing today implements. Stated plainly so build doesn't assume this is already wired.
  • NEW (PRD debt) · same-program scoping (Peyton ruling, 2026-08-04) — Given a Workshop Booking instance is active but for a DIFFERENT program (matched by program identity, not merely “a Workshop Booking assistant is active somewhere”), then “⇩ Grab my Workshop Booking link” must NOT render or fire — the founder sees “↗ Set up Workshop Booking” instead, same as the no-instance-at-all case. Closes the real failure CPO named: a founder building “Autumn Clay Weekend” must never grab a link whose prefill reads “Book — Sunrise Yoga Retreat” from an unrelated instance. The program-identity match itself (what field ties a Workshop Booking instance to a specific Launch Kit instance) is not defined anywhere in this codebase today — Lane 2 build scope, not drawn here.
Design notes — the draft framing (item 1, 2026-08-12)
  • The tab now reads as a notes surface, not an exam. What Peyton flagged is real: eleven empty text fields, all apparently required, is a screen that says type the finished copy in, perfectly, before anything happens. Three moves fix it and nothing else changes — a framing line that names these as notes; the required set cut to the five facts that genuinely can't be guessed; and the share-anything box carrying everything else in whatever form she already has it.
  • The split is drawn on ONE test: would inventing this cost her money or a customer? Price, dates, where, how to book and the program's name — yes, so they stay required and typed. Hook, who it's for, what happens, what they'll make — no, a thin version just writes weaker copy, so they're satisfiable either way. That test is why the line lands where it does; it is not a count-reduction exercise.
  • ONE box, and it is the same box as everywhere else. Type, paste, drop a file, drop a screenshot, drop mood photos — all into a single .composer, files landing as chips inside it (“one job, one surface” lock, 2026-06-06). Never a second “upload references” step, never a tab. Build reuses LaunchKitRewriteComposer.tsx, which is already exactly this box — it needs the label, placeholder, footnote and submit control made into props so the Personalize instance can render with no submit button and no price. Forking a second composer component for this is the failure mode; so is dragging the Brain's ShareInline in, whose proposal/organize pipeline writes to the Brain and must never touch this surface.
  • The honesty line is load-bearing, and it is the confirmed-voice form. “Activating writes the kit … in the voice you confirmed in your Brain” — never “learns your voice”, never “sounds indistinguishable from you” (playbook say/never-say ledger; the auto-learning loop is not built). And the notes box sits under the same per-run boundary as the rewrite composer, stated in the same words, because it borrows the Brain share door's exact grammar and would otherwise be a lie by association.
  • Empty soft fields show what covers them, they don't nag. A soft field whose subject the notes box already covers reads a quiet “Covered in what you shared above” placeholder rather than a red required marker — drawn on “What happens”. A soft field covered by neither is simply left; the kit writes sparser copy, per C-F2's existing precedent, and never pauses.
  • SUPERSEDED 2026-08-14 (Peyton ruling, #3480) — price is now structured. Dates stays free text, unchanged. The 2026-08-12 "RESOLVED" call below this line reasoned price should stay free text because "the qualifier is the half a rigid amount+currency+unit picker can't hold." Peyton overrode that: a founder shouldn't have to remember to type a currency symbol, and the amount should be a real number — the qualifier objection is answered by keeping the qualifier as its OWN field (free text, "per person, shared room") rather than folding it into the amount, so nothing gets lost, it just isn't one field anymore. Shipped: price_amount (number) + price_currency (select, USD/EUR/GBP/CAD/AUD) + price_qualifier (text) replace the single price key (migration 20260814150200_3480_launch_kit_price_structured.sql); ConfigFieldRenderer.tsx gained a date field type in the same PR, but dates_times stays free text — its shape genuinely diverges between a retreat's date range and a workshop's recurring slot ("Tue+Thu 3:30"), the same F3 finding below, untouched by this ruling. Not applied to TMPL-EVLK01 (Event Launch Kit, added 2026-08-13, after this frame was drawn) — its price allows "or free RSVP," a case the amount+currency+qualifier shape doesn't cleanly cover; left free text pending a follow-up product call.
  • RESOLVED 2026-08-12 — no structured price or date controls (PRICE PORTION SUPERSEDED 2026-08-14, see above; DATES PORTION STILL CURRENT). An earlier pass drew a currency selector and a date-range picker; Backend and Frontend feasibility both came back against, and I agree on the price [struck 2026-08-14 — see above]. Verified in code, not taken on report: ConfigFieldRenderer.tsx switches on 21 field types and none is date, date-range or currency (number exists but is a bare numeric input); nothing in the picker library wraps a range (src/components/ui/calendar.tsx is an unused primitive). So both controls were net-new component work, not a config flag — price's lift was paid 2026-08-14; dates remains deferred. Dates are the genuine candidate and are deferred, not dismissed — F5.
  • Placeholders are ALREADY SHIPPED — the gap Peyton saw was this mockup's, not the product's. ConfigFieldRenderer.tsx reads field.placeholder and renders it at placeholder:text-white/30 (genuinely dim against near-white filled text), and migration 20260807090000_3115_launch_kit_config_schema.sql already seeds an “e.g. …” placeholder on every field for both templates. This frame drew every field pre-filled with the worked example, so the empty state — the one that actually reads as an exam — was never depicted, which is very likely why the tab read as bare boxes. Frames 3d / 3d now draw first-open with the real seeded ghost text. Nothing to build here — verify against the shipped placeholder strings rather than writing new ones.
Design notes — the preview panel (unchanged)
  • This is a STATIC representative example, not a live-typing reactive preview and not a generation. It does not re-render per keystroke and it never calls the model — it is fixed per card (ADR-035), not something a founder can toggle. This card (Workshop Launch Kit) shows only its own persona's example; frame 3a draws the sibling Retreat Launch Kit card's fields alongside it purely so a build reviewer can see both shapes at once — not a live swap either card offers. Every framing on it says “example” — header “Example — how a workshop kit looks”, footer “·· example, not your data ··” — so it can never be mistaken for the founder's own output (activation PRD honesty law).
  • Reuses the R32 mechanic verbatim from on-brand-support.html frame 3b: form flex-1, right pane fixed 400px, row capped 1040px, preview column + shell fill the full split height, top-aligned (never vertically centered), scroll is the panel's own. Only the right-pane CONTENT differs — a document preview (.doc-preview) instead of a phone chat mock (.pv-phone).
  • Same D-1 pointer as mobile — Brain readiness lives on Connect alone (sec-4); this tab carries the facts form and the preview, nothing else.
  • Two states drawn, not just described (Peyton /design ruling, 2026-08-04). “No Workshop Booking for THIS program yet” is a “go somewhere” tap-intent — it navigates to Explore, Workshop Booking's own card, a separate assistant to switch on; it never opens an inline mini-wizard here. “Workshop Booking active for THIS SAME program” fills the field in place with the real value and deliberately overwrites whatever was there — a founder-chosen action, not a silent one. Field label, value shape (wa.me/15551234567?text=Book — <name>) and the “generated, read-only” framing match Workshop Booking's own field verbatim (assistant-flows/workshop-booking.html:814–815) so the two mockups describe the same shipped field, not two different ones.
  • Scoped to same-program, not same-founder (Peyton ruling, 2026-08-04). A founder with a Workshop Booking instance active for a DIFFERENT program sees “Set up Workshop Booking” too — same label as having none at all — never the grab action. Drawn as a third line under the two states naming the check explicitly (program match, not “any active instance”) rather than a third full visual state, since the founder-facing outcome for “no instance” and “wrong-program instance” is identical — same link, same copy, same tap target. What differs is only the underlying condition, which the added line makes explicit for build.
dimmed Explore page peeks — revealGap
Workshop Launch Kit
One event's facts, five pieces of launch copy back — page, blast, IG captions, flyer, description — in your voice.
$3.00 per kit
Overview Personalize Connect Try

These are notes, not the finished copy. Give us the facts below, share your rough draft, or both — activating writes the kit from whatever you've given us, in the voice you confirmed in your Brain.

The facts we can't guess
What's it called?
e.g. Weekend Pottery Intensive
Price
e.g. 95
USD
e.g. per person, all materials included
Dates & times
e.g. Saturday 14 March, 2–6pm
Where
e.g. Elm Street Studio, Brooklyn
How to book / get in touch
e.g. mysite.com/pottery-weekend

A WhatsApp link, your Workshop Booking assistant, or your website — wherever people reach you.

Everything else — however you've already got it
Rough draft, old flyer, voice notes, mood shots — drop it here
Paste last season's version, type a few lines, or just drop what you have. Nothing has to be tidy.
⊕ Or drop a file, screenshot, photo or link — it goes in this same box

Nothing is read or written yet — this rides along and the writer uses it when you activate. Used for this kit only; it doesn't change your Brain.

Or type it in — whichever you'd rather
What's the one-line hook? — or leave it, it's in your notes
e.g. One afternoon at the wheel — throw, trim and glaze a mug that's yours to keep.
Who's this for? — or leave it, it's in your notes
e.g. Total beginners who've never touched clay.
What happens (the shape of it) — or leave it, it's in your notes
e.g. Two hours at the wheel, a break, then glazing — we fire everything after.
Workshop details
What will they make or learn? — or leave it, it's in your notes
e.g. A finished mug or bowl, glazed and fired — yours to keep.
What skill level?
Beginner-friendly
All levels welcome
Intermediate
Advanced
Venue details / parking (optional)
e.g. Street parking on Elm; small lot behind the building.
Continue to Connect

Fill the five facts above to continue. Everything else can wait, or ride along in your notes.

This is a static example Because this is a generation assistant, we only show your real generated content after you activate.
Example — how a workshop kit looks

Description

One evening at the wheel. You'll throw, trim and glaze a mug that's fired and waiting for you two weeks later.

Page copy

Weekend Pottery Intensive — Saturday, 2–6pm
No experience needed. Clay, tools, glaze and firing are all included…

Launch blast

Doors open Saturday — Weekend Pottery Intensive. Six seats at the wheel, one afternoon…

·· example, not your data ··
Frame 3d · Personalize, empty [Activate] new — the state that was never drawn
  • Story — As a founder opening this card for the first time, every field shows me an example of what belongs in it, the five I actually have to fill are grouped and few, and the box below tells me I can just paste what I already have instead.
Why this frame exists
  • Frame 3b draws every field pre-filled with the worked example, so the EMPTY state — the one a founder actually meets — was never depicted anywhere in this file. That is very likely the whole of what Peyton read as “plain text fields you must fill completely”: a wall of identical boxes with no guidance, which is exactly what a filled frame can't show you and exactly what an empty frame does. Per the ship-gate rule (a shipped state the mockup never depicted is a blocker), this was a coverage hole, not a styling choice.
  • The placeholder mechanism is ALREADY BUILT — verified in code, nothing to build. ConfigFieldRenderer.tsx renders field.placeholder at placeholder:text-white/30 (lines 429–430, 441–443, 466–469) — genuinely dim against near-white filled text — and migration 20260807090000_3115_launch_kit_config_schema.sql seeds a placeholder on every text/textarea field of both templates. skill_level correctly has none (it's a radio). Build's job here is to check the shipped strings, not write new ones.
  • ⚠️ REAL DEFECT FOUND, and it is not a mockup problem — the Workshop card is seeded with the RETREAT worked example. All eight shared-spine placeholders on TMPL-WMKT01 read “e.g. Sunrise Yoga Retreat”, “Five mornings of yoga, five long lunches”, “Women in their 30s–50s who've never done a retreat before”, “Marrakech, Morocco”, “$1,450 per person, shared room” — then the workshop block abruptly switches to “a finished mug or bowl”. A founder who picked the Workshop card is shown a retreat in every ghost field until she reaches the last two. That directly undermines ADR-035's card-per-persona premise, and an empty form whose examples describe someone else's business is a strong candidate for the “this doesn't feel like mine” reaction. This frame draws proposed workshop-correct strings, built on the “Weekend Pottery Intensive” example this file's own preview panel already uses. They are a proposal, not a lock — placeholder text is founder-facing copy, so final wording routes through chief-writer, and the fix is a migration on TMPL-WMKT01's configuration_schema, not a frontend change. RTLK01's placeholders are already correct for its persona and need no change.
  • The CTA is drawn DISABLED, and the caption says what unlocks it. The five hard facts gate “Continue to Connect”; the soft fields never do. Drawn so build doesn't gate on all eleven (today's behaviour) or on none.
  • Composer shown genuinely empty with its own ghost line, no chips, no submit — the input-not-action rule from 3b is most visible in this state.
Ready — voice confirmed, Activate is unblocked
Overview Personalize Connect Try
01 · Connect apps
AI Model MystFlo AI
Writes your kits in your voice. Choosing your own AI model is coming later.
Connected
02 · Brain Check
Business name
Confirmed
Edit in Brain →
Brand voice
Confirmed Jul 20
Edit in Brain →
2 of 2 ready — kits will sound like you
Try reads this same check back as one line — it never re-asks.
Continue to Try
Not ready — voice unconfirmed, Activate is BLOCKED (new)
Overview Personalize Connect Try
01 · Connect apps
AI Model MystFlo AI
Writes your kits in your voice. Choosing your own AI model is coming later.
Connected
02 · Brain Check
Business name
Confirmed
Edit in Brain →
Brand voice
Not confirmed yet
Confirm in Brain →
! 1 of 2 ready — brand voice is required before you can activate
Try reads this same check back as one line — it never re-asks.
Continue to Try
Frame 4 · Connect tab — AI Model + Brain Check [Activate]
  • Story — As a founder connecting this assistant, there's nothing to connect — I just confirm my Brain is ready, in the ONE place readiness lives. If I haven't confirmed a voice yet, I can't get past this tab until I do — generating one or confirming one I already like, either way.
Acceptance
  • NEW (PRD debt) · brand voice is a hard gate (Peyton ruling, 2026-08-04) — Given the founder's Brain has no confirmed brand voice, when she reaches Connect, then “Continue to Try” is disabled and the row routes her to Brain to generate or confirm a voice; activation cannot proceed without it. This corrects the PRD's own current language (“an empty voice section still generates”), which Platform PL flagged as inconsistent — fixed on the PRD side in the same pass.
  • NEW (PRD debt) · same pattern as the shipped gate — mirrors prd-as-on-brand-support.md's AC-GATE-01/AC-GATE-02 (all required Brain fields satisfied and unblocked → ready=true, the wizard allows activation; any missing → ready=false, that field routes to its Brain section) — same mechanism, applied to this card's 2-field Brain Check instead of on-brand-support's 7.
Design notes
  • AI Model row present — earlier "no AI row" stance OVERRULED (kit `design-decisions.md` 2026-08-04 closing amendment, Peyton-locked): every assistant using AI gets the AI Model row, this one included, in the label/badge shape (label "AI Model", badge "MystFlo AI", status "Connected" — never "Included"). The old note here rejected the retired "Included" CHIP, not an AI row per se; the new shape has no such chip. Still true: no EXTERNAL app rows and no BYOK today (AUTO-only lock) — kit delivery's Google-Doc export is a per-run destination handled at delivery time, not a Connect-tab storage row while coming_soon (revisit at the ADR-035 re-cut).
  • ✓ RESOLVED — the AI Model row IS drawn (2026-08-06, per the kit ledger lock). An earlier cut of this frame drew Brain Check only, and this note held the collision open between that cut and the kit Connect-row lock (`design-decisions.md`, 2026-08-04 closing amendment: "no per-assistant exceptions — every assistant using AI at all gets the AI Model row, PLK included", naming this template explicitly). Resolution: the ledger lock wins — the Brain- Check-only cut was a branch artifact of the #3182 gate re-cut, not a ruling (its commit never mentioned removing the row). Both states now draw 01 · Connect apps with the single role row — label "AI Model" · badge "MystFlo AI" · status Connected, no caret — above 02 · Brain Check, matching on-brand-support.html frame 4 and lifecycle sec-5b.
  • If that row is ever added, it takes NO caret (kit `design-decisions.md` 2026-08-05, Peyton-locked): the badge carries the expand affordance only where a second option is real today, and AiModelPicker.tsx has no provider dropdown at all — BYOK is gated behind BYOK_AI_HIDDEN. A caret would open onto exactly one option. This assistant has no Storage row either while coming_soon, so its Connect tab has nothing expandable at all. Master contract + the Future picker state: `assistant-lifecycle.html` sec-5b / sec-f3. ⚠ Class-name note for whoever wires this: this file already defines its OWN .pick-rows/.pick-row family (the lens picker — CSS-circle .pick-radio, .pick-title, .pick-sub), which is NOT the same vocabulary the master's Connect expansion uses (.pick-r/.pick-l/ .pick-d/.pick-free). They collide by name only — harmless today because this Connect tab has no expansion — but do not paste the master's picker markup into this file without renaming, and reconcile the two before anyone extracts a shared archetype.
  • Brain Check scope is the shipped brainInheritance config for this template: business name + brand voice only — not the full 6-category checklist other assistants carry (no offerings/FAQs/policies dependency, since program facts come from the per-kit form, not the Brain).
  • Reuses the .bc-row/.bc-rows component verbatim from on-brand-support's Connect tab — same “Edit in Brain →” doorway, same monochrome “Confirmed” language.
  • Not-ready state ported from the shipped vocabulary, not invented.bc-st.warn ⚠ amber icon, .bc-act.amber doorway, and the “! N of M ready” amber .bc-sum line all match assistant-lifecycle.html's own Brand Voice row verbatim (“Brand voice ⚠ … Review in Brain →”). Two differences, both scenario-accurate, not new status language: the sub-line reads “Not confirmed yet” rather than “Needs review” (this founder never confirmed one, she isn't re-confirming a stale one), and the action reads “Confirm in Brain →” rather than “Add”/“Review” — matching the playbook's own verb for this step (the Brain arrives pre-seeded; the founder confirms it).
  • “Continue to Try” is the blocked control, not the Try tab itself. The Try tab already renders disabled in every frame in this file until Personalize + Connect both complete (the existing stepper convention) — that doesn't change. What's new is Connect's OWN forward button: it goes cs-disabled (same token as the Explore card's disabled Activate) when the gate fails, so a founder can't tab-hop around an unconfirmed voice.
dimmed Explore page peeks — revealGap
Workshop Launch Kit
One event's facts, five pieces of launch copy back — page, blast, IG captions, flyer, description — in your voice.
$3.00 per kit
Overview Personalize Connect Try
What gets written, the moment you activate
Description
The short paragraph for your listing or booking page
Page copy
The full page — headline, the days, what's included, how to book
Launch blast
The email or broadcast that opens it
IG captions
Three, to post across the launch week
Flyer copy
Short-form, for print or a story card
Written from
Your factsSunrise Yoga Retreat · 12–17 Oct 2026 · Marrakech
Your voice Brain confirmed Jul 20
AI ModelMystFlo AI
The price
$3.00 writes your kit when you activate If you later want a piece rewritten, that costs AI only, never another $3.00.
Name this one
Sunrise Yoga Retreat
Activate & write my kit — $3.00

Takes about a minute. You'll watch the five pieces come in.

Frame 5b · Try — the read-back before the write [Activate]
  • Story — As a founder about to turn this on, I see exactly which five pieces will be written, which facts and voice they'll come from, and what it costs — then the same button does both.
Acceptance
  • AC-GEN-01 ↗ — a complete program-spec input generates all 5 pieces; this frame lists exactly those five, in that order.
  • AC-BILL-04 ↗ — the $3.00 on the button is price_per_run read at runtime, never an authored literal; a template with no debitable price can't reach this screen.
  • AC-GEN-06 ↗ — a double tap collapses to one billed run via the run-level idempotency key; this read-back is the founder-facing half of that guard.
  • NEW (PRD debt — supersedes AC-LIFE-01) — Given a founder taps Activate from Try, when activation runs, then the first real generation fires inside the activation pipeline and exactly one debit_wallet of price_per_run settles with it. AC-LIFE-01 (“zero AI provider calls, zero debit_wallet calls”) is now false by design.
Design notes
  • The Activate button IS the write button. Label carries both jobs and the price — “Activate & write my kit — $3.00”. Never a bare “Activate” here: a founder who doesn't know the tap spends $3.00 has been ambushed, and never “nothing charged now”, which is now simply untrue.
  • Try's job is the read-back, not a simulation. There is still no test kit — but the reason changed: the FIRST kit is the real one and it's one tap away, so a fake preview would be theatre. The static example lives on Personalize (3b/3c) and is labelled as an example there.
  • “Name this one” defaults to the program, not the template. One instance = one program, so the instance nickname should read “Sunrise Yoga Retreat” out of the box (D4) — it's what the founder will scan for on Pulse when the second program has its own instance.
  • Rewrite pricing is named here, before the charge, not discovered later on Pulse — same confirm-before-charge discipline the Brain's paid generates use.
  • Option C fix (2026-08-04, CPO build-readiness review) — the “Written from” box's AI Model row no longer says “included.” Real settlement is $3.00 kit fee + additive AI (proven in production, AC-BILL-06: a $3.25 debit = $3.00 + 5 × $0.05 AI floor rows) — the shown price stays $3.00, matching every other paid AI assistant on the platform, none of which disclose AI cost, but nothing on this screen may claim that price is the whole charge. “MystFlo AI” now states the fact plainly with no completeness word attached, the same fix already applied to the info-panel and the Activated tick in the earlier Option C round — this row was the one instance that round missed.
Writing your Sunrise Yoga Retreat kit

About a minute. Stay on this screen.

Checking your setup
Confirming billing & terms$3.00
Writing your five pieces~45s
Description
ready
Read it after
Page copy
ready
Read it after
Launch blast
writing…
IG captions
writing…
Flyer copy
queued
Going live
Frame 6a · Activating — the kit is written here [Activate] was frame 9, relocated
  • Story — As a founder who just tapped Activate, I watch my five pieces finish one by one inside the normal activation loader, so the wait reads as work happening rather than a spinner.
Acceptance
  • AC-GEN-01 ↗ — all 5 pieces generate in parallel, each persists as it completes; this frame is that in-flight state.
  • AC-GEN-08 ↗ — fan-out width is capped at 3 concurrent; the 2-done / 2-writing / 1-queued split is one honest sample of that bounded shape.
  • AC-BILL-01 ↗ — the run settles exactly one wallet debit; the “$3.00” on the billing step is where the founder sees it fire.
  • NEW (PRD debt — supersedes AC-LIFE-01, AC-RUN-01/02) — Given activation of a generation assistant, when the pipeline runs, then the generation executes INSIDE it and its per-piece progress renders in the activation loader; there is no post-activation empty state (AC-RUN-01) and no separate per-run confirm step (AC-RUN-02).
Design notes
  • The generic loader, with the generation nested inside its middle step.ld-step chrome ported verbatim from workshop-booking.html 6a (itself from assistant-lifecycle.html's C2 pipeline). The 5-piece accordion sits under the active “Writing your five pieces” step; it does not replace the loader. Every assistant's activation reads the same — this one just has something worth watching in the middle.
  • “Running a live test” is gone, not renamed. There is no test run to name: the write IS the run. That is what dissolves the platform_triggered carve-out — the enum prescribes a real activation artifact and now there is one.
  • Per-piece Copy is suppressed mid-activation (muted “Read it after”). Reading a done piece before the run settles invites closing the wizard mid-charge; the same rows go live the moment frame 6 lands.
  • Status dot vocabulary: pending = outline/dim, writing = amber pulsing (shell-language #4), done = emerald, failed = red. Reduced-motion kills the pulse (@media in the token block).
Your kit is ready — all 5 pieces

Sunrise Yoga Retreat, written in your voice. Read it, copy what you need, and if a piece isn't right, tell it why and it'll write that one again.

Description, page copy, launch blast IG captions, flyer copy $3.00 charged
View the kit Done
Frame 6 · Activated — the kit exists [Activate]
  • Story — As a founder who just activated, I already have the thing I paid for, and the one button in front of me opens it.
Acceptance
  • AC-BILL-01 ↗ — 5/5 delivered fires exactly one wallet debit at settlement; the third tick is that debit made visible.
  • AC-GEN-04 ↗ — the program facts that produced this copy are never written to the Brain, and nothing on this screen implies otherwise.
  • NEW (PRD debt — supersedes AC-LIFE-02) — Given activation completes, when the success screen renders, then it names the delivered artifact (“your kit is ready — all 5 pieces”), states the one charge that settled, and its primary action opens that kit. AC-LIFE-02 (“states the capability … never claims a kit exists”) is now inverted by design.
Design notes C2 success pattern reused
  • Activated promises the artifact, because the artifact exists (Peyton ruling, third pass). The old “ready to write kits / nothing charged” wording is the exact copy this ruling retires — a founder who paid $3.00 and sees “nothing has been written” has been lied to.
  • Three ticks, all delivery facts. The five pieces in two lines plus the settled charge — no setup ticks (Brain confirmed, facts saved), which are now noise beside a finished kit.
  • “View the kit” opens the Pulse tab (frame 8) — the same surface the Pulse card leads to. One destination, offered twice.
  • One glowing badge: the surface's single lit object. Refine is named in the body copy but has no control here — this screen hands over, it doesn't host the work.
The Pulse card for this instance — zero runs, honest about it
Active Details →
Sunrise Yoga Retreat ASST-M3K9
Workshop Launch Kit
Activated, but nothing was written yet
Kit
Not written — $0.00 charged
Opening it — the recovery screen
!
Activation finished, but your kit didn't write

Nothing was charged — the $3.00 only fires once your kit actually does. This can happen if your connection drops right as we start writing. Try again and we'll pick up from here.

Description, page copy, launch blast, IG captions, flyer copy — none written yet $0.00 charged — nothing has run
Write my kit — $3.00

Still stuck? Contact us →

Frame 6b · Activated, but no kit exists — recovery [Activate] new, CTO Fork 8 (B2)
  • Story — As a founder whose activation somehow didn't finish the write (my connection dropped, say), I land somewhere honest — nothing pretends I have a kit, nothing pretends I was charged for one — and one tap picks up exactly where it broke.
Acceptance
  • NEW (PRD debt) · activation-succeeded, generation-never-fired — Given the activation pipeline completes (the instance row exists, status is Active) but the chained kit-generation call never completes (e.g. the founder's browser closes before it fires), when the founder next opens this instance, then she sees this recovery screen, not frame 6's success screen and not an empty Pulse card pretending nothing happened.
  • NEW (PRD debt) · hard gate, zero completed runs only — This screen and its “Write my kit” retry render ONLY when zero completed runs exist for this instance. The instant one run exists (even a partial one), this state can never render again — the instance falls through to frame 6, frame 7, or frame 10 instead. This is what stops “Write my kit” from ever being mistaken for, or drifting into, a generic “write another kit” button — that button would double-charge, and per the “one instance = one kit” lock (top of this file) it must never exist.
  • AC-BILL-01 ↗ — no wallet debit exists for this instance yet; the retry settles the SAME first price_per_run debit the original activation was supposed to settle, never a second one.
Design notes
  • Honest and calm, not alarmed. Per playbook error tone — state the truth plainly, offer the fix, offer an escape. No red, no panic language. The badge is amber (shell-language #4: amber = action register), never the success screen's white glow and never the failed-piece red used in frame 10 — this isn't a failure the founder caused or needs to worry about.
  • “Write my kit” fires the exact same one-time generation frame 6a already draws — same loader, same per-piece accordion, same single settlement. This screen is not a new pipeline; it's a retry entry point into the one that already exists.
  • The Pulse card's own copy for this state (“Activated, but nothing was written yet” / “Not written — $0.00 charged”) mirrors the recovery screen's honesty — a founder scanning Pulse should never wonder whether this card silently ate her money.
  • The card's doorway is “Details →” alone, same rule as frame 7's cards — no second pill on the card itself. “Write my kit — $3.00” is the recovery screen's own button, reached BY tapping Details →, not a duplicate control living on the card too.
  • “Contact us” is the escape hatch (playbook error tone: always offer one) for the rare case retrying doesn't clear it either.
768 not yet drawn for this flow. Desktop and 375 are the contract.
Phase 3 · Activate · 375 the facts form, the docked preview, the Try read-back, and the activation write itself — Personalize and Connect spend nothing; the Activate tap writes the kit
dimmed Explore peeks — tap to return
Overview Personalize Connect Try

These are notes, not the finished copy. Give us the facts, share your rough draft, or both — activating writes the kit in the voice you confirmed in your Brain.

The facts we can't guess
What's it called?
Sunrise Yoga Retreat
Price
1,450
USD
per person, shared room
Dates & times
12–17 October 2026
Where
Marrakech, Morocco
How to book / get in touch
mysite.com/october-retreat

A WhatsApp link, your Workshop Booking assistant, or your website — wherever people reach you.

No Workshop Booking for THIS program yet:Set up Workshop Booking

Workshop Booking active for THIS SAME program — shown for comparison:Grab my Workshop Booking link — fills the field above with wa.me/15551234567?text=Book — Sunrise Yoga Retreat, replacing whatever was there.

Checked by program match, not just “any Workshop Booking assistant active” — a Workshop Booking instance for a DIFFERENT program shows “Set up Workshop Booking” too, since there's nothing matching to grab a link from.

Everything else — however you've already got it
Rough draft, old flyer, voice notes, mood shots — drop it here
Same as last October but warmer — last one before winter. Vibe is the second photo. Don't say “transformative”.
⊕ Or drop a file, photo or link — same box
last-october-flyer.pdf  × mood-2.jpg  ×

Nothing is read or written yet — this rides along and the writer uses it when you activate. Used for this kit only; it doesn't change your Brain.

Or type it in — whichever you'd rather
What's the one-line hook? — or leave it
Five mornings of yoga, five long lunches, zero notifications.
Who's this for? — or leave it
Women in their 30s–50s who've never done a retreat before.
What happens (the shape of it) — or leave it
Covered in what you shared above
Workshop details
What will they make or learn? — or leave it
A finished mug or bowl, glazed and fired — yours to keep.
What skill level?
Beginner-friendly
All levels welcome
Intermediate
Advanced
Venue details / parking (optional)
Street parking on Elm; small lot behind the building.
Continue to Connect

Nothing is written yet — activating writes your kit, and refines everything above into your confirmed voice.

·· preview what you'll get ··
Frame 3 · Personalize · 375 — the program's facts [Activate]
  • Story — As a founder setting this up, I fill in this program's facts, and I can see what the finished kit will look like before I commit to anything — without a word being written or a cent spent. Which kind of program this is was already decided when I opened this card — Workshop Launch Kit, not a toggle inside the form.
Acceptance
  • AC-GEN-07 ↗ — the persona conditional block shapes output for retreat vs. workshop runs on the same shared engine; this card presets which persona branch runs (ADR-035) — the founder never chooses it here.
  • AC-GEN-02 ↗ — a missing required fact (date, price) pauses generation and asks rather than inventing it; this form's required-field validation on the 5 un-inventable facts is the front-line guard before that pause path ever needs to trigger.
  • C-F2 ↗ (PRD § Setup Contract) — a missing optional workshop-block field (venue_or_parking, this card's only optional persona field) produces sparser page copy, never a pause.
  • AC-SETUP-01 ↗ — no control that starts a generation renders on this tab in any state, and no AI call, fetch, write or URL generation fires from it; the only forward action is “Continue to Connect”.
  • NEW (PRD debt) · cross-assistant field read + same-program scoping — same two criteria as the desktop half (frame 3b ↗): reading Workshop Booking's own generated booking-link value into this field is a new mechanism, not yet wired anywhere in the codebase, and the grab action must be gated on program identity match, not just any active Workshop Booking instance.
Design notes
  • No Generate button on this tab — anywhere. Personalize is setup: it collects the program's facts and previews the shape. The wizard's forward action is “Continue to Connect”. The write fires from the Activate tap on Try (frame 5b), which is the same confirm-before-charge moment every other assistant already has. A build that puts Generate here is drift, not a variant.
  • These facts belong to this instance permanently. One instance = one program = one kit. They are the facts the kit was written from, so editing them post-activation changes what a REWRITE draws on (frame 8) — it does not silently rewrite anything already delivered. A different program is a new activation (frame 11), never an edit of these.
  • No lens picker anywhere in this form (ADR-035, superseding the 2026-08-01 lens-picker-as-step-① lock). Which persona a card writes for is fixed at the card level, not chosen here — a founder only ever sees ONE persona block, whichever her activated card presets. This is Workshop Launch Kit's own screen, so its persona block is workshop fields; the shared-spine facts above it (program name, price, dates, location) keep the pre-existing “Sunrise Yoga Retreat” worked example, since those fields are persona-agnostic. Frame 3a draws the sibling Retreat Launch Kit card's own persona block alongside it purely for build-reviewer comparison, not as a toggle either card offers. The Explore persona filter routes a founder straight to the card matching her program, no in-form choice either way.
  • Event Runner and Online Course are future cards, not future picker rows — ADR-035's card family grammar (<Program type> Launch Kit) means a new persona is a new assistant_templates row + registry entry + persona module, never a new option in a form that no longer exists. See F0 for scope status on both.
  • Draft framing + the shared-notes box are drawn on both tiers — full reasoning, the required-set amendment and the pending picker-feasibility flag travel with the desktop half, sec-3b ↗. At 375 the only structural difference is that the composer, the fields and the CTA are all full-width in one column; nothing is dropped or deferred to desktop.
  • Field set follows prd-as-program-launch-kit.md § Setup Contract, with the 2026-08-12 required-set amendment applied (see 3b ↗ — awaiting Peyton's sign-off): shared-spine fields are program_name, program_hook, who_its_for, what_happens, price, dates_times, location, how_to_book, of which the PRD marks all 8 required and this frame draws 5 required (program_name, price, dates_times, location, how_to_book) + 3 satisfiable by field OR shared notes. This card's workshop persona block is materials_or_what_youll_make (now satisfiable either way), skill_level (a picker with a default, so never empty) + optional venue_or_parking. The sibling Retreat Launch Kit card carries the same 8 shared-spine fields + its own retreat persona block (accommodation, meals, travel_how_to_get_there, packing_themes, day_by_day — all 5 optional), drawn in frame 3a.
  • D-1 still applies — no Brain-readiness recap on this tab; readiness lives on Connect alone (sec-4). The docked “·· preview what you'll get ··” pill is D-2 Variant A; the sheet it opens is frame 3c.
dimmed Explore peeks — tap to return
Overview Personalize Connect Try

↑ Same 8 shared-spine fields as frame 3 (not repeated here) — the Retreat Launch Kit sibling card's own persona block follows.

Retreat details

All optional — a sparser answer means sparser page copy, not a pause.

What's the accommodation like? (optional)
Shared rooms, ensuite, garden views.
What's included for meals? (optional)
Three meals a day, vegetarian, local.
How do guests get there? (optional)
Airport pickup from Marrakech, included.
What should they pack? (optional)
Layers, a reusable water bottle, an open mind.
Rough shape of the days (optional)
Sunrise practice, free afternoon, communal dinner under the stars.
Continue to Connect
·· preview what you'll get ··
Sub-frame 3a · Retreat persona block (sibling card) [Activate]
  • Only the persona block differs between the two cards on this engine — the 8 shared-spine fields above it are identical to frame 3. accommodation, meals, travel_how_to_get_there, packing_themes and day_by_day are all optional (PRD § Setup Contract, retreat block) — a sparser answer means sparser page copy, never a pause.
  • AC-GEN-07 ↗ — same shared spine on the shared engine; only the persona block (0 required, 5 optional here) differs card to card. “Continue to Connect” stays disabled until all 8 shared-spine fields are filled — the completeness gate that protects the write on Activate; the retreat block itself never blocks it.
  • Drawn here purely so a build reviewer sees both persona blocks in one place — a founder on either card only ever sees her own. The preview panel (frames 3b / 3c) is likewise fixed per card, never a toggle — whichever persona a card presets, that's the one sample it ever shows.
This card's own preview — tap the pill, the example slides up
form dims behind — tap ✕ or drag down to return
This is a static example Because this is a generation assistant, we only show your real generated content after you activate.
Example — how a workshop kit looks

Description

One evening at the wheel. You'll throw, trim and glaze a mug that's fired and waiting for you two weeks later.

Page copy

Weekend Pottery Intensive — Saturday, 2–6pm
No experience needed. Clay, tools, glaze and firing are all included — bring nothing but short nails…

Launch blast

Doors open Saturday — Weekend Pottery Intensive. Six seats at the wheel, one afternoon. If you've been meaning to try this, here's your seat…

IG captions

“Six seats. One afternoon. Clay under your nails by 2pm.” — 3 ready to post.

Flyer copy

Weekend Pottery Intensive · Sat 2–6pm · No experience needed · Link to book below.

·· example, not your data ··
Sibling card's preview — Retreat Launch Kit, shown for comparison
form dims behind — tap ✕ or drag down to return
This is a static example Because this is a generation assistant, we only show your real generated content after you activate.
Example — how a retreat kit looks

Description

Five days in the Atlas Mountains — morning practice, long open afternoons, and one long group dinner together each night.

Page copy

Sunrise Yoga Retreat — Atlas Mountains, October 12–17
Five days. Five mornings of practice. Five long, unhurried afternoons with nothing on the calendar…

Launch blast

Doors open Friday — Sunrise Yoga Retreat, October. Six spots, five mornings, one long table. If you've been meaning to do this for years, this is the one to book.

IG captions

“Six spots. Five mornings. One long table under the stars.” — 3 ready to post.

Flyer copy

Sunrise Yoga Retreat · 12–17 Oct · Marrakech · Link to book below.

·· example, not your data ··
Frame 3c · Personalize preview · 375 [Activate]
  • Story — As a founder on my phone, I can see what the finished kit will look like before I switch anything on, without losing the form I'm filling in.
Acceptance
  • AC-SETUP-02 ↗ · AC-SETUP-03 ↗ — same two criteria as frame 3b, which are tier-agnostic: a labelled static example, fixed per card — never a founder-facing toggle. One PRD row covers both tiers.
  • Locks it must satisfy: D-2 (assistant-lifecycle) — mobile Personalize preview is Variant A only, a docked pill bar opening a bottom-sheet slide-up; Variant B is removed, don't reintroduce it.
Design notes
  • Desktop shows the preview beside the form (3b); mobile docks it behind a pill. Same content, same honesty labels, different affordance — the form keeps its full working height at 375 instead of losing half the screen to a panel.
  • Label it a sample, twice. Header names the example ("how a workshop kit looks"), footer is the .doc-mark "·· example, not your data ··". Never the founder's program name on this panel — a preview that borrows their program's title reads as their output, and it isn't.
  • Pill copy is "·· preview what you'll get ··" rather than on-brand-support's bare "·· preview ··" — this assistant has no live-reacting preview to speak of, so the pill has to say what it opens.
  • .pvpill is copied verbatim from on-brand-support.html — sticky bottom, keyboard and safe-area aware in build.
dimmed Explore peeks — tap to return
Overview Personalize Connect Try

These are notes, not the finished copy. Give us the facts, share your rough draft, or both — activating writes the kit in the voice you confirmed in your Brain.

The facts we can't guess
What's it called?
e.g. Weekend Pottery Intensive
Price
e.g. 95
USD
e.g. per person, all materials included
Dates & times
e.g. Saturday 14 March, 2–6pm
Where
e.g. Elm Street Studio, Brooklyn
How to book / get in touch
e.g. mysite.com/pottery-weekend

A WhatsApp link, your Workshop Booking assistant, or your website — wherever people reach you.

Everything else — however you've already got it
Rough draft, old flyer, voice notes, mood shots — drop it here
Paste last season's version, type a few lines, or just drop what you have. Nothing has to be tidy.
⊕ Or drop a file, photo or link — same box

Nothing is read or written yet — this rides along and the writer uses it when you activate. Used for this kit only; it doesn't change your Brain.

Or type it in — whichever you'd rather
What's the one-line hook? — or leave it
e.g. One afternoon at the wheel — throw, trim and glaze a mug that's yours to keep.
Who's this for? — or leave it
e.g. Total beginners who've never touched clay.
What happens (the shape of it) — or leave it
e.g. Two hours at the wheel, a break, then glazing — we fire everything after.
Workshop details
What will they make or learn? — or leave it
e.g. A finished mug or bowl, glazed and fired — yours to keep.
What skill level?
Beginner-friendly
All levels welcome
Intermediate
Advanced
Venue details / parking (optional)
e.g. Street parking on Elm; small lot behind the building.
Continue to Connect

Fill the five facts above to continue. Everything else can wait, or ride along in your notes.

·· preview what you'll get ··
Frame 3d · Personalize, empty · 375 [Activate] new
  • Story — As a founder opening this on my phone at 11pm, the first thing I see is that only five things are actually required, and that I can paste what I already have instead of composing anything.
  • 375 is where this state matters most — a single narrow column turns eleven empty boxes into a scroll with no end in sight, which is the exact feeling item 1 exists to remove. The grouping does the work: five facts, then the box, then the optional rest.
  • Full reasoning, the verified placeholder wiring, the disabled-CTA gate and the ⚠️ Workshop-card placeholder defect all travel with the desktop half — sec-3d ↗.
Overview Personalize Connect Try
What gets written, the moment you activate
Description
For your listing or booking page
Page copy
Headline, the days, what's included, how to book
Launch blast
The email or broadcast that opens it
IG captions
Three, for the launch week
Flyer copy
Short-form, print or story card
From your facts, in your voice — Brain confirmed Jul 20
The price
$3.00 writes your kit when you activate Want a piece rewritten later? That costs AI only, never another $3.00.
Name this one
Sunrise Yoga Retreat
Activate & write my kit — $3.00

Takes about a minute. You'll watch the five pieces come in.

Frame 5 · Try · 375 — the read-back before the write [Activate]
  • Story — As a founder about to turn this on, I see the five pieces I'm buying, where they come from, and what it costs — then the same button does both.
Acceptance
  • AC-GEN-01 ↗ · AC-BILL-04 ↗ · AC-GEN-06 ↗ · NEW (PRD debt — supersedes AC-LIFE-01) — the same four the desktop half carries; none is tier-specific.
Design notes
  • At 375 the two desktop columns stack in one order — what gets written, where it comes from, the price, the name, the button. No drawer, no second step.
  • Full design notes for this frame travel with its desktop half — sec-5b ↗.
Alternate state — a founder whose voice ISN'T confirmed yet (this journey's own Sunrise Yoga Retreat story has it confirmed since frame 4)
dimmed Explore peeks — activation in flight
Overview Personalize Connect Try
Writing your Sunrise Yoga Retreat kit
About a minute. Stay on this screen.
Checking your setup
Confirming billing$3.00
Writing your five pieces
Voice not confirmed yet — written from your business basics. Teach it your voice →
Description
ready
Page copy
writing…
Launch blast
writing…
IG captions
writing…
Flyer copy
queued
Going live
Frame 6a · Activating · 375 [Activate] was frame 9
  • Story — As a founder on my phone, I watch my five pieces finish one by one while the assistant activates, so a minute of waiting reads as work.
Acceptance
  • AC-GEN-01 ↗ · AC-GEN-08 ↗ · AC-BILL-01 ↗ · NEW (PRD debt — supersedes AC-LIFE-01, AC-RUN-01/02) — the same criteria the desktop half carries.
  • AC-RUN-03 ↗ — backgrounding the app mid-activation does not cancel the run; reopening returns to it with every per-piece status preserved.
Design notes
  • The 375 sample is 1 done / 3 writing / 1 queued; the desktop half is the same fan-out further along. Both are honest samples of one bounded shape, not two behaviours.
  • The Brain-gap banner is an ALTERNATE state, labelled as such above the frame — not this journey's own Sunrise Yoga Retreat story, whose voice was already confirmed at frame 4 (Connect) and restated at frame 5b (Try). It exists to document the component: an unconfirmed voice is only material once words are actually being written, so it surfaces here, not on Try. Amber = action register (canon U2), never emerald.
  • Full design notes for this frame travel with its desktop half — sec-6a ↗.
Live
Phase 4 · Monitor Pulse — read the kit, fix what's off, take it away. This card belongs to Sunrise Yoga Retreat forever
Kit v1, straight out of activation
Active Details →
Sunrise Yoga Retreat ASST-M3K9
Workshop Launch Kit
Workshop · 12–17 October 2026 · Marrakech
Kit
Ready — all 5 pieces · v1 · $3.00
After two pieces were rewritten
Active Details →
Sunrise Yoga Retreat ASST-M3K9
Workshop Launch Kit
2 pieces rewritten since v1 — last one an hour ago
Kit
Ready — all 5 pieces · $3.00 kit + $0.04 rewrites
A piece rewrite in flight new, closes the coverage gap
Active Details →
Sunrise Yoga Retreat ASST-M3K9
Workshop Launch Kit
Rewriting Launch blast…
Kit
4 of 5 ready · 1 rewriting · $3.00 kit + $0.02 rewrites
Frame 7 · Pulse post card — one card, one program [Monitor]
  • Story — As a founder, the card on Pulse is named for my retreat, tells me the kit is ready, and opens it — and the spend line shows me the one kit fee plus whatever the rewrites actually cost. If I step away mid-rewrite, the card itself tells me a piece is still being written, not just the screen I left.
Acceptance
  • AC-BILL-01 ↗ — one kit, one settled debit; the “$3.00 kit” half of the spend line is that debit and it never increments.
  • AC-BILL-07 ↗ — a partially-failed kit (≥1 piece delivered) is still charged in full, which is why the line reads a fixed kit fee rather than a per-piece tally.
  • NEW (PRD debt — supersedes AC-RUN-01) — Given an activated instance, when its Pulse card renders, then it is titled with the PROGRAM name, its metrics line reads the kit's readiness + version + spend, and its primary action opens that kit. There is no zero-kit state — AC-RUN-01's “none yet · $0.00 spent” empty card can no longer occur.
  • NEW (PRD debt) — Given one or more pieces have been rewritten, when the card renders, then the spend line separates the fixed kit fee from cumulative rewrite AI spend (“$3.00 kit + $0.04 rewrites”) and never restates $3.00 as a running total.
  • NEW (PRD debt) · rewrite-in-flight card state — Given a founder has confirmed a rewrite from the composer (frame 8), when that piece has not yet finished regenerating, then this instance's Pulse card shows an in-flight indicator naming the piece and a count reading “N of 5 ready · 1 rewriting”, distinct from both the resting-ready state and the just-finished “rewritten since v1” state. “Details →” — the card's one doorway — stays live throughout and returns the founder to frame 8/9, where the same piece's row already shows .acc-status.generating in place of the composer, the identical component frame 6a established for the original write. No new row component is needed there.
Design notes
  • The card is titled for the PROGRAM, not the template or a generic nickname. One instance = one program, so “Sunrise Yoga Retreat” leads and “Workshop Launch Kit” steps down to the sub-line (D4). A second program is a second card, with its own ID chip (C6).
  • Archetype conformance fix (2026-08-04, Peyton /design review): “Details →” is the ONLY doorway, not a second pill. An earlier pass added a “Review kit” btn-primary pill alongside “Details →” — confirmed drift against the canonical pattern every one of the master artifact's ~15 .pcard instances follows: “quiet 'Details →' doorway”, singular (assistant-flows/assistant-lifecycle.html:1797; archetype assistant-summary-card.md self-check #9: “the detail doorway is a quiet 'Details →' TEXT link, not an icon/kebab button” — a second pill is the same violation, just a button instead of an icon). Removed from all three states; nothing on this card triggers a generation any more, so there was never a “spend again” label to protect against — “Details →” alone already opens the Pulse tab (frame 8), no new wiring concept.
  • The multi-kit machine is gone. No “3 written · $9.00 total”, no “Last kit — Weekend Pottery Intensive”. A card that counts kits implies one instance can hold many; it can't. Weekend Pottery Intensive is a different card (frame 11).
  • Version lives on the KIT, not the card, once refinement starts. v1 shows while the kit is untouched; after a rewrite the card reads “2 pieces rewritten since v1” because versions are per-piece, not per-kit (frame 9).
  • The in-flight state reuses the exact dot vocabulary frame 6a already established.acc-status.generating, amber, pulsing (reduced-motion kills the pulse). No new status language for the same “writing right now” fact.
  • No ▶⏸⏹ run controls — there's no continuous running state to play/pause/stop. Pausing the instance stays on “Details →”.
Pulse dims behind — revealGap · app header stays visible above (C1)
Sunrise Yoga RetreatASST-M3K9
Program Launch Kit · active since Aug 12
Pulse Overview Personalize Connect
Pieces
5 of 5
Rewrites
0
Written
Aug 12
Cost
$3.00
The kit Rewrite several ⌄
Description
The short paragraph for your listing or booking page
Copy
Page copy
The full page — headline, the days, what's included, how to book

Sunrise Yoga Retreat — Atlas Mountains, October 12–17

Five days. Five mornings of practice. Five long, unhurried afternoons with nothing on the calendar. This retreat is for women who've thought about doing this for years and never quite booked it — and don't want to walk in alone.

$1,450 per person, shared room · 12–17 October 2026
Book at mysite.com/october-retreat.

Version
v1 — as written
Written
Aug 12, 9:41
Copy▸ Not quite? Share anything and we'll rewrite it
Launch blast
The email or broadcast that opens it

Doors open Friday — Sunrise Yoga Retreat, October

Six spots, five mornings, one long table. If you've been meaning to do this for years, this is the one to book. Full details and the booking link are below.

Version
v1 — as written
Written
Aug 12, 9:41
Copy
What's off about this one?
Too salesy for my list — they've been with me a while. Warmer, shorter, and mention it's the last retreat before winter. Here's how last year's one read →
⊕ Or drop a file, screenshot or link — it goes in this same box
last-year-blast.pdf  ×
Rewrite this piece

AI cost only — charged as used, a few cents. Your $3.00 kit fee doesn't move.

Used for this rewrite only — it doesn't teach your Brain. Your voice, prices and policies stay where they are.

IG captions
Three, to post across the launch week
Copy
Flyer copy
Short-form, for print or a story card
Copy
Take it with you
Save to Google Doc Copy all

All 5 pieces, plain text — a new Doc in your Drive, yours to edit there. Single pieces still copy one at a time above.

HOST — this is the Pulse TAB of the post detail modal, not a standalone sheet corrected 2026-08-12
  • Frames 8/9/10/10b are the Pulse tab of AssistantDetailModal.post.tsx, reached by the Pulse card's one doorway (“Details →”, AC-RUN-01) — the same tabbed shell every other activated assistant opens into. Post tab set is Pulse · Overview · Personalize · Connect, Pulse first and default, no Try (R30). The kit is never a second sheet stacked on that modal, and never a sheet that replaces it.
  • Why this is a correction. What shipped (#3115, widened in #3313) bypasses the tabbed modal and opens LaunchKitReviewSheet standalone, on the strength of a code comment citing the PRD (“§ Setup Contract — no Pulse tab exists for this surface”). That clause does not exist — the sentence appears nowhere in docs/. The PRD says “Pulse card” throughout (the card on the Pulse page) and names “Details →” as its one doorway — which IS the tabbed modal. ADR-035 is scoped to card cardinality and naming and says nothing about the host. The bypass has no spec behind it.
  • The bug it caused is the one Peyton reported: no tab strip at all, and where surfaces DID fall through to the generic modal, empty/partial Personalize and metrics duplicated onto Overview. Those are generic-modal bugs to fix, not reasons to route around the shell — LaunchKitReviewSheetHost's own docstring names exactly those symptoms as the motivation for widening the bypass.
What the Pulse tab shows here — band SUPPLEMENTS, run feed is REPLACED
  • Metrics band: kept (supplement). The band is the shared Pulse-tab signature (R30) and shell-language #7 (journey coherence) — dropping it makes this assistant's post modal read as a different product. Drawn on every post frame above; only the values change.
  • Run-activity feed: replaced by the kit accordion. For a one-shot generation assistant the accordion IS the run history, in richer form — a feed reading “Kit written” / “Page copy rewritten” restates the five rows sitting directly under it. Two lists describing the same five artifacts is the duplication Peyton flagged, and D-5's “Pulse tab is the ONE host” is an anti-duplication rule. Read it as R30's “run feed” rendered as content rather than as event lines, not as an exemption from R30.
  • Failed piece → the D-5 flag, not a bespoke banner. Frames 10/10b render the standard “Waiting on you” pending item at the TOP of the tab body, above the band, reusing the sanctioned pattern (assistant-lifecycle.html frames 9b/12) instead of inventing a Launch-Kit alert. Max ONE pending item.
  • The other three tabs get their normal generic content — no Launch-Kit branch. Overview = the same “What it does” product copy as pre-activation, word for word (R28), carrying no metrics (those live here) and no “Your setup” block (R29). Personalize = the program-facts read-back the founder entered at setup, with frame 9c's edit-class gating — a blank or partial Personalize is a bug, not a state. Connect = the AI Model + Brain Check surface already drawn in frame 4, plus the optional Google connect.
  • Header follows D-4 + R17: status dot · instance name · inline-rename pencil · ASST-id lead; template name and active-since step down to the sub-line. The kit status summary (“Kit ready — all 5 pieces”) moved OFF the header — it is tab-body content, and the band plus the accordion carry it now.
  • OPEN — needs Peyton's confirm at sign-off (drawn, not assumed): the band's first three KEYS deviate from frame 9b's generic Runs · Healthy · Last run. Drawn here as Pieces · Rewrites · Written because “Runs 1 / Healthy 100%” is vacuous for a one-shot write. The fourth slot holds the line: Cost is present and BINDING per the 4-slot taxonomy (volume / health / recency / cost, metrics PRD §0.5) — a diverging per-type band may rename the first three, never drop cost. If Peyton prefers strict 9b parity, revert to the four generic keys — do not let the build pick.
  • Cost here is LIFETIME, not month-to-date — kit fee + every rewrite since activation (AC-RFN-06/07), which for a one-shot assistant is the only window that means anything. It is deliberately NOT the Spent (month-to-date) key frame 9b's generic band carries; same slot, different window, so the two labels must stay different. The spend sentence under the accordion stays as well — the band is the glance, the sentence is the itemisation; that is not a one-home-per-metric break.
  • No run controls (⏸ ⏹) in the header, unlike frame 9b. Pause/stop are meaningless on an assistant whose entire run happened once at activation, and a control that cannot do anything is worse than an absent one. Also Peyton's confirm.
The reading room — how a piece reads once it's open item 6 · 2026-08-12
  • GO-vs-DO ruling: neither. Reading a piece stays INLINE in the accordion — it is not a sheet and not a PageSlideOver. Walked the archetype's tree honestly and both doors fail. It isn't GO-somewhere: a kit piece is not another page's real content, it has no route, no URL and nothing to go back to — and the archetype's 2026-07-01 lock is explicit that “a data-review-and-decide panel is a sibling sheet, never a PageSlideOver”, which is exactly what reading-then-deciding-to- rewrite is. It isn't DO-something either: reading is not a task you complete and dismiss. And a bottom sheet stacked on this modal would gain zero pixels — the tab body is already the full surface width, so the sheet would be the same measure with more ceremony (lesson slide-metaphor-without-the-space: a new entrance is not new space), while hiding the other four pieces a founder is usually comparing against. The generation archetype settles it outright — self-check #6: “multi-piece results are a vertical accordion with per-piece retry/copy”. A per-piece sheet would fail this surface's own archetype.
  • What Peyton actually asked for was the TYPOGRAPHY, and that's what changed. The reference she named — the Brain's persona/playbook template sheets — is ExamplePlaybookPanel.tsx, which is a panel, rendered inline, not a sheet. Its read is the prose ramp (SheetProse.tsx), a typographic contract, and that is what the expanded row now adopts: header block → ONE hairline → prose at --fg-70 font-weight 300, real paragraph rhythm, measure capped at 66ch, and no boxes around prose. The ROW HEAD is the header block — piece name + description — exactly as the ramp's sticky .sheet-header band is in a real sheet, so the body opens straight onto the single hairline and then the prose. An in-body eyebrow repeating the piece's name was drawn in the first pass and removed on review: that is the “never a second title” / double-spine failure the ramp names explicitly (#2498). The one surviving eyebrow on this surface is Rewriting in frame 8b's sheet, which labels a chip list rather than restating a title. The old body was 12px --fg-55 dense text with a stray outline button floating mid-content; the new one reads like the playbook panel she pointed at.
  • Actions moved to a quiet row at the FOOT of the body, not mid-prose. Copy and the rewrite affordance sit together under a hairline, so the prose runs uninterrupted from eyebrow to last line. Previously Copy was a .btn-outline pill wedged between the copy and the refine line — two competing weights inside a reading surface.
  • The metadata rail is where Peyton's “use the horizontal space” instinct belongs (item 5, redirected — see the layout note below). Version, written/rewritten time and, on a rewritten row, the prior-version reveal sit in a 176px rail BESIDE the prose column. This is the sanctioned vertical-first exception — a metadata rail next to a reading column, not a grid of interactive tiles — and unlike the kit-level band it is genuinely per-piece data, which is the only level versions exist at. At ≤800px the rail stacks under the prose; nothing is dropped.
  • Composes with the formatting contract, does not replace it. Branch fix/3397-kit-content-formatting (commit 20d396d9) locks what happens INSIDE the prose: \n\n → new paragraph, single newline → <br> in the same block, **text** → real inline bold (raw asterisks never reach the screen), and IG's N. markers → numbered .cap-cards. This note governs the RAMP around that prose — eyebrow, hairline, measure, rail, action row. The two are orthogonal and both apply; the caption cards are the one deliberate exception to “no boxes around prose”, because three alternatives are distinct selectable objects, not one prose run. Build must land both — merging one without the other leaves either raw asterisks in a beautiful ramp, or parsed text in the old dense block.
Row grammar — “ready” is gone, the description is back item 7 · 2026-08-12
  • The sub-line slot now holds the piece's DESCRIPTION by default; status text only replaces it in error/warning states. Five rows reading “ready” under a green dot is the same fact said twice, and it burned the one line that could have told a founder what “Flyer copy” actually is. The emerald dot carries readiness alone (shell-language #4: status-is-a-dot). Amber and red rows keep their text verbatim — “couldn't write this one — 2 of 3 retries left”, “didn't write — this one's on us, not your input” — because a dot cannot carry a countdown or a cause.
  • Descriptions are lifted VERBATIM from frame 5b's “what gets written” list, not newly written here. What she was promised before activating and what she sees after are now the same five sentences — a founder who read the Try tab recognises every row. Don't let build re-draft them.
  • ready · 3 on IG captions is retired — the “3” was the only real information in it and it now lives in the description (“Three, to post across the launch week”).
  • Version chip + recency move RIGHT, into .acc-meta, on the same baseline as the name — the prose ramp's own heading-left/metadata-right grammar. rewritten just now is recency, not status, so it does not compete with the description for the sub-line.
  • Every collapsed done row now shows a chevron. Previously only rows the mockup happened to draw expanded had one, so four of five rows looked like dead text with a Copy link. The chevron IS the “there's copy in here to read” affordance Peyton named.
Layout — the column widened, the band stayed put item 5 · 2026-08-12
  • Recommendation: do NOT move the metrics band to a right rail. Two reasons, and the second is the binding one. (1) The band is the shared Pulse-tab signature (R30) — every other activated assistant's post modal carries it as a full-width 4-up row directly under the tab strip; re-siting it on one assistant breaks shell-language #7 (journey coherence) for a layout gain, and the ledger beats parity. (2) A kit-level version list cannot exist — versions are per PIECE, never per kit (frame 9's standing lock), so half of what the proposed rail would hold has no kit-level referent to hold. Squeezed into a 176px rail the four band numbers would also stack into a vertical list, losing the at-a-glance row that is the band's whole job.
  • The dead space was a width bug, not a placement one. This tab body was capped at max-width:760px inside an 1180 surface — and frames 10/10b were capped at 640px, two different widths for the same surface. All four now use the sheet archetype's standard work column (chrome.column, 1120px, centered), with the prose measure capped INSIDE it at 66ch so long copy never stretches (archetype self-check #13). That alone reclaims the empty right third Peyton screenshotted.
  • Peyton's instinct was right about the space and right about the shape — it just applies one level down. The horizontal room genuinely earns itself beside a piece's prose, holding that piece's own metadata, which is what the reading room's .acc-rail now does. Kit-level, the band above a full-width column is correct; piece-level, the rail beside the prose is correct.
Button labels — short verb, caption carries the rest item 3 · 2026-08-12
  • Rule locked here and applied file-wide: a button label is a verb phrase of ≤4 words naming the action. Counts, conditions, prices and consequences go in a .btn-caption line under the button GROUP — never inside the label. A label that grows with state (“the 4 finished pieces” → “the 5 finished pieces”) reflows the control every time the data moves, and a full sentence in a pill is a paragraph you must parse before you can tap.
  • Swept the whole file, not just the row screenshotted: “Save the 4 finished pieces to a Google Doc” → Save to Google Doc · “Copy the 4 finished pieces” → Copy all · “Copy the whole kit” → Copy all · “▶ Rewrite this piece — AI cost only” → Rewrite this piece · “Connect Google to save it as a Doc” → Connect Google. Every displaced clause landed in the caption directly beneath.
  • The ▶ glyph is dropped. It is the run/play glyph, borrowed onto an action that isn't a run, and it was the only decorative mark on the surface.
  • Three labels deliberately KEPT long — stated so the sweep isn't read as having missed them. (1) “Activate & write my kit — $3.00” (frames 5/5b) is a standing lock that outranks this rule: “never a bare Activate here — a founder who doesn't know the tap spends $3.00 has been ambushed.” Confirm-before-charge beats label brevity, every time. (2) “Rewrite these 3” (frame 8b) keeps its number because the count is the scope the verb takes, not a condition on it. (3) “Set up a kit for another program →” (frame 11) keeps “for another program” because dropping it leaves “another kit”, which reads as a second kit for THIS program — the one thing this instance can never do. Scope stays in the label; conditions leave it.
  • “ready” survives in ONE place — the activation stream (frames 6a/6a). There the accordion is a live progress feed, not a library: a row that just flipped from “writing…” needs to say so, and a piece description would answer a question the founder isn't asking mid-write. Item 7's cull is scoped to the post-activation review rows — build must not strip “ready” globally.
  • NEEDS PEYTON'S CONFIRM — this is a deliberate reading of AC-DLV-04, which requires “every delivery affordance names the real count”. The count is still named, in full, in the caption immediately under the button group (“Your 4 finished pieces — Launch blast isn't in it”), and the payload still matches exactly. I read that as satisfying the criterion — the criterion's real target is silent omission, which this doesn't do — and arguably reading it better, since the caption can also name WHICH piece is missing where a label can't. But it does move the count out of the label the AC was written against, so it is her call, not mine.
Frame 8 · The kit — read, refine, deliver [Monitor] was 10; refine block is new
  • Story — As a founder reading my finished kit, the one piece that isn't right gets fixed by telling it what's off — in the same box I share anything with — instead of me rewriting it myself or paying for a whole new kit.
Acceptance
  • AC-DLV-01 ↗ · AC-DLV-03 ↗ — Google Doc export runs through the existing google-resources route and hands back a URL; per-piece and whole-kit Copy work with no connected app and no extra charge.
  • AC-GEN-04 ↗ — the program facts that produced this copy are never written to the Brain, and neither is anything shared in the rewrite composer.
  • NEW (PRD debt) · corrective rewrite — Given a delivered piece, when the founder submits feedback through the composer and confirms, then only that piece regenerates, the other four are untouched and unbilled, and no second price_per_run debit occurs.
  • NEW (PRD debt) · rewrite billing — Given a rewrite runs, when it settles, then it writes an ai_usage row only; the UI states “AI cost only” before the tap and never renders an authored per-rewrite figure.
  • NEW (PRD debt) · per-run context boundary — Given anything shared in the rewrite composer, when the rewrite completes, then that material is scoped to that regeneration and never persisted to brain_documents or any Brain surface.
Design notes — the refine surface
  • The header carries NO run controls — ✕ only, and that is deliberate. The lifecycle master draws ⏸⏹ (Active) / ▶⏹ (Paused) in the post-modal header for a continuously-running assistant, where pause and resume are real, meaningful acts on work in flight. This assistant has no work in flight: the run happened once, at activation, and the only repeatable act is a rewrite, which is priced, per-piece, and lives on the row of the piece it changes. A ▶ here could only mean “write the whole kit again for $3.00” — the one thing this surface must never offer as a bare glyph — and ⏸ would offer to pause something that isn't running. Inherited by frames 8c and 8d, which render the same header. Status stays Active, not Completed — “Activated” promises the capability to write kits, never a delivered artifact (2026-08-01 generation lock); every state in this file draws Active for a written kit, and the D3 ladder's neutral Completed rung is for an assistant that is genuinely finished and lives in Past.
  • One composer, not a form. Type, paste, or drop a file — and the file lands as a chip inside the same box. Never tabs, never a separate upload step (“one job, one surface” lock, 2026-06-06). Classes are the shipped share-door grammar (.composer / .dropzone / .chip-file, per support.html and BrainShareSheet.tsx) retokenised to this file — build reuses that component, it does not fork one.
  • Collapsed by default, one open at a time. The resting affordance is a quiet line — “Not quite? Share anything and we'll rewrite it” — under the piece's own copy, so a founder happy with the kit sees five clean rows. Page copy above shows the collapsed state; Launch blast shows it open. Both are drawn so the build can't guess.
  • “Edit” means share feedback → regenerate. There is no in-app text editor anywhere in this flow (Peyton ruling). Hand-tweaks happen after Copy or in the exported Doc — which is exactly why the delivery block earns its place in v1.
  • Price is named before the tap, quietly. “▶ Rewrite this piece — AI cost only” + “charged as used, a few cents per rewrite”. No invented figure: the real number arrives at settlement, same honesty as the Brain page's paid-generate treatment (#3070). The $3.00 is never re-quoted here — it was the kit fee and it is paid.
  • The boundary line is not optional chrome. “Used for this rewrite only — it doesn't teach your Brain.” Founders have been taught that the share-anything box saves to the Brain (save-first share door, locked 2026-08-01); reusing that grammar without correcting the expectation would be a lie by association. A “worth keeping? Save to your Brain” bridge is F2, not Active.
  • Delivery is unchanged and unconditional. drive.file covers create (_shared/providers.ts), the create-and-write helper already ships (google-resources/index.ts, POST {type:'document', name, content}), precedent is useBrainExport.tsx:exportToGoogleDoc. Plain text only — the helper writes one insertText; don't draw a formatted Doc. PDF stays deferred (F4).
  • “Write another kit” is gone. This instance has one kit. The next program is a new activation (frame 11), so nothing on this surface offers a second $3.00.
① selection mode — the section header turned it on; a founder happy with her kit never sees this chrome
Sunrise Yoga RetreatASST-M3K9
Program Launch Kit · active since Aug 12
Pulse Overview Personalize Connect
Pieces
5 of 5
Rewrites
0
Written
Aug 12
Cost
$3.00
Pick what's off Cancel
Description
The short paragraph for your listing or booking page
Page copy
The full page — headline, the days, what's included, how to book
Launch blast
The email or broadcast that opens it
IG captions
Three, to post across the launch week
Flyer copy
couldn't write this one — try again first, rewriting needs something to correct
Try again
3 of 5 selected · Select all Rewrite these 3

3 separate rewrites — AI cost only, charged as used, a few cents each. Your $3.00 kit fee doesn't move.

② the sheet RISES from the bottom over the receded tab — one direction, applied to all three
Sunrise Yoga Retreat
Pulse Overview Personalize Connect
Pieces
5 of 5
Rewrites
0
Written
Aug 12
Cost
$3.00
Rewrite 3 pieces
One direction, applied to all three — they come back separately
Rewriting
Page copy  × Launch blast  × IG captions  ×
What's off about these?
All three lean too hard on “transformative” and the retreat-speak. Plainer, warmer, and say it's the last one before winter. Here's how last October's set read →
⊕ Or drop a file, screenshot or link — it goes in this same box
last-october-set.pdf  ×
Rewrite these 3

3 separate rewrites — AI cost only, charged as used, a few cents each. Your $3.00 kit fee doesn't move.

Used for these rewrites only — it doesn't teach your Brain. Your voice, prices and policies stay where they are.

Frame 8b · Rewrite several [Monitor] new
  • Story — As a founder whose kit is off in the same way across three pieces, I tick those three, say once what's wrong, and get three rewrites — instead of typing the same correction three times or paying $3.00 for a whole new kit.
GO-vs-DO ruling — a bottom sheet, and NOT a right-hand slide-over
  • This is DO-something, so it rises from the bottom. “Rewrite these three with this direction” is a self-contained task the founder completes and dismisses — no identity, no URL, no back affordance, not another page's content. That is the archetype's bottom-sheet row, unambiguously (ModalWrapper presentation="sheet", nested over the detail modal: nestedBackdrop true, broadcastCloseAll false so closing it returns to the tab rather than the whole modal).
  • Peyton said “slide in from the right” and I'm not building that — here's why. The system has exactly two sanctioned directions and a right-slide is neither: ⇧ bottom for DO-something, ⇦ LEFT for GO-somewhere (PageSlideOver, and only for a REAL page like Brain edit or Team saved). Adding a right-slide would mint a third direction for one surface, and it would carry the GO-somewhere reading — this is a destination — for something that is plainly a task. I think what the instinct is actually reaching for is “don't make the list disappear”, and the bottom sheet answers that better: the tab recedes behind it with the selection still visible above the sheet's top edge, so she can see what she picked while she types. If she wants the literal right-slide after seeing this, that's a ledger change, not a build variant — say so and I'll take it back to the archetype.
  • Single-piece rewrite does NOT become a sheet. One piece keeps the inline composer inside its own expanded row (frame 8, already shipped) — it has a row to live in, and pulling it into a sheet would cost a ceremony for nothing. The sheet exists only because a multi-piece direction has no single row to belong to. One composer component, two hosts.
Acceptance
  • NEW (PRD debt) · multi-piece corrective rewrite — Given 2 or more delivered pieces are selected, when the founder submits one direction, then each selected piece regenerates independently, unselected pieces are untouched and unbilled, and no second price_per_run debit occurs for any of them. Extends the existing single-piece criterion in frame 8; the backend mode:'kit_rewrite' path is per-piece today, so this is N calls, not a new batch mode.
  • NEW (PRD debt) · N rewrites, N charges, stated before the tap — Given N pieces selected, when the confirm renders, then the caption states N separate AI charges and never implies a bundle price. No authored per-rewrite figure appears (same honesty as the single-piece path) — only the count and “charged as used”.
  • NEW (PRD debt) · a failed piece is not selectable — Given a piece whose status is failed, when selection mode is on, then its checkbox is disabled and its row states why (“try again first — rewriting needs something to correct”). Retry and rewrite stay separate verbs (frame 10's two-verb ledger); a failed piece has no text to correct.
  • NEW (PRD debt) · direction is shared, results are not — Given one direction applied to N pieces, when the rewrites settle, then each piece gets its own version bump, its own ai_usage row and its own prior-version snapshot; a partial failure leaves the succeeded pieces rewritten and names only the failed one.
  • AC-GEN-04 ↗ — nothing shared in the multi-piece composer reaches the Brain, same boundary as the single-piece composer.
Design notes
  • Selection is a MODE, entered from the section header, so the resting kit stays clean. “The kit  Rewrite several ⌄” → the header becomes “Pick what's off  Cancel”, checkboxes appear left of the status dots, per-row Copy and chevrons stand down, and a selection bar appears under the list. A founder who likes her kit never sees a checkbox. Persistent checkboxes on five rows she's happy with would be permanent chrome for a rare action.
  • The checkbox sits LEFT of the status dot, and the dot never moves. Status is the row's identity (shell-language #4); selection is a transient overlay on it. Swapping the dot for a checkbox would hide which pieces are healthy at exactly the moment she's deciding which to change.
  • ONE composer, one direction, and the scope is visible while she types. The selected pieces render as removable chips directly above the box, so “these” is never abstract — and she can drop one out without leaving the sheet. Same .composer grammar as everywhere else (“one job, one surface”); build reuses LaunchKitRewriteComposer.tsx with the label and submit text as props, exactly as the Personalize instance does (frame 3b) — three hosts, one component, never three components.
  • The count is in the button and that is deliberate. “Rewrite these 3” is 3 words and the number IS the action's scope, not a condition on it — item 3's rule is about clauses, not about a scope the verb genuinely takes. The per-charge consequence still moves to the caption.
  • Sheet body is prose-width (720px), not the 1120 work column. One composer and a chip row is a single-column task; stretching it to the full surface would leave a 400px dead zone beside a textarea. Archetype chrome.prose.
  • No “rewrite the whole kit” as a distinct action. Selecting all five IS that, via “Select all” — one mechanism, five checkboxes. A separate whole-kit button would be a second path to the same outcome, priced identically (5 AI charges), and would read dangerously close to “write a new kit for $3.00”, which this surface must never offer.
Pulse dims behind — revealGap · app header stays visible above (C1)
Sunrise Yoga RetreatASST-M3K9
Program Launch Kit · active since Aug 12
Pulse Overview Personalize Connect
What it does

Give it the date, price, venue, and what they'll make — your own facts, or a facilitator's if you're the venue — and it writes the launch set in your voice: description, page copy, launch blast, IG captions, flyer copy. Pairs with your registration page: generate the kit, then fire the launch.

How it works
01
Teach it once
Your voice, in the Brain.
02
Save the program's facts
What, when, price, who it's for.
03
Tap Activate
Turns it on and writes the kit — same tap.
04
Writes the launch kit
5 pieces, your voice.
Kit ready to use
Copy it, save it to a Doc, or ask for a rewrite.
Key benefits
In your voice — the one you confirmed
No re-explaining your voice, your prices, your policies every launch. It already knows.
Never invents a fact you didn't give it
Missing a date or a price? It asks — it never guesses and never ships a made-up detail.
No staring at a blank page five times
Description, page copy, launch blast, IG captions, flyer — all out of one set of facts, not five starts from scratch.
Written to feed your launch page, not replace it
Description and page copy come out sized for Waitlist + Launch — one program's facts in, ready to paste.
Frame 8c · Post Overview — identical to pre [Monitor]
  • Story — As a founder who now relies on this thing, I open Overview and get the same plain answer to “what does this do?” I read before I set it up. Nothing about runs, money or my own setup is re-stated here — I know where those live.
  • The frame exists because the tab became reachable. Before the tab shell landed, Launch Kit opened its own sheet and this tab never rendered, so it was never drawn. It is drawn now because a shipped state the mockup never depicted is a blocker, not a note.
Design notes
  • R28 — this body is frame 2's, unchanged. What it does · How it works · Key benefits: same copy, same 5-node flow, same 4 benefit cards. A post-only rewrite of the product description is forbidden — two descriptions of one assistant drift, and the founder loses the plain answer exactly when she starts depending on it. The only pre/post difference is the SHELL (status dot, instance name, tab strip), never the copy.
  • What is deliberately absent, and where each thing lives instead. No metrics band — that is frame 8's, on Pulse. No “what's next” card, no run-again button, no price: the kit is written from the Pulse tab and nowhere else (2026-08-01 generation lock). No activation dates, period list or run-event feed. And no “view output in…” link — the tab strip is already the way to another tab, and a link that duplicates a tab is a second door to one room.
  • R29 — no setup read-back. What she configured is read AND edited in Personalize (frame 8d); Overview never re-derives it.
  • No run controls in the header — the same header renders on every post tab, so the rule is set once on frame 8 and inherited here.
Pulse dims behind — revealGap · app header stays visible above (C1)
Sunrise Yoga RetreatASST-M3K9
Program Launch Kit · active since Aug 12
Pulse Overview Personalize Connect

Your kit was written from these. Change the notes and ask for a rewrite on the piece that's off — the program's own facts stay put.

This program — set when you activated
What's it called?
Sunrise Yoga Retreat
Price
1,450
USD
per person, shared room
Dates & times
12–17 October 2026
Where
Marrakech, Morocco

These don't change here — a different program is a different kit. ↗ Activate a new Launch Kit →, prefilled from this one.

Change anytime — used the next time a piece is written
How to book / get in touch
mysite.com/october-retreat

Moved your booking link? Change it here, then rewrite the pieces that carry it.

What's the one-line hook? — optional
Five mornings of yoga, five long lunches, zero notifications.
Venue details & parking — optional
Riad in the medina, 10 min from Jemaa el-Fnaa. No parking — taxis drop at the gate.
Everything else — however you've already got it
Rough draft, old flyer, voice notes, mood shots — drop it here
Same as last October but warmer — it's the last one before winter.
⊕ Or drop a file, screenshot, photo or link — it goes in this same box
last-october-flyer.pdf  ×

Saved with this assistant and used the next time a piece is written. Nothing is read or rewritten until you ask — and it doesn't change your Brain.

Changing these doesn't rewrite anything by itself Your kit stays exactly as it is until you ask for a rewrite — piece by piece, or several at once, from the kit itself. Open the kit →
Your kit — as written

Sunrise Yoga Retreat — Atlas Mountains, October 12–17

Five days. Five mornings of practice. Five long, unhurried afternoons with nothing on the calendar.

Description · Page copy · Launch blast · IG captions · Flyer

Your real kit, not a sample — the example preview belongs to setup (frame 3b), before anything was written. Read and rewrite it →

Frame 8d · Post Personalize [Monitor] PROPOSED — Peyton's call
  • Story — As a founder whose kit is already written, I can see everything it was written from, change the things that are genuinely still mine to change, and I'm never left wondering whether editing a box silently rewrote my copy or charged me.
  • The open question this frame exists to settle. Today every field on this tab is a live, freely-editable input that saves silently — the same generic form the wizard uses. That is shipped behaviour, not a drawn decision. Two things need a ruling: (a) which facts a written kit may still change, and (b) whether a change ever triggers a rewrite by itself.
  • What this frame proposes — the program's identity (name, price, dates, place) reads back but doesn't edit; the booking link and the notes stay editable; and editing NEVER regenerates on its own, because rewriting is an explicit, priced act taken on the kit itself.
Design notes
  • A6's three edit classes, read onto a generation assistant. A6 (Peyton-approved 2026-08-02, lifecycle frame 9c) names them: Safe — editable while Active, applies next run; Structural — locked while Active, “Pause to change”; Identity — never edited in place in any state, always pointing at start-fresh. A6's own example of Identity is “offering name, event dates, deposit arrangement” — almost exactly this assistant's fact block. This frame applies that reading. It has no Structural class at all: nothing here is a live message template or a connected payment account.
  • The contradiction that needs resolving, stated plainly. The 2026-08-01 generation lock says a kit for a different program is “edit the facts in Personalize, then run again — there is never a second facts form.” Frame 11 and AC-LIFE-03 say a different program is a NEW instance (“one instance, one program”). Both cannot hold. This frame draws the second, because the Pulse card, the metrics band and the spend line are all named for ONE program — editing the name in place would silently relabel a card whose kit was written for something else. If the first is picked instead, the fact block becomes editable and frame 11 loses its reason to exist.
  • Nothing on this tab spends money, and it says so. Rewriting is the priced act and it lives on the kit (frames 8 / 8b), where the piece being rewritten actually is. A regenerate control here would be a second, cheaper-looking door to a charged action, with no piece in front of it to name.
  • The right pane shows the REAL kit, not the example. The static example preview is a setup affordance (frame 3b) whose whole job is showing a founder what she'll get before anything exists. Once the kit is written, a fabricated sample beside her real copy is the honesty failure the preview rules exist to prevent. Same R32 mechanic, different content.
  • No history sections on this tab. “Activation history” and “change history” are drawn nowhere in this file or the lifecycle master, and neither is something a founder came to Personalize to read. Per-item version and timestamp already live in the kit's own metadata rail (frame 8), the sanctioned home for them; a full multi-version history is F3, Future, and per-piece — not per-tab.
  • Class treatment is typographic, not a padlock. Identity fields render as quiet read-back rows with one line naming the real path out. No lock glyphs, no disabled-looking inputs a founder taps anyway — a field that can't be changed shouldn't look like a field that failed.
Pulse dims behind — revealGap
Sunrise Yoga RetreatASST-M3K9
Program Launch Kit · active since Aug 12
Pulse Overview Personalize Connect
Pieces
5 of 5
Rewrites
1
Written
Aug 12
Cost
$3.02
The kit Rewrite several ⌄
Description
The short paragraph for your listing or booking page
Copy
Page copy
The full page — headline, the days, what's included, how to book
Copy
Launch blast v2
The email or broadcast that opens it
rewritten just now

One more before winter — October in the Atlas Mountains

You've been on this list a while, so you'll know the shape of it: five mornings of practice, five long afternoons, one table every night. Six spots. This is the last one before the studio closes for winter.

12–17 October · $1,450 shared room · mysite.com/october-retreat

▾ Version before this one

Doors open Friday — Sunrise Yoga Retreat, October
Six spots, five mornings, one long table. If you've been meaning to do this for years, this is the one to book.
Version
v2 — rewritten just now
First written
Aug 12, 9:41
Rewrites
1 · $0.02
Copy▸ Still not right? Share anything and we'll rewrite it again
IG captions
Three, to post across the launch week
Copy
Flyer copy
Short-form, for print or a story card
Copy

Launch blast rewritten — $0.02. The other four pieces weren't touched, and your $3.00 kit fee doesn't move.

Take it with you
Save to Google Doc Copy all

All 5 pieces, plain text — Launch blast goes in as v2.

Frame 9 · Rewritten — v2 [Monitor] new
  • Story — As a founder who asked for a rewrite, the piece comes back visibly changed, marked as the second version, and I can keep going until it's right without a new kit charge.
Acceptance
  • AC-GEN-04 ↗ — nothing from the rewrite is written to the Brain.
  • NEW (PRD debt) · version marker — Given a piece has been rewritten N times, when its row renders, then it carries a v(N+1) chip and a recency sub-line, and the untouched pieces carry no version marker at all.
  • NEW (PRD debt) · unbounded refine — Given any delivered piece, when the founder is not satisfied, then the rewrite affordance remains available with no cap, each rewrite billing AI only.
  • NEW (PRD debt) · rewrite cost disclosure — Given a rewrite settles, when its result renders, then the actual AI cost is stated plainly beside the kit fee, and the kit fee is restated as unchanged.
  • NEW (PRD debt) · prior-version reveal (2026-08-04, CPO build-readiness review) — Given a piece has been rewritten, when the founder wants to see what it said before, then a collapsed “See version before this one” reveal on that row shows the single immediately-prior text, not gone from the UI. Only one level back — the version right before the current one, not a stack of every draft ever written. Requires storing the pre-rewrite text somewhere it can be read back from; nothing in this codebase does that today for generated pieces (needs its own storage decision, not assumed built).
Design notes
  • Version is per PIECE, never per kit. Only the rewritten row carries v2; the other four stay unmarked. A kit-level version number would imply the whole set was regenerated, which would be both wrong and expensive.
  • The chip is neutral, not emerald. v2 is a fact, not a success signal (C12) — the emerald dot on the row already carries “done”.
  • The refine affordance survives the rewrite, reworded to “Still not right?” — v2, v3, vN until she's satisfied. No cap is drawn because none is intended; if pricing later demands one it is a new Peyton ruling, not a build guess.
  • Real cost, after the fact. “$0.02” here is illustrative of the shape — the real figure comes from the settled ai_usage row. Before the tap the copy says “a few cents”; after it, the actual number.
  • Partial reversal (2026-08-04) — one prior version now shows, full history still doesn't. This row's design previously said “the previous one is gone from the UI” entirely; CPO flagged that showing a v2 chip the founder can never see behind is worse than no version number at all. The fix drawn here is narrow: the SINGLE immediately-prior version, collapsed by default, reusing the exact pre-rewrite text from frame 8 verbatim. Still not built, and still correctly deferred to F3: no diff highlighting, no v1/v2/v3 toggle across multiple rewrites, no list of every superseded draft. A founder two rewrites past v1 can see v1's immediate successor, not v1 itself — that gap is F3's, not this fix's.
Pulse dims behind
Sunrise Yoga RetreatASST-M3K9
Program Launch Kit · active since Aug 12
Pulse Overview Personalize Connect
Waiting on youLaunch blast didn't write — free to try again below
Pieces
4 of 5
Rewrites
0
Written
Aug 12
Cost
$3.00
The kit Rewrite several ⌄
Description
The short paragraph for your listing or booking page
Copy
Page copy
The full page — headline, the days, what's included, how to book
Copy
Launch blast
couldn't write this one — 2 of 3 retries left
Try again
IG captions
Three, to post across the launch week
Copy
Flyer copy
Short-form, for print or a story card
Copy

Your 4 finished pieces are yours to use now — trying “Launch blast” again won't touch them, and it's free.

Take it with you
Save to Google Doc Copy all

Your 4 finished pieces — Launch blast isn't in it yet.

Frame 10 · A failed piece, retry [Monitor] was 11
  • Story — As a founder with one piece that failed, I retry just that piece without worrying it'll re-run or re-charge the four that already worked — and I can still take those four away right now.
Acceptance
  • AC-GEN-05 ↗ — one of 5 pieces failing mid-fan-out never re-runs or re-charges the other 4.
  • AC-BILL-02 ↗ — a piece-level retry settles its own ai_usage row but never triggers a second run-level debit.
  • AC-BILL-07 ↗ — at 3 exhausted retries (4 attempts total) the piece stays permanently failed and Try again disappears; “2 of 3 retries left” is the founder-facing countdown to that state.
  • AC-RUN-04 ↗ — “Try again” renders on this kit's own Pulse surface, shows the remaining retry count, and leaves every delivered piece untouched. Partly superseded: the criterion's “never inside the activation wizard” clause no longer holds — a piece can now fail DURING activation (frame 6a), and the founder lands here with the kit already part-delivered.
  • AC-DLV-04 ↗ — every delivery affordance names the real count and the exported or copied payload contains exactly those — never a placeholder or a silent omission. Amended 2026-08-12 (item 3, needs Peyton's confirm): the count now lives in the caption immediately under the button group (“Your 4 finished pieces — Launch blast isn't in it yet”) rather than inside the button label, and it additionally names WHICH piece is missing. Read as satisfying the criterion — it is named, adjacent, and the payload still matches — but it does move the count off the label the AC was written against. Reasoning: frame 8's button-label note.
Design notes
  • A retry is NOT a rewrite — keep the two visibly different. Retry belongs to a FAILED piece: free, capped at 3, same instruction, red dot, “Try again”. Rewrite belongs to a GOOD piece the founder doesn't like: costs AI, uncapped, needs feedback, emerald dot, opens the composer (frame 8). A failed row therefore shows no composer — there is nothing to correct yet — and a done row shows no Try again.
  • The pending flag lost its button — one control, at the object it acts on item 2 · 2026-08-12. What Peyton caught is a real dead end: the flag read “Retry the launch blast” and the button next to it said “Review” — a different verb, promising a different action, and it navigated to the screen the founder was already standing on. The failed row with its own “Try again” is three rows below in the same viewport. The D-5 pending pattern exists to surface an action that lives elsewhere (frame 9b's “Send the launch · wave 2” genuinely opens another surface); rendering it for an item visible on the same screen is the duplication D-5 itself forbids. So the flag keeps its slot — the shell reads like every other assistant's Pulse tab (shell-language #7) — and does the one job the row can't: state the cause and the cost before she scrolls. The row owns the verb.
  • “Retry” is gone from founder-facing copy; the verb is “try again”. Peyton's question — does Retry mean regenerate? — is the ambiguity itself. Two-verb ledger, binding on this surface: a piece that failedTry again, free, capped at 3, red or amber dot. A piece that worked but reads wrongRewrite, AI cost, uncapped, emerald dot, opens the composer. Neither surface ever says “regenerate”, and the flag now leads with what HAPPENED (“Launch blast didn't write”) rather than an instruction, so the two paths can't be confused before she reads the row.
  • Delivery counts what actually landed — the caption under the delivery buttons says “Your 4 finished pieces — Launch blast isn't in it yet”, never just “the kit”. A Doc that silently omits a piece the founder thinks is in there is worse than no Doc. The count moved off the button label per item 3's rule; it did not get quieter.
  • Failed row is the only red on the surface (shell-language #4); the retry countdown sits on the muted amber sub-line, not in a badge — and it is one of the few places status TEXT survives item 7's cull, because a dot cannot carry a countdown.
Pulse dims behind
Sunrise Yoga RetreatASST-M3K9
Program Launch Kit · active since Aug 12
Pulse Overview Personalize Connect
Waiting on youLaunch blast didn't write — that's on us, not your input. Free to try again below.
Pieces
4 of 5
Rewrites
0
Written
Aug 12
Cost
$3.00
The kit Rewrite several ⌄
Description
The short paragraph for your listing or booking page
Copy
Page copy
The full page — headline, the days, what's included, how to book
Copy
Launch blast
didn't write — this one's on us, not your input
Try again
IG captions
Three, to post across the launch week
Copy
Flyer copy
Short-form, for print or a story card
Copy

Launch blast didn't write because of something on our side, not your input — so trying again has no 3-try cap, and it's still covered by what you already paid. Still stuck after a few tries? Contact us and we'll make it right.

Take it with you
Save to Google Doc Copy all

Your 4 finished pieces — Launch blast isn't in it yet.

Frame 10b · A failed piece, MystFlo's fault [Monitor] new
  • Story — As a founder with a piece that failed for a reason that's ours, not mine, I'm told so plainly and calmly — no alarm, no blame on me — and I know I'm not the one who pays for our mistake, however many tries it takes.
Acceptance
  • NEW (PRD debt) · charged-by-default, credited only for platform fault (Peyton ruling 2026-08-04) — Given a piece fails terminally, when the failure has no identifiable platform-fault cause (capacity, config, or provider outage), then it stays “charged, no credit” — frame 10's existing treatment is the default for every failure. Only when the failure IS clearly MystFlo's fault does this frame's treatment apply instead. Research confirmed founder-fault inputs (vague or thin facts) essentially never produce a true failure today — they still generate a charged, if weak, piece (status done), which already reaches the existing paid rewrite composer (frames 8/9) through the normal path. No separate founder-fault failure variant exists because that case doesn't occur.
  • NEW (PRD debt) · uncapped retry, no re-charge — Given a piece fails for a platform-fault reason, when the founder retries, then the retry is not counted against the standard 3-retry cap (AC-BILL-07) and settles no additional debit — the flat $3.00 kit fee already covers it, since settlement is per-KIT, not per-piece (decideSettlement charges the full price on ≥1 delivered piece).
  • AC-DLV-04 ↗ — same as frame 10: delivery affordances name the real count, never a placeholder or silent omission.
Design notes
  • Amber, never red — this isn't the founder's problem. Shell-language #4 reserves red for founder-actionable failures (frame 10); a platform-fault row uses the amber action-register dot instead, and the copy is calm, not alarmed (playbook error tone) — no “error”, no panic language.
  • “Credited” is drawn as an UNCAPPED FREE RETRY, not a wallet line-item. Peyton's ruling named two possible mechanisms — a wallet credit for a fraction of the kit fee, or a free retry with no cap — and left the choice to design judgment. This mockup draws the retry-cap removal because it needs no invented dollar figure; a literal wallet credit is the alternative if Peyton/finance later specify what fraction. Flag for Lane 2: if finance wants an actual credit line instead of just lifting the cap, that number has to come from them, not this file.
  • Classifying WHICH failures are platform-fault is Lane 2 build work, not drawn here. _shared/llm.ts already knows whether an error is transient/provider-side, but that signal is lost before it reaches the stored error code today — a real gap, not a design omission. This frame only draws what the founder sees once that classification exists.
  • Same delivery, take-it-with-you, and “retry ≠ rewrite” rules as frame 10 — not restated here.
Phase 5 · The next program “isn't that the assistant lifecycle itself?” · a second kit is a second activation, not a second run
On the finished kit — the quiet revisit note
Another program coming up?
Activate a new Launch Kit for it This one belongs to Sunrise Yoga Retreat. Your next workshop gets its own kit — most of your details carry over, so it's a few fields, not the whole form again.
Set up a kit for another program →
What that opens — straight into Personalize, prefilled
New Launch Kit
Personalize, opened directly — no chooser, no second screen.
Program name, hook, who it's for, dates, whereEmpty — its own facts
Price shape, booking link, workshop detailsCarried over
A new assistant with its own name and ID — Sunrise Yoga Retreat keeps its kit, untouched.
Continue to Connect

$3.00 when you activate it — same as the first. Edit or clear any carried-over field — that's how you start fresh, no separate step for it.

Frame 11 · A different program is a new instance [Next program] new
  • Story — As a founder with a second program, tapping the revisit button drops me straight into Personalize with the first kit's details already filled in — I edit what's different and clear what doesn't apply, no chooser screen standing between me and the form.
Acceptance
  • AC-LIFE-03 ↗ — the facts live in Personalize and nowhere else; this path lands on Personalize with the carried-over fields prefilled and the program-specific fields empty. No second per-run facts form exists.
  • NEW (PRD debt) · one instance, one program — Given an activated Launch Kit, when the founder wants a kit for a different program, then a NEW instance is activated (own nickname, own ID, own $3.00) and the existing instance's kit is never overwritten or re-billed.
Design notes
  • Rescoped (2026-08-04, Peyton /design review) — no visible chooser card, ever. This frame previously drew a two-card “Start from X” / “Start fresh” picker, framed as review_config vs start_fresh. Confirmed drift against the master artifact (assistant-flows/assistant-lifecycle.html:3250, R18/R19): review_config “stays invisible plumbing, never a card” — there is no chooser to draw for it. The single path here is start_fresh mode, opened directly and prefilled from the current instance's saved facts (assistant-lifecycle.html:3018–3123, §5 Change). Editing or clearing a prefilled field IS how a founder starts fresh — that's not a second mode needing its own card.
  • Drawn light on purpose. One small panel plus a compact carried-over/empty recap, not a wizard redraw — the wizard this leads into is frames 3b6, already drawn. Duplicating them with different placeholder text would be noise.
  • The carry-forward promise has to be specific to be believed. Naming the fields that survive (price shape, booking link, workshop details) is the difference between a real affordance and a vague “duplicate”. Never promise the program NAME carries — it must not. Reactivating this template only ever produces another Workshop Launch Kit instance — a retreat program means activating the sibling Retreat Launch Kit card from Explore instead, a separate action this panel never offers.
  • C6 instance identity applies from here on. Two instances of one template need nickname + ID chip everywhere (cards, Billing, usage) — which is why frame 7's card is titled for the program.
768 not yet drawn for this flow. Desktop and 375 are the contract.
Phase 4 · Monitor · 375 the kit on a phone — read it, rewrite what's off, take it away, plus the failed-piece edge. Entry is the Pulse card (sec-7), drawn once above as a tier-identical component card
A piece being rewritten — the share-anything composer, one box
Pulse dims behind
Sunrise Yoga RetreatASST-M3K9
Program Launch Kit · active since Aug 12
Pulse Overview Personalize Connect
Pieces
5 of 5
Rewrites
0
Written
Aug 12
Cost
$3.00
The kit Rewrite several ⌄
Description
The short paragraph for your listing or booking page
Copy
Page copy
The full page — headline, the days, what's included, how to book
Copy
Launch blast
The email or broadcast that opens it

Doors open Friday — Sunrise Yoga Retreat, October

Six spots, five mornings, one long table. If you've been meaning to do this for years, this is the one to book.

Version
v1 — as written
Written
Aug 12, 9:41
Copy
What's off about this one?
Too salesy for my list. Warmer, shorter, and say it's the last one before winter. Here's how last year's read →
⊕ Or drop a file, screenshot or link — same box
last-year-blast.pdf  ×
Rewrite this piece

AI cost only — charged as used, a few cents. Your $3.00 kit fee doesn't move.

Used for this rewrite only — it doesn't teach your Brain.

IG captions
Three, to post across the launch week
Copy
Flyer copy
Short-form, for print or a story card
Copy
Take it with you
Save to Google Doc Copy all

All 5 pieces, plain text — a new Doc in your Drive.

Resting state, Google not connected — same slots, swapped
Pulse dims behind
Sunrise Yoga RetreatASST-M3K9
Program Launch Kit · active since Aug 12
Pulse Overview Personalize Connect
Pieces
5 of 5
Rewrites
0
Written
Aug 12
Cost
$3.00
The kit
Description
The short paragraph for your listing or booking page

Five days in the Atlas Mountains — morning practice, long open afternoons, and one long group dinner together each night. Built for women who've never done a retreat before and don't want to arrive alone.

Version
v1 — as written
Written
Aug 12, 9:41
Copy▸ Not quite? Rewrite it
Page copy
The full page — headline, the days, what's included, how to book
Copy
Launch blast
The email or broadcast that opens it
Copy
IG captions
Three, to post across the launch week
Copy
Flyer copy
Short-form, for print or a story card
Copy
Take it with you
Copy all Connect Google

All 5 pieces. No Google account connected yet — connecting takes about a minute and lets you save the kit straight to a Doc from then on.

Frame 8 · The kit · 375 ×2 [Monitor] was 10; refine block is new
  • Story — As a founder reading my kit on my phone, the piece that isn't right gets fixed by typing what's off into the same box I share anything with, and dropping in last year's version alongside it.
Acceptance
  • AC-DLV-01 ↗ · AC-DLV-02 ↗ · AC-DLV-03 ↗ — the two frames here ARE the connected / not-connected pair: Doc-primary when Google is connected, copy-primary with the Doc slot still rendered as an outline “Connect Google…” when it isn't, and copy works with no connected app either way. Tier note, stated so the build doesn't guess: the not-connected half is drawn at 375 only. It is a swap of ONE control inside the “Take it with you” block (primary Save to Google Doc → outline Connect Google to save it as a Doc, copy stays), identical at desktop 1180 where that block is already drawn in 8 — no desktop reflow, so no desktop twin. Every other state in this family has both tiers.
  • AC-GEN-04 ↗ · NEW (PRD debt) — corrective rewrite, rewrite billing and the per-run context boundary, all three as stated on the desktop half.
Design notes
  • At 375 the composer is full-width inside the expanded row, and the rewrite button goes block — the price line moves under it rather than beside it. Still ONE box: the dropzone and the file chip live inside the composer, never in a second step or a tab.
  • Conditional affordance, fixed slots. Two delivery actions always render; only which is primary swaps. Never hide the Doc option. Verb is Connect, the entry verb for never-connected (playbook §4).
  • Full design notes for this frame — the composer grammar, the boundary line, the delivery rail, plain-text constraint and PDF deferral — travel with its desktop half, sec-8 ↗.
① Selection mode — a failed piece can't be picked
Pulse dims behind
Sunrise Yoga Retreat
Program Launch Kit · active since Aug 12
Pulse Overview Personalize Connect
Pieces
5 of 5
Rewrites
0
Written
Aug 12
Cost
$3.00
Pick what's off Cancel
Description
The short paragraph for your listing or booking page
Page copy
The full page — headline, the days, what's included, how to book
Launch blast
The email or broadcast that opens it
IG captions
Three, to post across the launch week
Flyer copy
try again first — rewriting needs something to correct
3 of 5 · Select all Rewrite these 3

3 separate rewrites — AI cost only, a few cents each.

② The sheet rises — one direction for all three
the tab recedes — selection still visible above the sheet
Launch blast
IG captions
Rewrite 3 pieces
One direction, applied to all three
Rewriting
Page copy  × Launch blast  × IG captions  ×
What's off about these?
All three lean too hard on the retreat-speak. Plainer, warmer, and say it's the last one before winter.
⊕ Or drop a file, photo or link — same box
last-october-set.pdf  ×
Rewrite these 3

3 separate rewrites — AI cost only, a few cents each. Your $3.00 kit fee doesn't move.

Used for these rewrites only — it doesn't teach your Brain.

Frame 8b · Rewrite several · 375 [Monitor] new
  • Story — As a founder on her phone whose kit is off the same way in three places, I tick the three, say it once, and the sheet rises with my picks still showing above it.
Design notes
  • At 375 the sheet is the same bottom sheet it is at desktop — mobile is always a sheet (playbook §3), so this tier needed no separate presentation decision. The receded tab shows the ticked rows above the sheet's top edge, which is the whole reason a bottom rise beats a side slide here.
  • The selection bar is not sticky. Five rows fit inside one 375 viewport with the band above, so a pinned bar would float over content it doesn't need to. If the piece count ever grows past what fits, it becomes the archetype's pinned footer — not before.
  • Per-row Copy and chevrons stand down in selection mode at both tiers, so the row has exactly one tap meaning while the mode is on. Full GO-vs-DO reasoning, the failed-piece rule and the billing criteria travel with the desktop half — sec-8b ↗.
Pulse dims behind
Sunrise Yoga RetreatASST-M3K9
Program Launch Kit · active since Aug 12
Pulse Overview Personalize Connect
What it does

Give it the date, price, venue, and what they'll make — your own facts, or a facilitator's if you're the venue — and it writes the launch set in your voice: description, page copy, launch blast, IG captions, flyer copy.

How it works
01
Teach it once
Your voice, in the Brain.
02
Save the program's facts
What, when, price, who it's for.
03
Tap Activate
Turns it on and writes the kit — same tap.
04
Writes the launch kit
5 pieces, your voice.
Kit ready to use
Copy it, save it to a Doc, or ask for a rewrite.
Key benefits
In your voice — the one you confirmed
No re-explaining your voice, your prices, your policies every launch.
Never invents a fact you didn't give it
Missing a date or a price? It asks — it never guesses.
No staring at a blank page five times
All five pieces out of one set of facts.
Written to feed your launch page
Sized for Waitlist + Launch — ready to paste.
Frame 8c · 375 [Monitor]
  • R26 — 375 and desktop show the SAME content. Every block on the desktop twin is here: What it does, the full 5-node flow, all four benefit cards. Only the description paragraph tightens. Desktop losing what 375 shows is a bug; 375 losing what desktop shows is the same bug in the other direction.
  • Same absences as the desktop twin — no band, no next-action card, no run-again, no history. Reasoning travels with sec-8c ↗.
Pulse dims behind
Sunrise Yoga RetreatASST-M3K9
Program Launch Kit · active since Aug 12
Pulse Overview Personalize Connect

Your kit was written from these. Change the notes and ask for a rewrite on the piece that's off — the program's own facts stay put.

This program — set when you activated
What's it called?
Sunrise Yoga Retreat
Price
1,450
USD
per person, shared room
Dates & times
12–17 October 2026
Where
Marrakech, Morocco

These don't change here — a different program is a different kit. ↗ Activate a new Launch Kit →

Change anytime — used the next time a piece is written
How to book / get in touch
mysite.com/october-retreat
What's the one-line hook? — optional
Five mornings of yoga, five long lunches, zero notifications.
Venue details & parking — optional
Riad in the medina, 10 min from Jemaa el-Fnaa.
Everything else — however you've already got it
Rough draft, old flyer, voice notes, mood shots
Same as last October but warmer — it's the last one before winter.
⊕ Or drop a file, screenshot, photo or link
last-october-flyer.pdf  ×

Saved with this assistant and used the next time a piece is written. Nothing is rewritten until you ask — and it doesn't change your Brain.

Changing these doesn't rewrite anything by itself Your kit stays as it is until you ask for a rewrite. Open the kit →
·· your kit ··
Frame 8d · 375 [Monitor] PROPOSED
  • D2 — the kit pane docks, it doesn't split. At 375 the desktop's right-hand pane becomes the same slide-up pill bar the setup form uses (3c), relabelled “your kit” because at this point it is her real copy, not an example. The form keeps full working height; the pill respects keyboard and safe-area insets.
  • Same edit classes, same order, no fields dropped (R26). The identity block reads back first so the answer to “why can't I change the name?” arrives before she tries. Full class reasoning and the open contradiction travel with sec-8d ↗.
Pulse dims behind
Sunrise Yoga RetreatASST-M3K9
Program Launch Kit · active since Aug 12
Pulse Overview Personalize Connect
Pieces
5 of 5
Rewrites
1
Written
Aug 12
Cost
$3.02
The kit Rewrite several ⌄
Description
The short paragraph for your listing or booking page
Copy
Page copy
The full page — headline, the days, what's included, how to book
Copy
Launch blast v2
The email or broadcast that opens it

One more before winter — October in the Atlas Mountains

You've been on this list a while, so you'll know the shape of it: five mornings of practice, five long afternoons, one table every night. Six spots.

▾ Version before this one

Doors open Friday — Sunrise Yoga Retreat, October
Six spots, five mornings, one long table. If you've been meaning to do this for years, this is the one to book.
Version
v2 — just now
First written
Aug 12, 9:41
Rewrites
1 · $0.02
Copy▸ Still not right? Rewrite it again
IG captions
Three, to post across the launch week
Copy
Flyer copy
Short-form, for print or a story card
Copy

Launch blast rewritten — $0.02. The other four weren't touched, and your $3.00 kit fee doesn't move.

Frame 9 · Rewritten — v2 · 375 [Monitor] new
  • Story — As a founder who asked for a rewrite, the piece comes back visibly changed and marked v2, and I can keep going until it's right without a new kit charge.
Acceptance
  • AC-GEN-04 ↗ · NEW (PRD debt) — version marker, unbounded refine, rewrite cost disclosure, and the prior-version reveal, as stated on the desktop half.
Design notes
  • The v2 chip sits inline with the piece name, neutral not emerald (C12) — the row's emerald dot already carries “done”. Untouched pieces carry no marker.
  • Full design notes for this frame travel with its desktop half — sec-9 ↗.
Pulse dims behind
Sunrise Yoga RetreatASST-M3K9
Program Launch Kit · active since Aug 12
Pulse Overview Personalize Connect
Waiting on youLaunch blast didn't write — free to try again below
Pieces
4 of 5
Rewrites
0
Written
Aug 12
Cost
$3.00
The kit Rewrite several ⌄
Description
The short paragraph for your listing or booking page
Copy
Page copy
The full page — headline, the days, what's included, how to book
Copy
Launch blast
couldn't write this one — 2 of 3 retries left
Try again
IG captions
Three, to post across the launch week
Copy
Flyer copy
Short-form, for print or a story card
Copy

Your 4 finished pieces are yours to use now — trying “Launch blast” again won't touch them, and it's free.

Take it with you
Save to Google Doc Copy all

Your 4 finished pieces — Launch blast isn't in it yet.

Frame 10 · A failed piece, retry · 375 [Monitor] was 11
  • Story — As a founder with one piece that failed, I retry just that piece without worrying it'll re-run or re-charge the four that already worked — and I can still take those four away right now.
Acceptance
  • AC-GEN-05 ↗ · AC-BILL-02 ↗ · AC-BILL-07 ↗ — same three criteria as the desktop half: retry one piece, never re-run or re-charge the other four, and the countdown ends in a permanently-failed row.
  • AC-RUN-04 ↗ — “Try again” renders on this kit's own Pulse surface with the remaining retry count. Its “never inside the activation wizard” clause is partly superseded — a piece can now fail during activation (6a).
Design notes
  • Delivery counts what actually landed — the buttons say “the 4 finished pieces”, never “the kit”.
  • A retry is not a rewrite — a failed row shows “Try again” and no composer; a done row shows the composer and no “Try again”.
  • Full design notes for this frame travel with its desktop half — sec-10 ↗.
Pulse dims behind
Sunrise Yoga RetreatASST-M3K9
Program Launch Kit · active since Aug 12
Pulse Overview Personalize Connect
Waiting on youLaunch blast didn't write — that's on us, not your input. Free to try again below.
Pieces
4 of 5
Rewrites
0
Written
Aug 12
Cost
$3.00
The kit Rewrite several ⌄
Description
The short paragraph for your listing or booking page
Copy
Page copy
The full page — headline, the days, what's included, how to book
Copy
Launch blast
didn't write — this one's on us, not your input
Try again
IG captions
Three, to post across the launch week
Copy
Flyer copy
Short-form, for print or a story card
Copy

Launch blast didn't write because of something on our side, not your input — no 3-try cap here, and it's still covered by what you already paid.

Take it with you
Save to Google Doc Copy all

Your 4 finished pieces — Launch blast isn't in it yet.

Frame 10b · A failed piece, MystFlo's fault · 375 [Monitor] new
  • Story — As a founder with a piece that failed for a reason that's ours, I'm told so plainly and calmly, and I know I'm not the one who pays for it, however many tries it takes.
Design notes
  • Amber dot, not red — this isn't the founder's problem (shell-language #4).
  • Full design notes, acceptance criteria and the credit-mechanism judgment call travel with the desktop half — sec-10b ↗.
  • Card: `AssistantSummaryCardPre` coming-soon variant (name + description only, no benefits/flow until graduation) — frame 1. ⚠ ADR-035: becomes per-persona cards (Workshop / Retreat Launch Kit).
  • Wizard: `ConfigureStep` shared-spine fields (frames 3/3a/3b — lens preset by the card per ADR-035; the retired lens picker's re-cut landed 2026-08-03, these frames ARE the re-cut); Connect carries the AI Model row (2026-08-04 ledger lock, no per-assistant exceptions) + Brain Check, no external app rows (frame 4).
  • Generation pattern: generate lifecycle + draft review + vertical-accordion results — pass-bar `../../archetypes/generation-surface.md`; shipped Brain implementations `useBrainGenerate.ts` / `BrainDraftReview.tsx`.
  • Pulse primary action: ▶ Write a kit rides the activation PRD's four-slot Pulse-primary-action contract on `AssistantSummaryCardPost`.
  • Pick lists: `.pick-rows` vertical single-select (vertical-first, no segmented rows).
  • Delivery: Google Doc export via connected account + per-piece copy; sheet chrome via `ModalWrapper presentation="sheet"`.
  • Share-anything box — ONE component, THREE hosts (2026-08-12). LaunchKitRewriteComposer.tsx already IS this box (textarea + dropzone + file chips, files landing inside the same box per the “one job, one surface” lock). Build generalises it in place — label, placeholder, submitLabel, caption, footnote as props, and an optional submit control — then mounts it at: (1) Personalize, no submit and no price, material rides along to activation (frame 3b); (2) a single expanded piece, inline, submit = “Rewrite this piece” (frame 8, shipped); (3) the multi-piece bottom sheet, submit = “Rewrite these N” (frame 8b). Never fork a second composer, and never reach for the Brain's ShareInline — its proposal/organize pipeline writes to brain_documents, which all three hosts are explicitly forbidden from doing (AC-GEN-04).
  • Reading room: the expanded-piece body follows the Brain prose ramp — src/components/brain/SheetProse.tsx (SheetProseHeader / SheetProseSection), whose canonical reference is ExamplePlaybookPanel.tsx (do NOT refactor that file). Eyebrow → one hairline → prose, no boxes around prose, actions in a quiet foot row, per-piece metadata in a side rail. Frame 8. Composes with — does not replace — the content formatting contract on branch fix/3397-kit-content-formatting.
  • Button labels (BINDING on this surface, 2026-08-12): a label is a verb phrase of ≤4 words. Counts, conditions, prices and consequences live in a .btn-caption under the button GROUP. A scope the verb genuinely takes may stay in the label (“Rewrite these 3”); a condition on the action may not (“— AI cost only”, “the 4 finished pieces”). No decorative glyphs on action buttons.
Master contract + sources
  • assistant-flows/assistant-lifecycle.html is the primary structural contract; assistant-flows/workshop-booking.html is the canonical structural reference (design-canon.md § Assistant-flow mockup structure — 8-section shape; this file retrofitted to it 2026-08-06); token block + R32 split from on-brand-support.html verbatim.
  • Sources: prd-as-workshop-marketing-kit.md · ADR-035-engine-persona-cards.md · billing wiring migration 20260731090100_2982 ($3.00/kit, coming_soon).
Guest
This step is 375. No 1180 drawing — use the Mobile size.
768 not yet drawn for this flow. Desktop and 375 are the contract.
This step is 1180. No 375 drawing — use the Desktop size.
Part II — Future design good ideas deferred — never a build target

Items named as not-built, listed so a build agent doesn't invent them and so they're not lost. F0 (persona-card scope) is a flag, not a deferred frame. F5 added 2026-08-12 — a real date-range control for dates_times, scoped out of the item-1 UX pass as its own backend slice. F2 graduated to Active on 2026-08-01 — regenerating a good-but-disliked piece is now the core of frames 8/9. Its slot here is reused by the Brain-save bridge the new composer raises. F3 partially graduated on 2026-08-04 — the single immediately-prior version now shows as a collapsed reveal on a rewritten row (frame 9); F3 itself narrows to what's still not built: full multi-version history, diff view, list of every superseded draft.

Rescoped 2026-08-03 for ADR-035. Under the retired lens-picker model this item was about a THIRD ROW in a founder-facing picker (frame 3's old “Which kind of program?” list). Card-per-persona replaces that: a new program type is a new card — a new assistant_templates row, a registry entry, and its own persona config/prompt module (ADR-035 §3 names it Event Launch Kit in the family roster) — never a new row in a picker that no longer exists. Event Launch Kit is not built: only 'retreat-host' | 'workshop-host' exist in the shipped PersonaLens type, and standing it up is gated on canonizing the still-provisional event-runner persona (vault event-runner.md — monthly recurring ticketed events, strongest-demand new fit per the CPO persona-fit review, 2026-08-01), not a design change. Online Course has no card and no roster entry — no live persona exists for it (the creators vertical was retired 2026-05-31 as ungrounded), so there is nothing to scope yet.

Duplicate-and-tweak of frame 10: once a piece's 3 retries are exhausted (AC-BILL-07), “Try again” is gone and the row reads a terminal “couldn't write this one” state with no further action — the founder keeps the other 4 pieces, and if ≥1 piece delivered the kit still settles in full. Delivery still offers the finished pieces, counted honestly. Not drawn as a full frame since it's a rare terminal edge, not the primary path.

Resolved (Peyton ruling, 2026-08-04): the partial-credit question is closed. Default is “still charged, no credit” for ANY terminal piece failure — this F1 terminal state is what that default looks like. Credit/waive applies ONLY to failures that are clearly MystFlo's fault (a platform capacity/config error, or a provider outage), never for founder-input-caused failures — research confirmed founder-fault essentially never produces a true failure today (vague or thin input still generates a charged, if weak, piece that reaches the existing paid rewrite composer, frames 8/9, through the normal path). Platform-fault failures get their own drawn treatment, frame 10b — an uncapped free retry, never counted toward the 3-try cap this F1 state describes — so a platform-fault piece should never reach THIS terminal dead-end in the first place; if it somehow does, “contact us” (frame 10b's escape hatch) is the path, not silence. This F1 state therefore only ever applies to the default, non-platform-fault case.

This slot formerly held “regenerate a good-but-disliked piece”, which graduated to Active on 2026-08-01 — it is now frames 8/9, the refine surface. What replaces it is the bridge that surface raises. Some of what a founder types into the rewrite composer is durable house knowledge — “we never say 'book now', we say 'save your spot'” — and today it evaporates with the run, by design (the per-run context boundary in 8). The deferred affordance is a quiet post-rewrite offer: “Worth keeping? Save this to your Brain” — an opt-in door into the save-first share flow (Brain lock, 2026-08-01), never automatic. Deferred because it needs its own rulings: what's offered versus what's ignored, which playbook section it proposes, and the embedding charge the save incurs (ai_usage / brain_embed, ×2.0 — sharing is a paid action, so confirm-before-charge applies). Until it exists, the boundary line in frame 8 must stay verbatim: the composer looks like the Brain's share door and must not be mistaken for it.

Rescoped 2026-08-01, partially graduated 2026-08-04 (CPO build-readiness review). Under the multi-kit model this was “past kits for this instance”; one instance now holds one kit, so the real gap was per-piece version history. The narrowest, highest-value slice — the SINGLE immediately-prior version, collapsed reveal — graduated to Active on frame 9: a founder who just rewrote a piece can see what it said one step back. What's still not built and stays here: no diff highlighting between versions, no v1/v2/v3 toggle across MULTIPLE rewrites, no list of every superseded draft. Only the single most-recent prior version is ever retained — a second rewrite overwrites it, so a founder now on v3 can see v2 but not v1. Deferred rather than dropped because the failure is still real past that first rewrite. This remains the strongest argument for the delivery block being in v1: until full history exists, a saved Doc or a copy IS her archive for anything more than one rewrite back, so Copy on every row is not a convenience, it's the undo.

Considered during delivery design (2026-08-01) and deliberately deferred: a print-ready PDF of the whole kit — the obvious want for flyer copy in particular. Deferred because no PDF tooling exists anywhere in the codebase, client or server, so this is a net-new dependency plus a rendering/typography pass, not a delivery toggle. Google Doc export covers the same job today (the founder prints or exports from Docs), and Docs owns the formatting problem we'd otherwise be taking on. Revisit only with a named library decision and a CTO gate.

Raised and scoped 2026-08-12 during the item-1 pass; deferred, not dismissed. dates_times is the one Personalize field with a clean structured shape and no upside to freeform — a start and an end, optionally times. Structuring it would give the writer unambiguous dates instead of a string it has to interpret, and would let downstream surfaces (reminders, “before winter” framing, sorting a founder's programs) read a real date rather than parse prose. Deferred because it is net-new component work, not a config flag: ConfigFieldRenderer.tsx switches on 21 field types and none is a date or date range, and src/components/ui/calendar.tsx is an unused primitive with no range wrapper — so this needs a new field type branch, a real range component, and a configuration_schema shape change on both templates. Medium backend lift, its own slice, and it must not ride along inside a UX pass. SUPERSEDED 2026-08-14 (Peyton ruling, #3480): this note previously excluded a structured PRICE control "permanently," reasoning that an amount+currency+unit picker could only hold the qualifier by bolting on a notes field. Peyton overrode that — the qualifier is its own field (price_qualifier, free text), not folded into the amount, so nothing is lost; see the frame 3 annotations above for the full shipped shape. Price is structured as of migration 20260814150200_3480_launch_kit_price_structured.sql. This section's DATES reasoning above is unaffected and still current.

FramePhasePartAC / lock cited
1 · Explore cardDiscoverActiveisComingSoon parity
2 · OverviewEvaluateActivecatalog copy
3, 3a, 3b · Personalize formActivateActiveAC-GEN-02, AC-GEN-07, AC-SETUP-01, C-F2, D-1
3b, 3c · Preview panelActivateActiveAC-SETUP-01/02/03 · D-2 · R32 · Personalize/Try rule
3d · Personalize, EMPTY / first open desktop + 375 new · item 1ActivateActiveAC-SETUP-01 · AC-GEN-02 · debt: required-set amendment 8→5 · notes-box-is-an-input · defect: TMPL-WMKT01 seeded with RETREAT placeholders
4 · Connect rewritten, 2 statesActivateActivebrainInheritance · debt: brand-voice hard gate (Peyton ruling 2026-08-04, mirrors AC-GATE-01/02)
5, 5b · Try rewrittenActivateActiveAC-GEN-01, AC-GEN-06, AC-BILL-04 · debt: supersedes AC-LIFE-01
6a · Activating — the write panel + 375 was 9ActivateActiveAC-GEN-01/08, AC-BILL-01, AC-RUN-03 · debt: supersedes AC-LIFE-01, AC-RUN-01/02
6 · Activated — kit ready rewrittenActivateActiveAC-BILL-01, AC-GEN-04 · C2 pattern · debt: supersedes AC-LIFE-02
6b · Activated, no kit — recovery newActivateActiveAC-BILL-01 · debt: activation-succeeded, generation-never-fired (CTO Fork 8 / B2) · zero-completed-runs gate
7 · Pulse post card (3 states) rewrittenMonitorActiveAC-BILL-01/07, D4, C6, R34 · debt: supersedes AC-RUN-01; rewrite-spend line; rewrite-in-flight state
8 · The kit — read, refine, deliver desktop + 375 ×2 was 10MonitorActiveAC-DLV-01/02/03, AC-GEN-04 · debt: corrective rewrite · rewrite billing · per-run context boundary
8b · Rewrite several desktop ×2 + 375 ×2 new · item 4MonitorActiveAC-GEN-04 · debt: multi-piece corrective rewrite · N rewrites N charges · failed-piece not selectable · shared direction / separate results
8c · Post Overview tab desktop + 375 new · round-2 gapMonitorActiveR28 · R29 · R26 · 2026-08-12 tab-shell lock (“fixing the OTHER tabs is the fix”) · debt: post-Overview never drawn for a generation assistant before the shell shipped
8d · Post Personalize tab desktop + 375 new · PROPOSEDMonitorActiveA6 edit classes (lifecycle 9c) · R32 · D2 · OPEN: identity-editable-or-not — 2026-08-01 generation lock (“edit the facts, run again”) contradicts frame 11 / AC-LIFE-03 (“one instance, one program”); this frame draws the latter, pending Peyton
9 · Rewritten — v2 desktop + 375 rewrittenMonitorActiveAC-GEN-04 · debt: version marker · unbounded refine · cost disclosure · prior-version reveal
10 · Failed piece, retry desktop + 375 was 11MonitorActiveAC-GEN-05, AC-BILL-02/07, AC-DLV-04, AC-RUN-04 (wizard clause superseded)
10b · Failed piece, MystFlo's fault desktop + 375 newMonitorActiveAC-DLV-04 · debt: charged-by-default/credited-on-platform-fault (Peyton ruling 2026-08-04) · uncapped retry
11 · A different program = a new instance rewrittenNext programActiveAC-LIFE-03 · start_fresh only, prefilled (no chooser) · debt: one instance, one program
F0–F5FutureAC-BILL-07 · F2 rescoped to the Brain-save bridge · F3 narrowed to full multi-version history (single-prior-version reveal graduated to frame 9)

PRD debt — the four superseded ids (AC-LIFE-01/02, AC-RUN-01/02), AC-RUN-04's partly-superseded wizard clause, and the six uncovered refine criteria are stated once at the top of Part I and flagged inline on every affected frame. Nothing here mints an id.

All three previously-open coverage gaps are now closed (2026-08-03 → 2026-08-04, CPO + CTO + Peyton review rounds). (1) Closed — the Pulse card's state while a REWRITE is in flight is now drawn, frame 7's third state. (2) Closed — CTO's Fork 8 (B2) ruling named a state this mockup never had a slot for at all: activation succeeds (the instance exists, status Active) but the chained kit-generation call never fires, leaving zero completed runs and nothing charged. Frame 6b draws the recovery screen, hard-gated on zero completed runs so it can never be mistaken for a repeatable “write another kit” trigger. (3) Closed — Peyton ruled the partial-credit question: charged, no credit, by default for any terminal piece failure (frame 10, unchanged); credited only when the failure is clearly MystFlo's fault (platform capacity/config error, or a provider outage), drawn as an uncapped free retry in frame 10b, never a founder-fault case since research confirmed those essentially never produce a true failure today. F1 restates the ruling for the terminal-exhausted edge. Per the mockup ship-gate rule, a shipped state the mockup never depicted is a blocker — all three are now cleared, none an oversight.