Some work cannot start until other work finishes. Relations record that on the tasks themselves, so it is visible on the board instead of living in someone's head.
The three kinds
- Waits for: this task cannot start until the other one is done. Use it for genuine sequence, such as the API before the screen that calls it.
- Blocked by: this task is stopped right now by the other one. Use it for a live problem, not a planned order.
- Relates to: the two are connected but neither holds the other up. Use it for context, such as a bug and the feature that caused it.
The distinction is worth keeping. "Waits for" is a plan. "Blocked by" is a problem someone should be doing something about today.
Adding one
Open a task, go to its relations, choose the kind, and search for the other task by title or number. The relation shows on both tasks, so you never add the mirror image by hand.
On a task you are still creating, relations are held until you save. They are marked as pending so you can see they have not been written yet.
Removing one
Delete it from either side. Nothing happens to either task, and only the link goes.
Using them well
- Filter the board by relation to see everything currently blocked. That list is your standup.
- Link at the point you discover the dependency, not in a tidy-up later. The value is in the warning, and a warning after the fact is worthless.
- Clear a "blocked by" as soon as it is resolved. A stale block is worse than no block, because people stop trusting the flag.