Example
File a milestone and see what still stands before it
Name the goal, point the work at it, and "what is left before we get there" is a query rather than a list somebody keeps up to date.
9 steps, driven by a person and an agent. Every step is a step in an end-to-end test, run against a listening server on every pull request, so the graph moves the way the run moved it.
Why it is shaped this way
A goal is not work, and a tracker that models it as a container makes you pay for the difference twice: the epic sits in the backlog looking startable, and its progress is whatever somebody last dragged. A milestone here is a node like any other, of kind project, with one thing true of it — it carries no work, so nothing offers it as the next thing to do. Everything it waits on says so with the same blocks edge every other dependency uses, which means "what is still open before the launch" is the same question as "what is blocking this", asked of one node. Priority rides beside it for the tie a graph cannot break on its own: inside one wave every piece is equally startable, so the only thing left to sort on is what somebody asserted. very_high is the most important, and a piece nobody ruled on carries no priority rather than a level it never earned.