The Task Said Closed. Twelve Were Still Open.
Twelve tasks labelled closed were still open. A backlog cleanup taught me to describe the state a finished task must leave behind.

During a backlog cleanup, I left this complaint on my task board: “every single one I have to go searching and hunting for crap... open one, then just know what to do.”
There were 261 open tasks. The work had been captured, but opening a task often sent me somewhere else to find the actual instructions. The board tracked the names of the work. It still didn't tell me how to do it.
We rewrote the backlog so each task said what to do, why it mattered, and what done looked like. That last part became the useful one.
“Review the pull request” names an activity. It doesn't say what the review must establish or what should come back. “Check whether the import still rejects records without an address; return any failure with the file and test that exposed it” gives the reviewer a result to produce and gives the next person something to inspect.
The reason matters too. If the address check protects records from entering a ready-to-ship queue, that consequence changes the review. Without it, the check can look like fussy validation that should be removed. I have found that the reason belongs in the task. Otherwise the next person has to go find it again.
Then we cleaned up the backlog.
Twenty-three tasks were supposed to be merged into twelve survivors. The useful material was moved. The absorbed tasks were retitled with labels such as “CLOSED: merged into...” and their descriptions said no action remained.
Twelve of them were still open in the task system.
The title said closed, but the tasks kept showing up in active and overdue counts. We had finished editing them without finishing the queue change.
For this cleanup, I needed to check two things. The useful material had to be in the surviving task, and the duplicate had to disappear from the active queue. Retitling it handled neither check by itself.
A script can print “uploaded” without the file reaching its destination. A migration can copy every row and leave the old service receiving traffic. A review can end with “looks good” and name nothing that was checked.
A task should say what state it ends in. Then whoever finishes it can show me that state or say they couldn't verify it.
After we changed the statuses, the active and overdue counts finally dropped by twelve.