Connection lifecycle. A subscription opens with START, DIRTY marks the downstream node before DATA invokes fn(...), and COMPLETE closes the edge.
Diamond resolution. DIRTY reaches both branches and the join before DATA; the join waits for both branch values and fires once.
Node anatomy. A node carries a fn, cache, status, deps, and up/down message surface as one focused primitive.
Node roles. State and producer feed derived work; derived nodes push visible effects through the same wave protocol.
Graph level. The graph can be described, observed, and batched so topology, data flow, and wave boundaries stay inspectable.
Orchestration. Static topology carries dynamic data through pipelines, hubs, cursors, and consumers.
Agent loop. Agent, tool, result, review, memory, and open extension points can stay inside one inspectable graph.