Share of committed work reaching each outcome
Stories completing each sprint; points on the right axis
Median days from sprint commitment
Status at sprint close; current status for the active sprint
Label-add events from the changelog
| Metric | 2026.15 | 2026.16 | 2026.17 | 2026.18 | 2026.19* | All (4 closed) | Notes |
|---|---|---|---|---|---|---|---|
| COMPLETION | |||||||
| Stories Done | 15 | 22 | 20 | 33 | 0 | 90 | Status Done, credited to closing sprint. Cancelled excluded. |
| Dev Complete | 21 | 40 | 41 | 52 | 18 | 154 | State at sprint close: Blocked+flag or Done. Same story counts in every sprint it was in while dev-done, so this sums by instance not by distinct story. |
| Story points done | 38 | 75 | 57 | 117 | 0 | 287 | Points on stories closed in that sprint. |
| COMMITMENT & PREDICTABILITY | |||||||
| Committed | 49 | 61 | 55 | 62 | 43 | 227 | In the sprint at any point while it was running. |
| Planned at start | 39 | 54 | 46 | 52 | 43 | 191 | Present when the sprint began. Cancelled excluded. |
| ...dev-done at close | 16 | 38 | 33 | 43 | 18 | 130 | Of the planned stories, those in a dev-done state at sprint close. |
| Say-Do (Dev Done) % | 41.0% | 70.4% | 71.7% | 82.7% | 41.9% | 68.1% | Share of the day-one plan in a dev-done state at sprint close (Blocked+flag or Done). Rework back to active dev disqualifies until the story returns to dev-done. |
| ...Done in-sprint | 8 | 21 | 11 | 24 | 0 | 64 | Of the planned stories, those whose Done event fell inside this sprint's window. Approval landing later doesn't count. |
| Say-Do (Done) % | 20.5% | 38.9% | 23.9% | 46.2% | 0.0% | 33.5% | Comparison row: the industry-standard 'plan vs. Done in-sprint'. Reads lower than the dev-done Say-Do because approval waits and external teams show up as failure here. |
| Emergent (new) | 7 | 4 | 8 | 10 | 0 | 29 | Genuinely new work pulled in after the sprint started. |
| ...dev-done at close | 5 | 2 | 8 | 9 | 0 | 24 | Emergent work in a dev-done state at sprint close. |
| Emergent % | 14.3% | 6.6% | 14.5% | 16.1% | 0.0% | 12.8% | Share of the sprint that was unplanned. |
| Carryover | 19 | 16 | 10 | 6 | 23 | 51 | Committed but reached neither Dev Complete nor Done in-sprint. |
| Carryover % | 38.8% | 26.2% | 18.2% | 9.7% | 53.5% | 22.5% | Share of committed work that did not finish. |
| WHERE CARRYOVER STOPPED (status at sprint close; CURRENT status for the active sprint) | |||||||
| Blocked, NO flag | 15 | 3 | 0 | 2 | 1 | 20 | Blocked but never flagged, so it cannot score Dev Complete. Usually the same external wait -- just missing the flag. |
| Blocked + flagged | 0 | 0 | 0 | 0 | 0 | 0 | Always 0 under state-based Dev Complete: Blocked+flag at close IS dev-done, so it counts toward Dev Complete instead of carryover. |
| Code Review (peer) | 1 | 1 | 0 | 2 | 2 | 4 | Coding finished; waiting on another developer to review it when the sprint closed. An internal queue, not an external one. |
| To Do (not started) | 2 | 3 | 3 | 0 | 17 | 8 | Committed and never picked up -- overcommitment, not a blocker. |
| At DEV | 1 | 3 | 6 | 2 | 3 | 12 | In flight at sprint close. |
| Deploy / QA | 0 | 6 | 1 | 0 | 0 | 7 | Past review, awaiting a deploy or QA pass. |
| CYCLE TIME (median days) | |||||||
| Queue | 0.7d | 7.0d | 0.0d | 0.6d | -- | 1.8d | Sprint commitment -> first At DEV. |
| Dev (team) | 8.3d | 43.7d | 6.9d | 9.0d | -- | 11.9d | Commitment -> Dev Complete. The team-controlled span. |
| Approval wait | 2/10d | 2/28d | 5/20d | 8/34d | -- | 17/27d | count/median. ONLY stories that sat in Blocked+flagged; straight-to-Done work is excluded, not counted as 0d. |
| Still awaiting appr. | 3/48d | 6/40d | 5/27d | 3/5d | -- | 17/40d | count/median age as of today. Dev done, still not closed -- aging work, absent from Approval wait (no close date to measure). |
| Total | 8.3d | 42.0d | 9.5d | 12.0d | -- | 12.1d | Commitment -> Done, all closed stories. |
| DEPLOYMENT FREQUENCY | |||||||
| Deploys to test | 11/2d | 3/1d | 1/1d | 3/3d | 0/0d | 18 | events/distinct days, from changelog label adds. |
| Deploys to prod | 5/3d | 0/0d | 11/4d | 5/3d | 0/0d | 21 | events/distinct days. Current labels undercount; Ready* labels get replaced by Deployed*. |
| Rework after Dev Cmp | 2 | 6 | 0 | 2 | 0 | 10 | Returns to active dev after Dev Complete was reached. |
MP 2026.17 + MP 2026.18 — one row per person, attributed to the current assignee. Cases is every non-cancelled story they had in these sprints, however it got there: planned, pulled in mid-sprint, or carried over. Open, Done and Dev Complete are the story’s state today and are exclusive — Done first, then Dev Complete, then Open — so they sum to Cases. Complete is Done + Dev Complete, and Completion rate is Complete ÷ Cases, so every number here can be checked against the row. This is not Say-Do: Say-Do (metric table above) scores only work promised on a sprint’s opening day, per sprint.
| Team member | Cases | Open | Done | Dev Complete | Complete | Completion rate |
|---|---|---|---|---|---|---|
| William Emmel | 26 | 2 | 10 | 14 | 24 | 92.3% |
| Chris Wandel | 17 | 2 | 10 | 5 | 15 | 88.2% |
| Jonathan Jara | 17 | 0 | 17 | 0 | 17 | 100.0% |
| Joe Ozzello | 7 | 1 | 6 | 0 | 6 | 85.7% |
| Alexa Swihart | 6 | 0 | 6 | 0 | 6 | 100.0% |
| Erik Truby | 5 | 0 | 5 | 0 | 5 | 100.0% |
| Mark McLean | 4 | 0 | 4 | 0 | 4 | 100.0% |
| Team total | 82 | 5 | 58 | 19 | 77 | 93.9% |
MP 2026.17 + MP 2026.18 + MP 2026.19 — one row per person, attributed to the current assignee. Cases is every non-cancelled story they had in these sprints, however it got there: planned, pulled in mid-sprint, or carried over. Open, Done and Dev Complete are the story’s state today and are exclusive — Done first, then Dev Complete, then Open — so they sum to Cases. Complete is Done + Dev Complete, and Completion rate is Complete ÷ Cases, so every number here can be checked against the row. This is not Say-Do: Say-Do (metric table above) scores only work promised on a sprint’s opening day, per sprint.
| Team member | Cases | Open | Done | Dev Complete | Complete | Completion rate |
|---|---|---|---|---|---|---|
| William Emmel | 29 | 5 | 10 | 14 | 24 | 82.8% |
| Jonathan Jara | 20 | 3 | 17 | 0 | 17 | 85.0% |
| Chris Wandel | 19 | 4 | 10 | 5 | 15 | 78.9% |
| Erik Truby | 11 | 6 | 5 | 0 | 5 | 45.5% |
| Alexa Swihart | 9 | 3 | 6 | 0 | 6 | 66.7% |
| Joe Ozzello | 8 | 2 | 6 | 0 | 6 | 75.0% |
| Mark McLean | 4 | 0 | 4 | 0 | 4 | 100.0% |
| Team total | 100 | 23 | 58 | 19 | 77 | 77.0% |