4.6.6 UI — mount the velocity chart (committed vs completed per sprint + average) into the Story-4.4.6 sprint-report chart seam
Estimate: 20m · Depends on: 4.6.1, 4.6.2, 4.6.4, 4.4.6
Mount the velocity chart on the sprint report — the cross-sprint planning view that sits beside the completed-sprint burndown (4.6.5). Binds the 4.6.2 grouped BarChart primitive to the 4.6.4 getVelocity data, in the placement 4.6.1 specifies. Design-gated UI → carries 4.6.1 in dependsOn, seeded blocked.
Placement. The 4.6.1 design specifies where velocity sits in the sprint-report chart seam (Story 4.4.6) — the same surface as the completed-sprint burndown, the two charts presented together as the report's analytics. Fetch getVelocity({ projectId, lastN: 7 }); render the committed vs completed bars per completed sprint + the average-completed readout (the forecast). This is Jira's placement of velocity alongside the sprint report — no new nav surface (a standalone Reports area is Epic 6.3, which reuses this chart).
States. Low history (0–1 completed sprints) → the "not enough history yet" message from the design, not an axis-of-one; unestimated sprints → 0 / the issue-count value, never NaN; loading/error reuse the report scaffold. The chart carries the 4.6.2 a11y fallback (committed vs completed read as text+number — finding #35).
Acceptance criteria
- The sprint report (4.4.6) renders the velocity grouped-bar chart in the placement 4.6.1 specifies: committed vs completed per completed sprint (last 7) + the average-completed readout, bound to
getVelocity(4.6.4) — matchingdesign/reports/charts.mock.html. - Low-history (0–1 sprints) and unestimated states render per the design (no axis-of-one, no
NaN); loading/error reuse the report scaffold. - Reuses the 4.6.2
BarChartprimitive + its a11y fallback (no second chart implementation); colour via--el-*, shape via element shape tokens; bars distinguished by text label, not colour alone (finding #35). - The velocity bars match the scrum header / sprint-report numeric figures (same 4.3.3 done-category aggregate); no new navigation surface is introduced (that is Story 6.3).
Context refs
- Story 4.4.6 (the sprint report view + its reserved chart seam) — where velocity mounts;
design/sprints/sprint-lifecycle.mock.html - Story 4.6.2 (grouped
BarChartprimitive) + 4.6.4 (getVelocity+GET /api/projects/[id]/velocity) — the primitive + data this binds;design/reports/charts.mock.html(4.6.1) — the placement spec - Story 6.3 (dashboards & reports) — the future standalone-reports home this deliberately does NOT build;
motir-core/CLAUDE.md; findings #35, #54