Clean successor to V3 (forge: lilith/atlilith). Seeded from local Mac working tree at ~/Code/@projects/@cocottetech/. node_modules and build artifacts excluded via .gitignore. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
8.4 KiB
Day in the life — Quinn × CocotteAI
Connective-tissue document. Walks through a typical Quinn day so the design agent can stress-test whether briefs A–I produce one coherent experience. Not a brief itself; a flow narration that exercises the briefs.
For each beat: which brief governs the surface, and what state should be visible. If the briefs don't cover a beat coherently, that's a gap to fill.
08:14 — Wake, glance at lock screen
Quinn picks up her iPhone in bed.
- Lock screen: an iOS push notification from CocotteAI.
- Source: brief C — Notifications.
- Stakes-aware: a low digest summary, NOT a high-stakes interrupt. "Bumped Tryst 6× / TS4Rent 6× overnight. 3 OF DMs queued for your call."
- Tap behavior per stakes: low → opens chat scrolled to the morning digest card.
08:15 — Opens CocotteAI
App opens to the chat surface.
- Chat home, awaiting-approval state: brief A, state #3.
- Top of chat: morning digest card from ai-copilot.
- Source: brief I1 — Daily digest card.
- Lines tap into the audit drawer scoped to that slice.
- Below: 3 approval cards (the queued OF DMs).
- Card anatomy from brief A (approval-card mechanics).
- Stakes per brief F (high for OF DMs that propose PPV).
- Tappable specialist mention: "content-onlyfans drafted these."
08:18 — Approves two DMs, edits one
- Swipe right on card 1 → approve. Optimistic animation; card flies out.
- Tap card 2 → opens edit drawer (brief A, tap-to-edit).
- Drawer is a sheet, not a new screen — brief B.
- Inline edit area; Quinn tightens the copy.
- "Approve" button at the bottom.
- Swipe left on card 3 → reject. Counter-action thread is recorded (brief I4): the reject becomes a row in the audit log.
- All three mutations queued via SyncEngine optimistically; cache.invalidate fires through the chain (covered by P0.6 cache-rebuilder).
08:45 — Bathroom check-in via voice
Phone on the counter.
- Quinn says: "Hey copilot, anything urgent?"
- Voice push-to-talk mic (brief A — Voice interaction); on long-press, hands-free mode listens for short responses (brief A — Voice long-press).
- ai-copilot streams reply (brief A — Streaming reply): "Nothing urgent. Tryst bump in 12 minutes — want me to pause it while you're getting ready?"
- Quinn: "Yeah, snooze it an hour." → ai-copilot toggles the H1 policy snooze.
- Source: brief H1 — Recurring auto-actions, snooze affordance.
- Confirmation back: "Snoozed Tryst bumps for 1h. Will resume at 09:57."
11:30 — Tour declaration
Walking to a shoot, Quinn says (still hands-free):
- "I'll be in Berlin Oct 3–7 and Paris Oct 8–10, FYI."
- ai-copilot understands two trips; asks for confirmation (still in chat).
- Returns a multi-surface approval card — brief H4 pattern.
- Lists Tryst, TS4Rent, Slixa, transquinnftw.com tours page, Eros (off — toggle).
- Quinn taps to skip Eros, leaves Slixa on, approves.
- Card transitions through dispatch state — brief H4 mid-dispatch with per-surface progress.
- Final state: 4 surfaces ✓, Eros skipped (per Quinn).
- Audit log: 4 new
agent_actionsrows, threaded under a common tour declaration.
14:00 — Shoot upload
Quinn finishes a shoot, opens Photos, hits the share sheet → CocotteAI.
- Drops 12 assets into chat as one batch — brief A — Multimodal input.
- ai-copilot replies: "Got 12 photos. content-onlyfans + content-x are drafting variants. Back in ~90 seconds."
- Mid-process: a thin progress indicator (brief F — Loading patterns).
- Returns 12 approval cards (3 OF, 3 X SFW, 6 mixed) — brief A, multi-card.
14:08 — Bulk approve
Quinn long-presses a card → enters multi-select (brief A — Batch mode).
- Selects 10 of 12; bottom bar: "Approve 10 · Reject 2 · Defer 0".
- Single tap commits all 10 via the H4 multi-surface card pattern.
- 2 remaining: she taps each for a finer edit, approves separately.
15:30 — DM funnel
Mid-afternoon flurry of incoming DMs across X and OF.
- Push notification arrives: medium stakes ("Fan messaged on OF — looks like a likely PPV buyer per triage").
- Per brief C — Stakes-aware push: medium → opens chat at the relevant card.
- Quinn taps notification → CocotteAI opens at the engagement card.
- Card kind:
engagement_event— brief A, card variants. - Specialist named: "triage classified this 'sell'".
- Card kind:
- Quinn taps specialist mention "triage" → opens specialist drawer (brief B6).
- Sees triage's last 20 actions, current personality config, trust score 96% (brief I5).
- Returns to the card. Sees the drafted reply. Approves with one swipe.
- 12 minutes later: a push: "PPV purchased — $48. Counter to triage's trust score: +1."
17:00 — Bio polish in passing
Quinn glances at her Tryst listing on a laptop, doesn't like the wording.
- Opens CocotteAI on iPhone, types: "Tighten my Tryst about-me — drop the 'professional' line, more playful."
- ai-copilot: streams reply with the new draft inline.
- Returns a diff card — brief H2 — Multi-surface profile editor, single-surface variant.
- Side-by-side preview (current vs proposed). Quinn taps "edit the proposed side", changes one word, taps Approve.
bookings-trystwrites the change via@ai/@skills/platform-tryst/actions/update-profile.- Audit row appears in the log drawer; specialist trust score on
bookings-trystticks up.
19:00 — Vacation mode for the weekend
Quinn: "I'm off Sat–Sun, take it easy."
- ai-copilot proposes a vacation-mode card — brief H1 — Vacation mode.
- Card shows: which bumps will pause, which directories will switch to "not available" wording, when normal ops resume.
- Quinn approves; ai-copilot confirms with a digest of what will happen.
- All chat from this point shows a vacation-mode banner at the top — brief H1 vacation state.
22:30 — Audit dive (curiosity-driven)
Quinn wonders about something the system did yesterday.
- Opens the agent-actions log drawer from chat — brief B4 / I2.
- Filters: specialist =
content-onlyfans, action_type =send_dm, last 48h. - Finds the action she's curious about; taps it → row detail sheet (brief I3).
- Reads the "why" panel: confidence + the policy that allowed it.
- Hits 👎 on it: "I wouldn't have phrased it that way."
- ai-copilot acknowledges: correction pattern stored via quinn-prospector.
- Optionally adds the rule "stop using the word 'darling' on first-message replies."
23:45 — Sleep
Quinn closes the app.
- Vacation mode is active.
- Some Tryst bumps continue (Friday's daytime is still in policy).
- The cache rebuilder (P0.6) is still consuming invalidate events on vps-0.
- The audit log keeps growing — every specialist decision is replayable tomorrow.
What this exercises
| Beat | Brief touched |
|---|---|
| Lock-screen digest tap | C |
| Morning chat home | A (state 3), I (daily digest) |
| Approve / edit / reject | A (gestures), B (edit drawer), I (counter-action thread) |
| Voice snooze | A (voice), H1 (policy snooze) |
| Tour declaration | A (chat input), H3 + H4 (multi-surface card) |
| Asset drop | A (multimodal), F (loading) |
| Bulk approve | A (batch mode), H4 (multi-surface dispatch) |
| Engagement notification | C (stakes-aware push), A (card variant), B6 (specialist drawer), I5 (trust score) |
| Bio polish | H2 (single-surface diff card) |
| Vacation mode | H1 (vacation state), banner across A |
| Audit dive | B4 / I2 (audit drawer), I3 (row detail), I (👎 feedback) |
| Background | P0.6 cache-rebuilder (engineering, brief G context) |
Gaps surfaced (worth designing if reviewer agrees)
- Lock-screen rich notification preview — brief C says push taps land in chat, but the iOS-native rich-content preview before the tap isn't designed. Worth a screen.md.
- "Why this stakes" affordance — brief A shows stakes badges but doesn't surface why a card was classified high vs medium. Quinn might want to know.
- First-time-vacation-mode confirmation — H1 mentions vacation mode but the first use needs an explainer state.
- Audit log → counter-action loop — I4 introduces counter-actions but the flow from "view a bad row" to "create a counter-action" isn't drawn step-by-step.
- Hand-off between iPhone and laptop — the bio-polish beat assumes she's back on iPhone. The web-fe (G4) story of switching mid-task isn't told.