6a3619555d
Task 1 of #583. build_dashboard(user_id) assembles the /dashboard payload: most-recently-active projects (ranked by max child updated_at) each broken into active milestones -> open tasks (in_progress->priority->recency, capped 5), recently-completed (7d/8), upcoming events (7d), week stats. Owner-scoped, trashed excluded; each section isolated via _safe so one failure doesn't blank the page. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>