Spunto CMS

Sprints, points and burndown

A sprint is a list with dates. Its cards stay in their backlog; effort points, the burndown and the velocity are read from the workspace's journal and from what each sprint holds.

A sprint is a list with dates

A collection with a startsOn and an endsOn is a sprint — both dates or neither, days in UTC. Cards are born in their backlog, which gives them their key (BACK-12), and are attached to the sprint as a secondary list: moving to the next sprint never renumbers anything.

Complete sprint (POST …/collections/{collectionId}/complete-sprint, in the web app on the sprint's banner) moves what is not done — by status category, never by name — to the list you choose, and leaves what is done where it was delivered. One transaction, one journal event per card.

Effort points

The workspace designates one number property as its effort points (Workspace settings → General → Effort points, or PATCH /workspaces/{workspaceId} with pointsFieldId). It is a workspace setting, not a list setting: a sprint mixes cards from several backlogs, and a card weighs the same in every sprint you look at it from.

Once designated:

  • its value shows as a badge on cards — table cells, board cards, list rows, the card page;
  • each board column shows the sum of its points, over the whole column and not only the cards loaded (sumFieldId on POST …/grouped-query, returned in ItemGroup.sum);
  • the sprint banner shows done / total, and how many cards are not estimated.

A card without points weighs 0 — it is not counted as “one card”, which would mix two units in one sum. Without a designated property, everything counts in cards, each worth 1. Deleting the property switches the workspace back to cards.

Burndown

GET …/collections/{collectionId}/sprint-report returns, for each day of the sprint, the scope, what was done and what remained at the end of that day, plus an ideal line from the scope committed on the first day down to zero.

It is read back from the journal, newest event first: status changes into or out of the done category (a card reopened on Thursday stops counting on Thursday), attachments and detachments, re-estimations, archiving. A card detached by Complete sprint is a carry-over, not a scope cut: it keeps counting as not done until the end. Future days are null — the line stops at today.

The journal is purged by month

When an instance applies its retention, whole months of journal disappear. For a sprint older than what is left, the report says so (burndown.historyFrom) and the days before it are null: they are unknown, not zero.

A deleted card leaves the whole curve, past days included: nothing remains to say what it weighed.

Velocity

The same report lists what each of the last six sprints of the same sidebar group finished (sprints outside any group form their own series), and the average of those already over — the figure to plan the next one with.

Velocity reads the present state of each sprint's cards, not the journal: it survives the purge. The price: a card reopened or re-estimated later rewrites the velocity of the sprint that delivered it. A card carried over and finished in a later sprint counts once, in the later one.

On this page