Files
wehub-resource-sync 426e9eeabd
Benchmark Bridge Tests / benchmark (bunx @biomejs/biome check packages/lifeops-bench/src, benchmark-lint) (push) Waiting to run
Benchmark Bridge Tests / benchmark (bunx vitest run --config packages/lifeops-bench/vitest.config.ts --root packages/lifeops-bench --passWithNoTests, benchmark-tests) (push) Waiting to run
Build Agent Image / build-and-push (push) Waiting to run
Chat shell gestures / Chat shell gesture + parity e2e (push) Waiting to run
ci / test (push) Waiting to run
ci / lint-and-format (push) Waiting to run
ci / build (push) Waiting to run
ci / dev-startup (push) Waiting to run
Cloud Gateway Discord / Test (push) Waiting to run
Cloud Gateway Webhook / Test (push) Waiting to run
Cloud Tests / lint-and-types (push) Waiting to run
Cloud Tests / unit-tests (push) Waiting to run
Cloud Tests / integration-tests (push) Waiting to run
Cloud Tests / e2e-tests (push) Blocked by required conditions
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Deploy Apps Worker (Product 2) / Determine environment (push) Waiting to run
Deploy Apps Worker (Product 2) / Deploy apps worker to apps-control host (${{ needs.determine-env.outputs.environment }}) (push) Blocked by required conditions
Deploy Eliza Provisioning Worker / Determine environment (push) Waiting to run
Deploy Eliza Provisioning Worker / Deploy worker to Hetzner host (${{ needs.determine-env.outputs.environment }} @ ${{ needs.determine-env.outputs.deployment_sha }}) (push) Blocked by required conditions
Dev Smoke / Classify changed paths (push) Waiting to run
Dev Smoke / bun run dev onboarding chat (push) Blocked by required conditions
Dev Smoke / Vite HMR dependency-level smoke (push) Blocked by required conditions
Electrobun Submodule Guard / electrobun gitlink is fetchable (push) Waiting to run
gitleaks / gitleaks (push) Waiting to run
Markdown Links / Relative Markdown Links (push) Waiting to run
Publish @elizaos/example-code / check_npm (push) Waiting to run
Publish @elizaos/example-code / publish_npm (push) Blocked by required conditions
Publish @elizaos/plugin-elizacloud / verify_version (push) Waiting to run
Publish @elizaos/plugin-elizacloud / publish_npm (push) Blocked by required conditions
Quality (Extended) / Homepage Build (PR smoke) (push) Waiting to run
Quality (Extended) / Comment-only diff guard (push) Waiting to run
Quality (Extended) / Format + Type Safety Ratchet (push) Waiting to run
Quality (Extended) / Develop Gate (secret scan + UI determinism) (push) Waiting to run
Quality (Extended) / Develop Gate (lint) (push) Waiting to run
Sandbox Live Smoke / Sandbox live smoke (push) Waiting to run
Snap Build & Test / Build Snap (amd64) (push) Waiting to run
Snap Build & Test / Build Snap (arm64) (push) Waiting to run
supply-chain / sbom (push) Waiting to run
supply-chain / vulnerability-scan (push) Waiting to run
Build, Push & Deploy to Phala Cloud / build-and-push (push) Waiting to run
Test Packaging / Validate Packaging Configs (push) Waiting to run
Test Packaging / PyPI on Python ${{ matrix.python }} (push) Waiting to run
Test Packaging / Pack & Test JS Tarballs (push) Waiting to run
Test Packaging / elizaos CLI global-install smoke (node + bun) (push) Waiting to run
UI Fixture E2E / ui-fixture-e2e (push) Waiting to run
UI Fixture E2E / fixture-e2e (push) Waiting to run
UI Story Gate / story-gate (push) Waiting to run
vault-ci / test (macos-latest) (push) Waiting to run
vault-ci / test (ubuntu-latest) (push) Waiting to run
vault-ci / test (windows-latest) (push) Waiting to run
vault-ci / app-core wiring tests (push) Waiting to run
verify-patches / verify patches/CHECKSUMS.sha256 (push) Waiting to run
Voice Benchmark Smoke / voice-emotion fixture smoke (push) Waiting to run
Voice Benchmark Smoke / voiceagentbench fixture smoke (push) Waiting to run
Voice Benchmark Smoke / voicebench-quality unit smoke (push) Waiting to run
Voice Benchmark Smoke / voicebench TypeScript unit (no audio) (push) Waiting to run
Voice Benchmark Smoke / voice bench smoke summary (push) Blocked by required conditions
Windows CI / windows ([bun run --cwd packages/app-core test bun run --cwd packages/elizaos test bun run --cwd packages/cloud/shared test], app-and-cli) (push) Waiting to run
Windows CI / windows ([bun run --cwd packages/scenario-runner test bun run --cwd packages/vault test bun run --cwd packages/security test bun run --cwd plugins/plugin-coding-tools test], framework-packages) (push) Waiting to run
Windows CI / windows ([bun run --cwd plugins/plugin-elizacloud test bun run --cwd plugins/plugin-discord test bun run --cwd plugins/plugin-anthropic test bun run --cwd plugins/plugin-openai test bun run --cwd plugins/plugin-app-control test bun run --cwd plugins/pl… (push) Waiting to run
Windows CI / windows ([node packages/scripts/run-turbo.mjs run build --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/agent --concurrency=4 node packages/scripts/run-bash-linux-only.mjs scripts/verify-riscv64-buildpaths.sh node packages/scripts/run… (push) Waiting to run
Windows CI / windows ([node packages/scripts/run-turbo.mjs run typecheck --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/cloud-shared --concurrency=4 bun run --cwd packages/core test bun run --cwd packages/shared test], core-runtime, 75) (push) Waiting to run
Test Packaging / Build & Test PyPI Package (push) Waiting to run
Voice Workbench / headless workbench (mocked backends) (push) Has been cancelled
Voice Workbench / real acoustic lane (nightly, provisioned only) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:43:05 +08:00

176 lines
24 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MVP definition, personas & UX journeys — LifeOps Personal Assistant
## Summary
The MVP (GitHub project 15) is: **chat, onboarding, the current views, and centrally LifeOps** — scheduling, calendar, coordination, reminders, goals, todos, tasks, personal assistant. It must serve business users, children, adults with ADHD/ADD/Asperger's/autism, neurotypical people, and elderly people — with **no therapy language and no special rails**: the same single interface, exercised against real life (brushing teeth twice a day, workouts, getting the report done on time for class, life goals, night-owl/irregular-sleep schedules, medication-adjacent routines without medical framing, bills, appointments, elderly check-ins).
The guiding constraint is **minimize additional scope**: turn what exists into an MVP by fixing, testing, verifying and validating the important stuff; prefer deleting/simplifying over adding.
**Decision this doc lands:** the feature surface is already sufficient for the MVP. The persona *machinery* is also already built — a base eight-pack, 212-scenario persona corpus with a tier rubric and a coverage gate, now extended by planned G-K relationship/corpus ledgers before those scenario files land. What is missing is (a) **verification** — the base catalog still has authored-but-unverified scenarios concentrated exactly in the neurodivergent packs (ADHD capture, ADHD follow-through, shift-rotation); (b) **two persona voices with zero coverage** — a child as the user, and a student's "report due for class" deadline; (c) **the onboarding journey itself has no live scenario at all**; and (d) goals coverage is sleep-only. The plan below is verification-first and adds only scenario tests, never features.
## Current state (verified in code)
**One scheduler, structural behavior — real.** Every reminder/check-in/follow-up/watcher/recap/approval is a `ScheduledTask` routed through the runner at `plugins/plugin-scheduling/src/scheduled-task/runner.ts`; the personal-assistant side wires production deps in via `plugins/plugin-personal-assistant/src/lifeops/scheduled-task/runtime-wiring.ts` (see `plugins/plugin-personal-assistant/README.md:8-57`). The runner matches only structural fields, never `promptInstructions` — the persona authoring guide restates this as binding (`plugins/plugin-personal-assistant/test/scenarios/_catalogs/LIFEOPS_PERSONA_SCENARIO_AUTHORING.md:34-36`). Personas live in data (owner facts, anchors, no-reply policies, reminder intensity), not in code branches — this is exactly the "no special rails" product requirement, already implemented.
**Default packs — real.** `daily-rhythm` (gm/gn/daily check-in, auto-enabled after the wake-time answer; `plugins/plugin-personal-assistant/src/default-packs/daily-rhythm.ts:1-15`), `habit-starters` (8 habits including brush-teeth, shower, water, offered at first-run; `src/default-packs/habit-starters.ts:2`), `morning-brief`, `quiet-user-watcher`, `executive-assistant` (25 records), `inbox-triage-starter`, `followup-starter` (`README.md:134-153`). Conservative no-reply defaults (reminder retries once after 60 min then `skipped`; sensitive approvals fail closed — `README.md:87-99`).
**Onboarding — real, thin, untested at journey level.** First-run runs **in the live chat** (`packages/ui/src/hooks/useAvailableViews.ts:388-391`), with two paths: fast-start (defaults) and customize — five questions (name, timezone+windows, categories multi-select, nudge channel, relationships cadence) with per-question persistence and resume (`plugins/plugin-personal-assistant/src/lifeops/first-run/questions.ts:1-75`, `first-run/service.ts:448-500`). Coverage today is jsdom component tests (`packages/ui/src/components/shell/ContinuousChatOverlay.firstrun.test.tsx`, `packages/ui/src/App.chat-overlay-first-run.test.tsx`) and first-run unit tests. **Zero scenarios in the whole corpus touch first-run/onboarding** (grep of `plugins/plugin-personal-assistant/test/scenarios/*.scenario.ts` and `packages/scenario-runner/test/scenarios/`).
**Scenario corpus — large, persona-organized, partially verified.** 271 `.scenario.ts` files in `plugins/plugin-personal-assistant/test/scenarios/`, all `lane: "live-only"` (`test/scenarios/README.md:3-7`). Keyless merge-blocking coverage lives in `packages/test/scenarios/reminders/` (13 deterministic reminder-ladder scenarios driving the real `/api/lifeops/reminders/process`) and `packages/scenario-runner/test/scenarios/deterministic-lifeops-*.scenario.ts` (5 spine scenarios through the real scheduler tick). The base eight persona packs are tracked in `test/scenarios/_catalogs/*.catalog.json` with a tier rubric (T1 extraction → T4 adversarial) and a mechanical gate (`node packages/scripts/check-lifeops-persona-catalog-coverage.mjs --json`). Base-pack output at the time of the original audit: **target 212, authored 212, verified 134**. Planned G-K ledgers add relationship/corpus coverage targets before scenario files land. Per base pack:
| Pack | Persona | Verified / target |
|---|---|---|
| A1 adhd-capture-and-start | casey_adhd | **8 / 28** |
| A2 adhd-follow-through | casey_adhd | **5 / 24** |
| B1 night-owl-anchored-day | night_owl | 19 / 24 |
| B2 shift-rotation | rotating_shift | **4 / 22** |
| C1 traveler-timezone-truth | frequent_traveler | 25 / 28 |
| D1 comms-flood-triage | comms_flood | 24 / 26 |
| E1 low-activation-reengagement | low_activation | 25 / 28 |
| F1 neurotypical-control-adversarial | neurotypical_control | 24 / 32 |
"Verified" means a live-model run with a hand-read trajectory and judge score recorded in the catalog notes (e.g. `adhd-capture-and-start.catalog.json` entry `adhd-buried-commitment-ramble`: "Live Cerebras gpt-oss-120b run passed (judge 1.00)"). No CI lane runs the live-only corpus; verification is manual-with-evidence by design.
**Real-life matrix coverage today** (owner's list → feature → scenario test):
| Real-life scenario | Feature that covers it | Scenario tests |
|---|---|---|
| Brush teeth 2×/day | habit-starters pack + reminder ladder | 15 `brush-teeth-*` incl. 10 languages, night-owl, cancel/retry ✓ |
| Workouts | reminders + blockers | `workout-blocker-basic`, `workout-spanish`, `stretch-breaks` ✓ |
| Report done on time for class | OWNER_TODOS/CALENDAR + reminder escalation | **none — no student/child deadline scenario** ✗ |
| Life goals | plugin-goals + `OWNER_GOALS` + grounding loop (`plugins/plugin-goals/src/goal-grounding.ts`) | only `goal-sleep-{basic,spanish,french-formal}`**sleep-only** ◐ |
| Night owl / irregular sleep | anchors + `relative_to_anchor` triggers | B1 pack, 19/24 verified ✓ |
| Rotating shifts | re-anchoring + sleep-window protection | B2 pack, **4/22 verified** ◐ |
| Medication-adjacent, no medical framing | plain reminders | `vitamins-*` ×3 languages, `adhd-medication-refill-fuzzy-date-capture` ✓ |
| Bills | `OWNER_FINANCES` + approval queue | `bill-approval-and-payment`, `quarterly-tax-payment-runbook` ✓ (executive-flavored) |
| Appointments | CALENDAR + day-before reminder | `persona-*` dentist family (elderly, ESL, typo, voice-transcript) ✓ |
| Elderly check-ins | daily-rhythm check-in + quiet-user-watcher | `persona-elderly-nontechnical` (single dentist scenario) ◐ |
| Child as user | same single interface | **none** ✗ |
| Onboarding → first win | first-run service + seeded packs | **no live scenario** ✗ |
**Views today.** The launcher builds from `GET /api/views` plus ~30 builtin shell tabs (`packages/ui/src/hooks/useAvailableViews.ts:209-291`): chat, tasks, automations, triggers, documents, files, relationships, memories, plus developer surfaces (trajectories, runtime, database, logs, plugins, skills). Domain views live in per-domain plugins (`plugins/plugin-todos`, `plugin-goals`, `plugin-calendar`, `plugin-inbox`, `plugin-reminders`, `plugin-relationships`, `plugin-blocker`, `plugin-finances`); PA itself has no overview view by owner decision (`plugins/plugin-personal-assistant/CLAUDE.md`, "Views" section). A four-tier `viewKind` gate (`system`/`release`/`developer`/`preview`) exists (`useAvailableViews.ts:78-84`) — whether a fresh non-developer user actually sees only an MVP-sized view set is unverified.
**Doc drift (small, real).** Root `CLAUDE.md:348` / `AGENTS.md:348` still link `docs/automation-glossary.md`, deleted in commit `da86f5cce34` ("delete stuff"). Every agent following the LifeOps pointer hits a dead link.
**Bench context.** `packages/benchmarks/lifeops-bench` (Python) has a 10-persona library (`eliza_lifeops_bench/scenarios/_personas.py`) including an adult-diagnosed-ADHD designer (Casey Brennan, `_personas.py:265`) and comms-flooded executives — but no child and no elderly persona there either.
## Design considerations
- **Chat is the product; views are read surfaces.** Every persona journey below starts and mostly stays in chat. Views doctrine (uniform top bar, no side panels, no suggestion chips, agent-proactive-on-view-switch, view-scoped actions) is already adopted; nothing here adds view chrome.
- **"No special rails" is already the architecture.** Persona differences are owner facts + structural knobs (reminder intensity, anchors, no-reply policy, quiet hours) consumed by one runner. The MVP work is proving each persona's knob-set produces the right behavior, not building persona modes.
- **What competitors prove users love** (one-pass check of the ADHD/executive-function landscape — [Tiimo alternatives](https://lifestack.ai/blog/tiimo-alternative), [best ADHD apps 2026](https://blog.saner.ai/best-adhd-apps/), [executive-function apps](https://www.saner.ai/blogs/best-apps-for-executive-function)): Tiimo wins on making time *tangible* (visual timelines against time blindness); Goblin Tools wins on **task initiation** — breaking "clean the kitchen" into micro-steps with zero setup; Finch wins on low-pressure, non-shaming motivation. Our corpus already encodes all three as behaviors: `adhd-task-initiation-two-minute-step`, `lowact-make-whole-list-smaller-bulk-shrink`, `f1-shame-bait-declined-productivity-lecture`. The differentiator we have that they don't: one conversational agent across the user's real channels (Telegram/iMessage/Discord/WhatsApp) that *does the coordinating*, instead of another app to open. That makes **capture-from-mess and follow-through** the two make-or-break loops — precisely the two least-verified packs.
- **Children and elderly need the same interface, gentler defaults.** The elderly persona scenario proves rambling non-technical phrasing works for one appointment; children need the same proof for their real life (homework, morning routine) in child-plain language. In-app + push are the child-safe channels (no email/finance surface needed).
- **Verification is the scarce resource.** A live-verified scenario with a hand-read trajectory is worth more to the MVP than any new capability. The catalog `status` field + coverage gate already give us a mechanical definition of done.
## Personas (8)
Each: context → journey (first-open → onboarding → first win → week 2) → loves / struggles → intuitiveness fix. Struggles are grounded in the current UX, not hypotheticals. Where a bench persona already exists, reuse its name for continuity with `packages/benchmarks/lifeops-bench/eliza_lifeops_bench/scenarios/_personas.py`.
**P1 — Casey, 29, product designer with ADHD** (phone-first; Telegram connector; maps to packs A1/A2 and bench persona Casey Brennan, `_personas.py:265`).
- *First-open → onboarding:* opens the app mid-chaos, takes fast-start — zero questionnaire tolerance.
- *First win:* dumps a rambling multi-topic message; the one buried commitment ("call pharmacy before 5") is captured and fires on time (`adhd-buried-commitment-ramble`, verified at judge 1.00).
- *Week 2:* the follow-through ladder chases twice then shrinks the ask; a missed step gets a replan, never a lecture (`adhd-followthrough-missed-step-replan-without-guilt` — authored, unverified).
- *Loves:* capture-from-mess with no forms; non-shaming retries; the two-minute-step task-initiation help (`adhd-task-initiation-two-minute-step`).
- *Struggles:* trust — only 13 of 52 ADHD-pack scenarios are verified; if capture or escalation misbehaves once, the app gets deleted (`adhd-followthrough-rage-quit-delete-trap` encodes exactly this).
- *More intuitive:* nothing new — verify A1/A2 to the same bar as C1/D1/E1.
**P2 — Sam, 12, middle-schooler** (hand-me-down phone; in-app + push only — no email, no finance surface).
- *First-open → onboarding:* parent provisions the device; Sam answers "What should I call you?" and accepts brush-teeth from the offered habit-starters.
- *First win:* morning brush-teeth nudge in kid-plain words, marked done from chat.
- *Week 2:* "i have a book report friday and i haven't started" → captured todo, back-planned steps, done on time.
- *Loves:* it talks like a person, not a chore chart; no app maze.
- *Struggles:* customize Q2 ("What time zone are you in, and what counts as your morning / evening?") and Q5 ("relationships and default cadence", `questions.ts:46-70`) are adult-worded; multi-select-in-chat is hard at 12. Zero scenarios exist in a child's voice.
- *More intuitive:* fast-start must be genuinely sufficient (structurally it is — the defaults pack needs only wake time); prove it with child-voice scenarios instead of rewording anything.
**P3 — Priya, 21, college student, night owl** (laptop + phone; Discord connector; maps to pack B1).
- *First-open → onboarding:* onboards at 2am; states morning = 11:0014:00 and it is accepted without judgment.
- *First win:* her day anchors to her actual wake, not 7am (`night-owl-observed-wake-drift-adaptation`, verified pack pattern).
- *Week 2:* term-paper deadline back-planned across her real, nocturnal work windows; quiet-hours sleep protection holds (`persona.night-owl-quiet-hours-sleep-protection`).
- *Loves:* `relative_to_anchor` scheduling — the assistant that doesn't assume mornings (B1 is 19/24 verified).
- *Struggles:* deadline work — the student "report due for class" flow has zero scenarios; today that journey is exercised only by executive-flavored flows.
- *More intuitive:* student-voice deadline scenarios asserting the reminder ladder fires inside her active windows.
**P4 — Ray, 47, rotating-shift nurse** (Android; WhatsApp/SMS connector; maps to pack B2).
- *First-open → onboarding:* onboards between shifts; fast-start, then tells the agent the roster.
- *First win:* "nights starting Monday" re-anchors gm/gn and protects the new sleep window (`shift-rotation-capture-new-shift-pattern` — authored, unverified).
- *Week 2:* a shift swap re-anchors routines and holds low-priority nudges during the moved sleep window.
- *Loves:* the only assistant whose "morning" moves with the roster; medication-adjacent routines stay plain reminders (vitamins pattern), no medical framing.
- *Struggles:* B2 is the least-verified pack (4/22) — re-anchoring is exactly the behavior most likely to be silently wrong, and a wrong anchor wakes a night-shift nurse at 7am.
- *More intuitive:* verify B2; nothing new.
**P5 — Marcus, 33, autistic software engineer** (desktop app; Discord connector; maps to packs E1 + F1).
- *First-open → onboarding:* chooses the customize path deliberately — he wants the explicit five questions and explicit defaults.
- *First win:* plans stated literally and executed exactly as stated; two-phase preview-then-confirm before any write (authoring rule 3).
- *Week 2:* predictable check-in cadence, no surprise tone shifts, no unsolicited scaffolding (`f1-neurotypical-no-scaffolding-unless-signaled` — authored, unverified — is his control test too).
- *Loves:* structural predictability — same trigger, same wording, same time; the runner's structural-fields-only contract is what makes this a guarantee rather than a vibe.
- *Struggles:* the launcher merges ~30 builtin tabs including `trajectories`/`runtime`/`database` (`useAvailableViews.ts:209-246`) — overwhelming and off-doctrine for a fresh install if `viewKind` gating leaks.
- *More intuitive:* verify the fresh-user view set is the curated MVP set.
**P6 — Dot, 74, retired teacher** (iPad; iMessage; daughter set it up).
- *First-open → onboarding:* daughter completes setup; Dot talks to it like a person ("Hello dear, I hope I am doing this right…").
- *First win:* dentist Thursday 3pm captured from a rambling paragraph + day-before reminder (`persona-elderly-nontechnical` — the verified pattern).
- *Week 2:* daily check-in she reliably answers; the quiet-user-watcher catches the day she doesn't; bill reminders in plain words.
- *Loves:* no menus, no tech vocabulary required; the agent arranges around her ("so I have time to arrange the bus").
- *Struggles:* one verified scenario covers her entire life; the daily check-in → missed-checkin → gentle follow-up loop — her family's actual reason for installing it — is covered only generically, and its no-reply leg (check-ins retry once after 24h then `expired`, `README.md:91`) is unverified in her voice.
- *More intuitive:* verify the elderly week-1 loop end-to-end including the no-reply path and the re-engagement tone bar.
**P7 — Elena, 41, small-business owner** (desktop + iPhone; Gmail + Google Calendar connectors; maps to packs D1 + F1 and the executive-assistant pack).
- *First-open → onboarding:* customize path; enables inbox triage + follow-ups (Q3 categories, gated on Gmail for the triage pack).
- *First win:* morning brief with the three things that matter (`morning-brief` pack on `wake.confirmed`).
- *Week 2:* VIP breakthrough during quiet hours (`comms-flood-quiet-hours-vip-exception`, verified), bill approval that fails closed on silence (`README.md:96-99`).
- *Loves:* comms-flood triage (D1 24/26 verified) and the approval queue's conservative no-reply defaults.
- *Struggles:* nothing structural — she is the best-covered persona. Her risk is regression while the neurodivergent packs get attention, which is F1's whole job (24/32 verified).
- *More intuitive:* keep F1 green; no changes.
**P8 — Jordan, 39, separated co-parent** (iPhone + desktop; iMessage/Calendar; maps to planned pack J1 and bench persona `jordan_coparent`).
- *First-open → onboarding:* fast-start, then connects calendar and messages once the custody cadence becomes the immediate pain.
- *First win:* "Can you keep me from missing swap days?" → recurring exchange reminders and a neutral calendar view of the custody rhythm.
- *Week 2:* a last-minute swap request becomes an owner-approved, civil logistics draft; kid details stay private and no legal/therapy advice appears.
- *Loves:* factual language, neutral tone, no extra emotional interpretation, and reminders that keep both households coordinated.
- *Struggles:* co-parenting work blends scheduling, money, messaging, and child privacy; without a dedicated scenario ledger it is too easy to test each domain separately and miss the real cross-domain handoff.
- *More intuitive:* author J1 scenarios from the planned catalog, asserting custody rhythm, swap approvals, expense splits, and kid-privacy firebreaks as structural outcomes.
## Open questions → answers
**Q1. Do children as users change product scope (parental controls, COPPA-style gating)?** Owner said children are in scope with no special rails. *Answer:* treat the child as an owner on a device a parent provisioned; restrict nothing in-product for MVP beyond what fast-start already implies (no finance/inbox packs offered without connectors). Compliance/account-holder questions are a Cloud/legal concern, not a LifeOps runtime concern — **needs owner sign-off eventually; default: no in-product gating for MVP.**
**Q2. Should onboarding questions be reworded for children/elderly?** *Answer:* no rewrite for MVP. Fast-start already bypasses the adult-worded customize questions, and the planner (a live LLM) renders questions conversationally — the strings in `questions.ts` are a contract, not verbatim UI. Prove with scenarios that fast-start + chat handles a child and an elderly user; only touch wording if scenarios fail.
**Q3. Is a new "child pack" or "student pack" needed?** *Answer:* no. `habit-starters` + reminder ladder + OWNER_TODOS already cover the child/student matrix rows. The gap is scenario coverage (child voice, homework deadline), not features. Adding packs would violate the minimize-scope constraint.
**Q4. Should the live-only persona corpus get a CI lane?** *Answer:* not for MVP. The manual verify-with-evidence flow (catalog `status` + hand-read trajectories) matches PR_EVIDENCE doctrine and costs nothing in CI keys/flake. The coverage gate script already makes progress mechanical. Revisit post-MVP with a nightly budget.
**Q5. Which model verifies scenarios?** *Answer:* follow existing precedent — verified entries used live Cerebras `gpt-oss-120b` (catalog notes; recipe in team memory). Any live model qualifies per PR_EVIDENCE ("live model, not the proxy"); record model + judge score in the catalog note as existing entries do.
**Q6. Do we need a goals overhaul for "life goals"?** *Answer:* no. The grounding loop (push for a success definition → preview → confirm) is goal-agnostic (`plugins/plugin-goals/src/goal-grounding.ts`); only the scenario corpus is sleep-only. Author non-sleep goal scenarios (fitness, savings, learning) against the same loop.
## Recommendation (ordered, minimal-scope)
1. **Verify the ADHD packs (A1, A2)** — 39 authored-unverified scenarios in the make-or-break capture + follow-through loops. Live runs, hand-read trajectories, catalog `status` flips with evidence inline in the PR.
2. **Verify the shift-rotation pack (B2)** — 18 unverified; irregular-sleep re-anchoring is the highest-silent-failure-risk behavior.
3. **Author + verify the two zero-coverage persona voices**: child daily routine (P2) and student report-deadline (P2/P3), as `live-only` scenarios in the existing corpus with catalog entries. Scenarios only; no features.
4. **Author + verify the onboarding journey scenario** (fast-start and customize) → seeded `daily-rhythm`/offered `habit-starters` → first reminder actually materialized. This is the funnel's first mile and currently has only jsdom tests.
5. **Verify the elderly week-1 loop** (daily check-in fires → answered → missed → quiet-user follow-up) building on `persona-elderly-nontechnical`.
6. **Broaden goals beyond sleep** with 34 non-sleep goal-grounding scenarios.
7. **Verify the fresh-user MVP view set** (`viewKind` gating hides developer/preview surfaces) and finish F1 control verification (8 remaining) so neurotypical behavior doesn't regress.
8. **Fix the dead `docs/automation-glossary.md` link** in root CLAUDE.md/AGENTS.md (restore or repoint) — trivial, but every coordinating agent trips on it.
## Out of scope (MVP non-goals)
- New default packs, persona "modes", child/elderly UI variants, or any therapy-adjacent framing or rails.
- Visual-timeline / gamification features (competitor parity) — chat + reminders + views as they exist.
- A CI lane for the live-only corpus; nightly live benchmarking (LifeOpsBench continues separately).
- Onboarding question rewrites, new views, view chrome, or launcher redesign beyond verifying existing `viewKind` gating.
- New connectors; anything in `executive-assistant` pack beyond keeping F1/D1 green.
## Proposed issues
1. [mvp] Verify ADHD capture + follow-through packs (A1 8/28, A2 5/24) with live-LLM runs — P0
2. [mvp] Verify shift-rotation pack B2 (4/22) — irregular-sleep re-anchoring — P0
3. [mvp] Author + verify child-voice and student report-deadline scenarios (zero coverage today) — P0
4. [mvp] Author + verify first-run onboarding journey scenarios (fast-start + customize → first reminder) — P1
5. [mvp] Verify elderly week-1 loop: daily check-in, missed-checkin follow-up, quiet-user watcher — P1
6. [mvp] Author + verify non-sleep life-goal grounding scenarios (goals corpus is sleep-only) — P1
7. [mvp] Verify fresh-user MVP view set + finish F1 neurotypical-control pack (24/32) — P2
8. [mvp] Fix dead docs/automation-glossary.md link in root CLAUDE.md/AGENTS.md — P2