Lanes
One lane at a time — the goal, the critical path, and the current wave of blockers.
Analytics UI
Live on all four surfaces. Now cut-list item #1 for scope reduction, since the AI Agent moved off the drop ladder — ship basic, defer advanced. The "what counts as basic" line is an open decision in this wave and should be drawn before anyone builds to it. Note apps/web already has Gate.tsx and usePlan.ts, so web tier-gating exists — iOS is the surface missing it.
Wire trend data into MetricCard's new sparkline (Overview, Family detail, widget registry)
Follow-up from t_d418bceb (r38, 2026-10-21): MetricCard now takes an optional trend?: readonly number[] | null and draws a sparkline when given 2+ finite points (branch r38/metriccard-sparkline, commit 65abe629), but no caller passes it, so no user sees one. Callers: OverviewPage.tsx:84-104 and :175-177, FamilyDetailPage.tsx:71-74 (both held by #649 at filing), widgetRegistry.tsx:194 MetricCardWidget. Done when: each MetricCard on desktop web Analytics Overview and Family detail passes a real per-metric series from the data the page already loads (no new API unless one is required, then say so), a render test proves a path appears for a metric with data and none without, and a Kaitlynn QA card (desktop web, after merge and deploy) is filed with a dep edge.
No dependencies in this wave — nothing gates it, and nothing waits on it.