Example data. Fieldnote is a fictional company used to fill every board, so the examples tell one consistent story.
Fieldnote, written the week after a release broke photo upload for two days and produced 40 support tickets.
What the team took away
Three of the five Done lines exist only because of the March incident. Writing the deliberately-not block stopped the list from growing to twenty lines by the next quarter.
How to run it
Preparation
Collect the last three arguments about whether something was finished. They are the raw material of this session.
Invite whoever accepts the work, not just the team. A Definition of Done the acceptor did not agree to is a wish.
Bring the incident list from the last quarter. Most Done items are written in the blood of a past incident.
Set the rule that every line must be checkable by someone other than the author.
Agenda
25 min
Ready: what blocks a start List what must be true before an item enters a sprint. Build it from items that were started and then stalled, and ask what was missing.
30 min
Done: what blocks a release List what must be true before an item is called finished. Every past incident should be findable as a line here.
20 min
Cut the list in half A twenty-line Definition of Done is never applied. Keep what would actually stop a release, delete the aspirations.
15 min
Name what is deliberately out Write down what you are choosing not to require, and why. This is the block that stops the list from growing back every quarter.
10 min
Test it on a real item Take the last thing shipped and run it through both lists. If it passes with no friction, the lists are too soft.
Pitfalls
Writing aspirations. 'Fully documented' that nobody enforces teaches the team that the list is optional, and the rest of it dies with it.
Skipping the acceptor. The person who says no at the end has to have said yes at the start.
Never revisiting it. A Definition of Done that has not changed in a year describes a team that no longer exists.
Afterwards
Post both lists where the board is, and use the Ready list as the gate in refinement. Revisit it at a retro when the same argument comes back twice.