Edge

An edge is a directed connection between two nodes in a Tree project. Edges represent dependencies: the edge points from a prerequisite to the work that depends on it.

An edge is a directed connection between two nodes in a Tree project. Edges represent dependencies: the edge points from a prerequisite to the work that depends on it.

Direction and acyclicity

In graph terminology, Tree projects are directed acyclic graphs (DAGs).

  • Directed. Edges have direction. A unlocks B is different from B unlocks A.
  • Acyclic. Edges can't form loops. A can't depend on B if B depends on A, directly or indirectly.

First-class objects

Edges are first-class objects in Tree's data model. This is different from most project tools, which store dependencies as fields on tasks rather than as objects in their own right.

The architectural difference matters because edge-first design makes graph operations cheap: traversal, critical path analysis, structural mutation, and bidirectional queries all become native rather than bolted-on.

State and propagation

An edge has no status of its own. It exists or it doesn't. The state of an edge's endpoints determines what the edge implies.

  • If the upstream node is complete, the edge is "satisfied" and contributes to unlocking the downstream node.
  • If the upstream node is locked or in-progress, the edge holds the downstream node in its locked state.

Restructuring

Edges can be added, removed, or redirected as the project's understanding evolves. Restructuring is a graph operation: change the edges, and the implications propagate through the graph automatically.

LAST UPDATED · 2026-05-11