Line

A line is a directed connection between two nodes in a Tree project. Lines represent dependencies: each one points from a prerequisite to the work that depends on it.

A line is a directed connection between two nodes in a Tree project. Lines represent dependencies: each one points from a prerequisite to the work that depends on it. Graph theory calls these edges; in Tree they are always lines or connections, and "edge" survives only inside the data model.

Direction and acyclicity

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

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

First-class objects

Connections 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 connection-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

A line has no status of its own. It exists or it doesn't. The state of a line's endpoints determines what the line implies.

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

Restructuring

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

LAST UPDATED · 2026-09-04