Skip to main content

App requirements coverage — gap analysis + remaining-work backlog

Date: 2026-06-28 · Branch: feat/mvp1-personas-authz @ ceaf6cb (== main) · Status: analysis only (no app code changed).

Purpose. Define "the rest of the work for the app" by mapping every MVP-1 requirement (the source of truth for what) against what is actually built in the app (routes / blocs / repositories / SDK facade symbols), so the next slices are picked from requirements rather than guessed. Each BUILT claim is verified against the real route/bloc/facade tree, not against a backlog doc's say-so.

Sources reconciled

  • Requirements (the what)app/test-gallery/authored/developer/requirements/ index.md, prioritization.md, decisions-log.md, functional/*.md (13 epics), non-functional/*.md (7 epics).
  • Gap ledgers (the SDK state)docs/decisions/2026-06-22-northstar-poc-domain-gaps.md (all 11 SDK domain gaps BUILT 2026-06-23), docs/decisions/2026-06-25-persona-lens-gap-review.md, docs/superpowers/plans/2026-06-28-p1p2-consolidated-backlog.md (① Personas & Authorization merged: 11 DONE / 4 FIX-NOW / 13 DECIDE / 16 DEFERRED).
  • App surface (the verified built)app/lib/inside/routes/authenticated/**, app/lib/inside/blocs/**, app/lib/outside/repositories/**, and the Client facade in packages/client_sdk/lib/src/client/client.dart.

Two reconciliation facts that drive the verdicts

  1. The requirements docs predate the ① Personas & Authorization sub-project (bd99f24..5248f01). Every NFR-AUTHZ-* and most FR-ADMIN-* rows are marked 🔨 to build in the requirement docs, but the capability model, isParental gate, owner overlay, zero-last-admin/owner guards, supervised-action path, child-consent gate, /governance UI, AdminGuard and the /admin hub shipped (consolidated backlog D-1..D-8, cited symbols). Those areas are scored on code, not the stale doc.
  2. The SDK is much wider than the UI. createReward/Activity/ActivityGate, requestRewardRedemption/requestActivityRedemption/getRedemptions, createBudgetCategory, hasEntitlement and the whole catalog adapter are on the facade with no bloc, no repository, no screen calling them. A backlog that says "rewards/redemption done" reflects the SDK, not a usable surface. Those areas are UNBUILT (UI) with SDK ready = yes.

Coverage table

Requirement areaStatusWhat's missingSDK ready?
Today (chore surface)BUILTOnly photo-on-completion (FR-TODAY-7, MVP-2) + recommend AI (stub). 8/10 FRs shipped; 2 open decisions resolved.yes
Catalog (browse/redeem IA)UNBUILTThe whole child-facing tabbed browse (chores/bounties/activities/rewards) + redeem + activity-lock visibility. Route named catalog/ is actually a parent chore library, not the specced browse.yes (rewards/activities/gates/redemptions facade + adapter all built)
Money & EnvelopesPARTIALFoundations only. The actual FR set (envelopes, moveFunds, Unallocated landing envelope, goal-envelope balance, default allocation, Household.address) is unbuilt; core moveFunds/transferTokens verb is absent from the facade.no (read-only walletOf, append-only ledger, zero-floor, EarningsSplit auto-split shipped; the move/envelope layer needs SDK + schema work)
Member ProfilePARTIAL6 UI-only gaps: avatar colour, home-room chip, goal "Reached"/dueLabel, edit goal, goal emoji/image. Core (identity, traits, read-only roles+wallet, goals CRUD incl. request/approve) shipped.yes (all 6 backed by present fields/verbs)
OnboardingPARTIALMinimal setup/ wizard exists (name household → add first kid → done). Full FR set unbuilt: terms acceptance, consent-gated child add (VPC), economy config, first-chore, co-parent invite, checklist persistence.yes (services exist)
AdminPARTIALHub + AdminGuard + Roles&owners (/governance) + Houses&rooms + Household-settings shipped. Unbuilt: Catalog CRUD, Economy config UI, Default buckets, Feature-flags UI, Family budget, Member-management/role-grants UI, Billing (owner-gated).yes (services exist; updatePlace built) except Billing/owner-billing surface
Settings (More hub)PARTIALOnly a gated Admin tile + empty state. Unbuilt: persona item list, pending-item badge, Appearance, Accessibility, Account, About/legal, Help, Notifications-prefs entry.mostly (pending badge needs a watchPendingBadgeCount aggregator)
Notifications (local tier)UNBUILTEverything: permission, per-member prefs+quiet-hours, chore-due local reminders, approval prompts, tap-routing. Only a coming-soon Admin row.no (net-new NotificationsService + LocalNotificationsAdapter + prefs table)
Account & profile mgmtPARTIALSign-up/sign-in/forgot-password pages scaffolded + repo signIn/signOut/requestPasswordReset exist; missing error-states, routing, secure SessionStore, sign-out entry, updateEmail.partial — SDK gap: Client.auth.updateEmail; secure-storage impl pending
Print & printablesPARTIALPer-kid + per-room PDF lists shipped. Remaining: envelope-column on chore row (FR-PRINT-4, not built), hide button when flag off (FR-PRINT-1), analytics-event rename (FR-PRINT-5).yes (pure Dart; envelope column soft-deps Money model)
Visual timersUNBUILTDsTimerRing atom, ticker controller, Today integration, reduced-motion variant, analytics. Docs only.yes / not-needed (estimateMin on chore; model-agnostic atom)
RoutinesUNBUILTAdmin builder, Today first-then strip, step-advance, partial-session persistence, scheduling. Per-member subtasks exist but that is a checklist within one chore, not a routine of chores.no (net-new Routine/RoutineRun model + service + adapter first)
Personas (authz)BUILT① shipped: 40-cap model, isParental/owner/helper overlays, zero-last guards, transfer-ownership, supervised path, authz events, RLS authz tests. Residuals only: FN-1 helper-attribution enum, doc-truthing, HS-1 ratification.yes
Terms & consentPARTIALAdult ToS gate (TermsSessionGate/acceptTerms) + child VPC capture/revoke (/governance, owner-bound, child-only) shipped. Missing: consent versioning + re-consent SLA (NFR-CONSENT-3/4 = HARD-2, deferred-legal), offline consent-hold, VPC method (counsel-gated).partial (capture built; versioning/currency TODO)
Children's privacy (COPPA)PARTIALProfile-PII gate built (assertChildDataAllowed → traits/country/goals). Missing: financial-PII gate (ledger/approvals/spend/redemptions — HARD-1, deferred-legal), data-minimization, no-marketing-to-children, parental review/deletion.partial — pre-alpha, no real minor data, HARD gates intentionally not yet built
Security & data protectionPARTIALRLS household-scoping policies built. Missing: local SQLCipher whole-DB encryption, complete zero-floor SQL trigger, service-role-key CI scan, key-rotation process/CI, Storage ACLs, per-table RLS regression suite.partial (RLS built; trigger partial; local-crypto to build)
Offline syncUNBUILTThe whole substrate: Supabase cloud adapter + hydrate-once watch + Drift pending_writes queue + ledger-ordered-replay/LWW conflict resolution + idempotency + offline zero-floor/consent holds. Decisions resolved; build pending.no (architectural — SP3 cloud adapter is the build surface)
AccessibilityPARTIALA11y floor is designed into the DS atoms (DsTheme rule). Formal gate unverified: semantic-label audit, 48dp targets, AA contrast both themes, reduced-motion app-wide, focus order, manual SR pass, 200% scale.n/a (frontend/DS)
Analytics & telemetryUNBUILTMixpanel was removed in an earlier pass. Missing: re-introduce behind config+consent gate, minor-safe pre-emit filter, three-bucket separation, KPI-event coverage, release/nightly audit.no (net-new substrate)

Tally: 2 BUILT, 12 PARTIAL, 6 UNBUILT, 0 area-level DEFERRED (deferred items are sub-scopes, enumerated in the MVP-2 boundary below).


Per-area detail (every PARTIAL / UNBUILT)

Catalog — UNBUILT (SDK ready) · biggest SDK-ready slice

The catalog/ route is a parent chore library (CatalogPage over ChoresRepository), not the requirement's "Catalog" epic. None of FR-CATALOG-1..7 exist: no tabbed browse, no per-member eligibility filtering, no reward redeem, no activity-lock visibility, no redemption history. Yet the facade is complete — getRewards/createReward, getActivities/createActivity, createActivityGate/getActivityGates, requestRewardRedemption/requestActivityRedemption/ getRedemptions/watchRedemptions, and SupabaseCatalogAdapter are all built and untouched by any presentation code. This is the missing "spend" half of the economy loop (earn on Today → spend in Catalog → activity-gates re-gate chores). Work = blocs + pages + a rewards/activities/redemptions repository + flow-tests. No SDK work.

Money & Envelopes — PARTIAL · the core SDK verb is absent

Shipped: read-only wallet (walletOf, spend/save/give on Member Profile), append-only LedgerService, zero-floor debit guard, EarningsSplit auto-split at approve. Unbuilt and SDK-not-ready: moveFunds/transferTokens does not exist on the facade (FR-MONEY-1), the Unallocated earn-landing envelope (FR-MONEY-4), envelope-id ledger-tag generalization (FR-MONEY-3), goal-envelope balance (FR-MONEY-8), optional household default allocation (FR-MONEY-5), Household.address migration (FR-MONEY-12). Decisions-log D-MONEY-2 puts the two 🧊 may-stage FRs (5 and 8) in MVP-1. This is a data reshape (service + facade + schema + migration) before any transfer/allocation UI. Coordinate with HS-4 sign-off (auto-split vs Unallocated reshapes the earn-credit path).

Member Profile — PARTIAL · 6 UI-only gaps over a ready SDK

Built: identity header+edit, trait chips, read-only roles, read-only wallet, goals CRUD with request→approve lifecycle. Remaining (all SDK-backed, frontend-only): FR-PROFILE-2 avatar from colorKey, -3 home-room chip (homePlaceId+getPlaces()), -10 goal "Reached"/dueLabel (completeGoal), -11 edit goal (updateGoal), -12 goal emoji/image. Closes the "done" milestone.

Onboarding — PARTIAL · minimal wizard exists

setup/ does name-household → first-kid → done. The full FR set is unbuilt: admin profile + terms acceptance (FR-ONBOARD-2), COPPA-critical consent-gated child add with VPC (FR-ONBOARD-3), economy config (-5), first chore (-6), co-parent invite (-4), checklist persistence (-7). All backing services exist (createHousehold, addMember, acceptTerms, inviteCoParent, updateEconomyConfig, createChore). Depends on the Account auth leg for adult sign-up.

Admin — PARTIAL · hub shipped, config rows missing

Built (verified): AdminGuard, /admin hub, Roles&owners→/governance, Houses&rooms→/houses, Household-settings. Coming-soon placeholders / unbuilt: Catalog CRUD (FR-ADMIN-2 — overlaps the Catalog editor slice), Member-management add/edit/remove + role grants (FR-ADMIN-3; role grants exist in /governance, full member CRUD does not), Economy config UI (-6), Default buckets (-7), Feature-flags UI (-8), Family budget (-10, budget service partly stubbed), Billing owner-gated (-11, billing surface unbuilt → DF-13).

Settings (More hub) — PARTIAL · scaffold only

"More" tab is a single gated Admin tile + empty state (appearance toggle + sign-out live in the shared header). Unbuilt: persona-correct item list (FR-SETTINGS-1), pending-item badge (-3, needs watchPendingBadgeCount), Appearance route (-4), Accessibility route (-5), Account route + sign-out entry (-6), About/legal (-7), Help (-8). D-SETTINGS-4 adds a minimal Notifications-prefs route. Mostly routing; depends on Account + Notifications for the surfaces it links to.

Account & profile management — PARTIAL · auth half-wired

Blocs (auth, sign_up, forgot_password) + pages scaffolded; SdkAuthRepository.signIn/ signOut/requestPasswordReset + _rethrowSafe exist. Missing: post-auth routing + error-state UI (FR-ACCOUNT-1/2), sign-out entry point (-3), deep-link reset + new-password screen (-4), secure SessionStore impl behind gotrueStorage (-5, SQLCipher), error message-mapping (-6), profile edit + email change (-7, SDK gap Client.auth.updateEmail). Children-are-profiles (-8) is an enforced invariant, no separate surface.

PrintableChoreList.buildMemberList/buildPlaceList + real PDF pipeline shipped (Home tab). Remaining: envelope-column on the chore row (FR-PRINT-4, not built — soft-deps the Money envelope model), hide button when printableLists flag off (-1), chore_list_printed analytics rename (-5).

Notifications (local tier) — UNBUILT (SDK not ready)

Net-new end-to-end: NotificationsService (schedule/quiet-hours/cancel) + LocalNotificationsAdapter (wraps flutter_local_notifications) + NotificationsRepository + notification_preferences table (household-RLS). FR-NOTIFY-1..5. Adapter interface designed to swap for PushNotificationsAdapter (MVP-2). Push, milestones, digests all MVP-2.

Visual timers — UNBUILT (no SDK work)

Pure frontend differentiator: DsTimerRing atom (animated arc/fill), reduced-motion+a11y variant, local ticker controller, app-lifecycle pause, Today integration for estimateMin > 0, analytics. FR-TIMER-1..6. estimateMin already on the chore model.

Routines — UNBUILT (SDK not ready)

Requires net-new first-class entities Routine(orderedStepRefs, schedule) + RoutineRun(date, completedStepIndices) + RoutineService + RoutineAdapter (Drift+Supabase) before UI: admin builder, Today first-then strip, step-advance, partial-session persistence, daily/day-of-week schedule. FR-ROUTINE-1..5. Composes with the existing chore_completed earn path.

Adult ToS gate + child VPC capture shipped. Remaining: consent versioning + version-gating (NFR-CONSENT-3), re-consent within SLA (-4) — both = HARD-2 (checkConsentCurrency is TODO), deferred-legal until a ToS/privacy version bump affects real minors. VPC method (email-plus / card-on-file) is counsel-confirm (D-COPPA-1/D-CONSENT-1).

Profile-PII consent gate built. Remaining: financial-PII gate over ledger/approvals/ spend_requests/redemptions/token_batches (HARD-1, deferred-legal), data-minimization (NFR-COPPA-3), no-marketing-to-children + analytics scrub (-4, ties to Analytics), parental review/deletion + erasure cascade (-5, DF-5). Pre-alpha with no real minor data, so the two HARD gates are intentionally not yet built — but they are MVP-1 launch blockers for the audience.

Security & data protection — PARTIAL

RLS policies built (NFR-SEC-1). Remaining: service-role-key CI scan (-2), local SQLCipher whole-DB encryption + at-rest/in-transit verify (-3, D-SEC-1), Storage ACLs for photos (-4), key-rotation process+CI (-5), complete zero-floor SQL trigger (-7, "partial"), per-table RLS regression suite (-1).

Offline sync — UNBUILT (architectural gate)

All decisions resolved (D-SYNC-1..5: ledger-ordered replay + LWW, household-level full sync, optimistic approvals as "pending", reconnect-foreground-only, pending_writes schema locked) but nothing built. The SP3 Supabase cloud adapter + hydrate-once watch + durable write queue + idempotent ledger-safe sync (NFR-OFFLINE-1..6) is the build surface. Foundational for the cloud path.

Accessibility — PARTIAL (floor designed-in, gate unverified)

The DS-atom a11y floor is a design rule, but the 7 NFR-A11Y gates are formally unverified: semantic labels, 48dp targets, AA contrast both themes, reduced-motion app-wide, focus order, manual SR pass on core flows, 200% text scale. A11y-preferences panel is MVP-2.

Analytics & telemetry — UNBUILT

Mixpanel removed earlier; the substrate (config+consent-gated emission, minor-safe pre-emit filter, three-bucket separation, opaque ids, KPI-event coverage, release/nightly audit — NFR-ANALYTICS-1..10) is net-new. It is the measurement substrate every other KPI rolls up to.


MVP-1-remaining vs MVP-2 boundary

MVP-1 remaining (still to build for first launch): Catalog browse/redeem + reward/activity/gate editor · Money & Envelopes (move/Unallocated/ goal-envelope) · Member-Profile 6 gaps · Household T7 restructure + Family Goals · Visual timers · Routines · Onboarding full wizard · Admin config rows (Catalog CRUD / economy / buckets / flags / family-budget / member-mgmt) · Settings/More hub · Account auth finish · Notifications (local) · Print polish · Gates: Offline-sync substrate, Security hardening, Analytics substrate, Accessibility formal gate, and the two legal-gated HARD COPPA gates (financial-PII gate, consent re-capture — deferred in build until real minor data, but launch-blocking for the audience).

MVP-2 / deferred-by-design (NOT remaining MVP-1 work): Chore photo submissions + content moderation (token-economy/RICE MVP-2) · Push + milestone + digest notifications · Kid-mode PIN / profile-switching (DF-7) · TV/kiosk display identity (DF-8) · Subscription tiers + billing surface + non-owner-admin paywall (DF-13) · Allowance automation · Dashboards · History/ledger feed UI · Kudos · Step-breakdown as a standalone feature · Activity-gating advanced (per-kid gates, daily/weekly re-lock — LD-4/LD-5 ratified one-time/per-activity for MVP-1) · AI recommender (recommend stub) · Standalone babysitter Helper invite + member_access persistence (DF-1) · Per-member intra-household RLS visibility (HS-2 fast-follow) · Aging-up 13/18 (DF-9) · Therapist persona (DF-12) · Peer/self-governed mode (DF-6) · Privacy & GDPR / erasure / backup-portability (pre-EU) · Cash-out · Family calendar (build-vs-integrate) · OS widgets · Email digests · Localization · Audit-log surface (DF-4) · Search · Token-fading (Phase 2) · Clinical OT framework (Phase 2).


Prioritized "rest of the work" backlog (dependency order, SDK-ready first)

Recommended NEXT: RW-01 — Token-economy Catalog UI (reward/activity editor + child browse/redeem + activity-gate editor + redemption history). It is the single largest SDK-ready slice (rewards/activities/gates/redemptions facade + adapter all built, zero UI), it completes the missing "spend" half of the earn→spend→gate economy loop, and — per the prior steer "reward/activity next as they can block chores" — activities gate chores (ActivityGate.requiredChoreId, already enforced in EconomyService), so it unblocks the gating loop and the Admin Catalog-CRUD row. No data-layer work required.

IDTitleSizeStatusSDK ready?SatisfiesDepends on
RW-01Token-economy Catalog UI — parent reward/activity editor + activity-gate editor + child tabbed browse + redeem + redemption historyLUNBUILTyesFR-CATALOG-1..7, FR-ADMIN-2
RW-02Member-Profile finish — avatar colour, home-room chip, goal Reached/dueLabel, edit goal, goal emoji/imageS–MPARTIALyesFR-PROFILE-2,3,10,11,12
RW-03Household T7 people-surface — read-only member tiles (wallet+goal chip) + Family Goals card + read-only budget summaryMPARTIALyes (poll-first; watchGoals deferred)FR-HOUSEHOLD-1..8RW-05 (budget summary), RW-08 (budget figures)
RW-04Visual timers — DsTimerRing + ticker + Today integration + reduced-motion variant + analyticsMUNBUILTyes/n-aFR-TIMER-1..6
RW-05Admin config buildout — Catalog CRUD, Economy config, Default buckets, Feature-flags, Family budget, Member-management/role-grantsLPARTIALyes (Billing excepted)FR-ADMIN-2,3,6,7,8,9,10RW-01 (shares editor)
RW-06Settings/More hub — persona item list + pending badge + Appearance/Accessibility/Account/About/Help routesMPARTIALmostly (watchPendingBadgeCount)FR-SETTINGS-1..8RW-09, RW-11
RW-07Print polish — envelope column + flag-hide + analytics renameSPARTIALyesFR-PRINT-1,4,5RW-08 (envelope model)
RW-08Money & Envelopes — moveFunds verb + Unallocated envelope + envelope-id tag + goal-envelope balance + default allocation + Household.address; then transfer/allocation UILPARTIALno (data reshape first)FR-MONEY-1..12HS-4 sign-off
RW-09Account & profile mgmt finish — error/routing, secure SessionStore, sign-out entry, error-mapping, updateEmail verbMPARTIALpartial (updateEmail gap)FR-ACCOUNT-1..8RW-14 (SessionStore crypto)
RW-10Onboarding full wizard — terms + consent-gated child add (VPC) + economy config + first chore + co-parent invite + checklistM–LPARTIALyesFR-ONBOARD-1..7RW-09 (adult signup leg)
RW-11Notifications (local tier) — NotificationsService + LocalNotificationsAdapter + prefs table + permission + reminders + approval prompts + tap-routingLUNBUILTno (net-new)FR-NOTIFY-1..5
RW-12Routines — Routine/RoutineRun model + RoutineService + RoutineAdapter, then admin builder + Today first-then strip + persistence + schedulingLUNBUILTno (net-new model first)FR-ROUTINE-1..5
RW-13Offline-sync substrate — Supabase cloud adapter + hydrate-once watch + pending_writes queue + ledger-ordered/LWW conflict resolution + offline holdsLUNBUILTno (architectural)NFR-OFFLINE-1..6
RW-14Security hardening — SQLCipher local encryption + complete zero-floor trigger + service-role CI scan + key-rotation + Storage ACLs + RLS regression suiteM–LPARTIALpartialNFR-SEC-2..7
RW-15Analytics substrate — Mixpanel behind config+consent gate + minor-safe pre-emit filter + three-bucket + KPI events + auditMUNBUILTno (net-new)NFR-ANALYTICS-1..10
RW-16Accessibility formal gate — labels + 48dp + AA contrast + reduced-motion app-wide + focus order + manual SR pass + 200% scaleMPARTIALn-aNFR-A11Y-1..7
RW-L1COPPA financial-PII gate (HARD-1) — extend assertChildDataAllowed to ledger/approvals/spend/redemptions/token_batchesMDEFERRED (legal)partialNFR-COPPA-2, NFR-SEC-6real minor data
RW-L2Consent versioning + re-consent (HARD-2)checkConsentCurrency + re-consent SLA + version-gatingMDEFERRED (legal)partialNFR-CONSENT-3,4ToS/privacy version bump
RW-L3COPPA data-minimization + no-marketing-to-children + parental review/deletionMPARTIAL (legal)partialNFR-COPPA-3,4,5RW-15 (marketing gate)

Notes. RW-01..RW-07 are frontend-only on a ready SDK (cheapest, parallelizable). RW-08/RW-11/ RW-12/RW-13/RW-15 carry data-layer work and should be scheduled with the data workstream (prioritization §4: "data leads"). RW-L1/RW-L2 are MVP-1-scope legal blockers deliberately deferred in build because the project is pre-alpha with no real minor data — they must close before the first real minor's data is stored / before any ToS bump affecting minors.


Addendum — 2026-07-02: MVP-1 Complete

Branch feat/mvp1-personas-authz fully merged to main at 2be8bf9. Every item listed under "MVP-1 remaining" above has now shipped or been explicitly deferred with a documented reason. Status flips below supersede the original coverage table for those rows.

Status flips

Requirement areaWasNow
Catalog (browse/redeem IA)UNBUILTBUILT — E1 reward CRUD · E2 activity CRUD + gate editor · E3a 4-tab browse + member-selector + eligibility/locks · E3b bounty claim · E3-redeem adult-direct / child-request→approve · E4 redemption history + named approval rows · E5 chore auto-approve toggle + activity affordability fix + Home error surfacing + Activity.autoApproveRedemption
Money & EnvelopesPARTIALBUILT for MVP-1 — General model — S1 Bucket.general earn-landing (replaces EarningsSplit auto-split as credit destination) + S2 moveFunds debit/credit ledger pair + S3 General wallet row + instant-move + Undo snackbar; EarningsSplit retained as move-sheet suggestion defaults; 6 live migrations (description, helper_manual, other_adult, birth_date, auto_approve_redemption, bucket_general_move); goal-envelope balance and household default-allocation deferred by scope decision
OnboardingPARTIALBUILT — RW-10: household → kid + optional DOB → parental consent → economy config → first-chore quick-starts → checklist deep-links; TermsSessionGate covers adult terms (FR-ONBOARD-2); wizard gates consent correctly for under-13 and unknown age
Settings (More hub)PARTIALBUILT — RW-06: MoreBloc + persona-aware tile list + Appearance/Accessibility/Account/About/Help routes; AccountPage name/email display + sign-out; user-co-authored WIP folded verbatim
Visual timersUNBUILTBUILT — RW-04: DsTimerRing (shrinking arc, green/amber/red + numeric channel) + TodayChoreTimerRow (Start-N-min, pause/cancel) + reduced-motion discrete variant + multi-timer; FR-TIMER-1..6
Account & profile mgmtPARTIALBUILT — RW-09: GoTrue updateUser double-opt-in change-email wrapper; AccountPage inline form + "check both inboxes" copy; sign-out entry live in RW-06
Member ProfilePARTIALBUILT — all 6 FR gaps (avatar colour, home-room chip, goal Reached/dueLabel, edit goal, goal emoji) confirmed built by earlier slices; RW-02 commit = Money S3 fold-ins + bonus tests
HouseholdPARTIALBUILT — RW-03: family goals card + create/suggest/request/approve/mark-reached/archive; watch-only member tiles; poll-on-tab-open; FR-HOUSEHOLD-2 wallet-glance + FR-HOUSEHOLD-6 budget summary deferred (see Open items below)
Print & printablesPARTIALBUILT — RW-07: printableLists flag gate + earning-hint ("earns X tokens") + duration column + _printMember rename; analytics rename deferred to RW-15

Open items within MVP-1 (named follow-ups; not launch blockers unless marked)

  • FamilyGoalsBloc extraction — god-bloc trajectory noted in RW-03; extract when relaxing the expectedEvents pin is safe (timing-sensitive refactor, not a functional gap).
  • DsGoalThumbnail dedup — ~200-line widget duplication between member_profile and the household goal tile; extract DsGoalThumbnail.
  • Chore chip-highlight listener — MEDIUM UX-only follow-up from RW-10 (tapping the onboarding checklist item should briefly flash the relevant chore chip on Today).
  • Shared email validator — RW-09 review found no shared validator; minimal structural check used, server is authoritative; small follow-up to extract a reusable DsEmailField validator.
  • FR-SETTINGS-3 pending badge — requires a watchPendingBadgeCount SDK aggregator; deferred from RW-06.
  • FR-HOUSEHOLD-2 wallet-glance chips — deferred from RW-03; depends on More→Account WIP landing.
  • FR-HOUSEHOLD-6 budget summary — deferred from RW-03.
  • Co-parent invite facade verb — FR-ONBOARD-4 deferred from RW-10; inviteCoParent facade verb needs wiring before the wizard step activates.
  • 2 pre-existing full_stack_test failuresseedDemoHousehold asserts 2 kids but seed builds 3; reproduced on clean HEAD, unrelated to this branch. Fix before launch.
  • Flow-golden regeneration — 3 DS atmosphere_horizon goldens have pre-existing font/env drift on Windows; regenerate on the reference CI environment.
  • COPPA HARD-1 — child financial-PII gate over ledger/approvals/spend_requests/redemptions/token_batches; must close before a real minor's financial data is stored.
  • COPPA HARD-2 — consent versioning + re-consent SLA (checkConsentCurrency TODO); must close before any ToS/privacy version bump affecting real minors.
  • Notifications (RW-11) — net-new NotificationsService + LocalNotificationsAdapter; deferred.
  • Routines (RW-12) — net-new Routine/RoutineRun model + service; deferred.
  • Offline-sync substrate (RW-13) — Supabase cloud adapter + durable write queue; deferred.
  • Analytics substrate (RW-15) — Mixpanel behind consent gate + three-bucket separation; deferred.
  • Accessibility formal gate (RW-16) — labels/48 dp/AA contrast/SR pass; deferred.
  • Kid-mode / TV / kiosk (DF-7/DF-8), Billing surface (DF-13), Aging-up (DF-9), and all other DF-1..14 items — explicitly deferred-by-design.

Tally post-MVP-1: all originally-PARTIAL / UNBUILT MVP-1 items have shipped or carry a documented deferral with a trigger. DF-1..14 + HARD-1/2 remain intentionally open, gated on legal review and real-minor-data arrival.