Dependencies & relations
Connect todos that block, relate to, or belong to each other — and let "ready" work sort itself out.
Real work has ordering: the migration can’t ship before the schema change, the blog post waits on the feature. createtodo models this directly instead of leaving it in your head.
Kinds of relations
- Blocks / blocked by — one todo must finish before another can start
- Related — todos that share context without an ordering
- Parent / subtodo — a todo broken into pieces
Add relations from a todo’s page — search for the other todo by title or identifier and pick the relation type. Both sides show the connection.
Why blockers pay off
Once blockers are recorded, “what can I actually work on?” becomes a query instead of a
puzzle. The ct CLI’s ct ready lists exactly the todos that are open with no
unresolved blockers, and closing a blocker reports what it just unblocked:
ct dep add MZ-124 MZ-123 # MZ-124 waits on MZ-123
ct ready # MZ-124 is hidden while MZ-123 is open
ct close MZ-123 # → reports MZ-124 is now unblocked
This is what makes handing a backlog to an agent safe: the agent works the frontier of unblocked todos in the right order, without being told what’s next.