Estimate: 30m · Depends on: 6.3.2, 6.3.3, 6.3.4
The project Reports surface, per the 6.3.3 design, replacing the Epic-6 stub page at /reports (the surface 4.6 explicitly deferred here).
Build: the hub — the grouped index (agile group: burndown / velocity / sprint-report link cards into the SHIPPED surfaces; analysis group: the two report pages); Created vs Resolved (/reports/created-vs-resolved) — scope control (the active project by default, or a 6.2 saved filter), period + days-back + cumulative controls (URL-driven params, the shipped ?view/?sort convention, so a configured report is shareable), the 6.3.4 difference/area chart + the designed zero-data state; Status distribution (/reports/distribution) — the statistic-type picker + scope control, the 6.3.4 donut + legend. Both pages share the registry editor kinds with the 6.3.5 config panels (one control vocabulary, two hosts). Per-viewer gating surfaces the designed no-access state (a filter over a project the viewer can't see). Strings via next-intl.
A11y: the hub cards + both pages pass the strict sweep; charts expose the hidden tables; controls keyboard-complete.
design/reports/dashboard.mock.html + notes (6.3.3) — THE authority (hub + report-page panels)app/(authed)/reports/page.tsx (the stub this replaces); the 4.6.5/4.6.6 mounted chart surfaces (the agile links' targets)