Skip to content

Sprint burndown

A hand-rolled SVG burndown for the active sprint. Renders Actual (solid), Ideal (dashed), Scope-add markers (amber dots), and a vertical TODAY line — with a trending callout below the chart and a forecast close date right-aligned.

Step 6 (Execute) of the hybrid PM flow — this is the chart Maya watches during the standup and the chart Carlos’s exec view derives confidence from at Step 7.

  • Y-axis: remaining story points
  • X-axis: working days of the sprint (Day 1 → Day N)
  • Today marker: vertical dashed semantic-critical line labelled TODAY
  • Trending callout: Trending {N} pts ahead/behind of ideal · scope-add {date} (+{N} pts) — colour reflects on-track / at-risk
  • Forecast close: linear extrapolation from current pace to zero remaining
  • Route: /projects/:projectId/sprints (left ~60% of the metrics row)
  • Renders only when an ACTIVE sprint exists.
MethodEndpointPurpose
GET/api/v1/sprints/{id}/burndown/Sprint metadata + actual snapshot series

The ideal line is computed client-side from committed_points; the API does not return it.

  • SprintBurnSnapshot rows are written daily at 01:00 UTC by the update_sprint_burndown_snapshots Beat task.
  • Real-time UPSERTs fire from the task_status_changed signal whenever a task in the active sprint changes status — today’s row stays current without waiting for the nightly job.
  • Scope-change markers (scope_change_points) signal mid-sprint scope additions/removals separately from burn movement.
  • ADR-0022 — Burn charts (API endpoint design)
  • ADR-0037 — Sprint model: snapshot semantics
  • Maya — your at-a-glance sprint health. The trending callout tells you whether to escalate at standup.
  • Carlos — you don’t open this directly; you read its derived signal in the velocity forecast.