The same layout from bare ids and edges, for callers that do not have a TaskGraphSpec.
This is the form the run views need. A graph being watched is Task rows joined by
TaskDependency rows — there is no spec anywhere, and reconstructing one just to lay it out would
mean inventing kinds and configuration the renderer does not care about. Anything that can produce
"these nodes, these prerequisites" gets the same arrangement the editor would draw.
The same layout from bare ids and edges, for callers that do not have a
TaskGraphSpec.This is the form the run views need. A graph being watched is
Taskrows joined byTaskDependencyrows — there is no spec anywhere, and reconstructing one just to lay it out would mean inventing kinds and configuration the renderer does not care about. Anything that can produce "these nodes, these prerequisites" gets the same arrangement the editor would draw.