Overview
Tickets can depend on each other viablocked_by_ticket_id. This creates a directed acyclic graph (DAG) that controls execution order.
How Dependencies Work
- A ticket cannot execute until its blocker reaches
DONE - The planner automatically blocks tickets with incomplete dependencies
- When a dependency completes, blocked tickets are auto-unblocked
Setting Dependencies
Via the UI
Drag a ticket onto another to create a dependency, or use the ticket detail panel to set the “Blocked By” field.Via the API
Execution Order
Draft uses Kahn’s algorithm for topological sorting to determine execution order:- Build a dependency graph from all tickets
- Find tickets with no dependencies (ready to execute)
- Execute in priority order
- When a ticket completes, check if any blocked tickets are now unblocked
Cycle Detection
If circular dependencies are detected, Draft falls back to the original priority order and logs a warning.Example
DONE. If A becomes BLOCKED, B stays BLOCKED too.
Best Practices
- Keep dependency chains short (2-3 levels max)
- Use dependencies for true data/API dependencies, not just priority ordering
- Let the planner handle dependency management when using autopilot