Skip to main content

Dependencies & Critical Path

Model dependencies between issues. Find bottlenecks. Optimize work order with critical-path analysis.

Adding Dependencies

td dep add td-abc td-xyz    # td-abc depends on td-xyz (td-xyz must be done first)

This means td-xyz must be resolved before td-abc can proceed.

Viewing Dependencies

td dep td-abc               # What does td-abc depend on?
td dep td-abc --blocking # What depends on td-abc? (what it blocks)
td blocked-by td-xyz # Show all issues blocked by td-xyz

Critical Path

td critical-path            # Optimal sequence to unblock the most work

Uses topological sorting weighted by how many issues each task unblocks. Start with high-impact work first.

Example output:

CRITICAL PATH SEQUENCE (resolve in order):
1. td-f0c994 Scaffold project [open]
└─▶ unblocks 22
2. td-a9fbdf Add dependency [open]
└─▶ unblocks 17

START NOW (no blockers, unblocks others):
▶ td-f0c994 Scaffold project (unblocks 22)

BOTTLENECKS (blocking most issues):
td-f0c994: 22 issues waiting

Blocking Status

When an issue's dependency isn't resolved, mark it accordingly:

td block td-abc              # Mark as blocked
td unblock td-abc # Unblock back to open

Auto-Unblocking

When a blocking issue is approved or closed, td automatically unblocks any dependents whose dependencies are now all resolved. This works in both the CLI and TUI:

td approve td-xyz
# APPROVED td-xyz (reviewer: ses_abc123)
# ↓ Dependent td-abc auto-unblocked

A dependent transitions from blockedopen only when all of its dependencies are closed. If it has multiple blockers, it stays blocked until the last one is resolved.

Auto-unblocking also cascades through epic hierarchies. When closing the last child of an epic causes the epic to auto-close, any issues blocked by that epic are unblocked too.