What a Flow Edge Actually Declares
A flow connection states that data physically moves from one node to another: bytes, events, records, or payloads cross a boundary over time. Unlike a dependency — which is a static precondition — a flow describes motion. When you draw a flow arrow between a producer and a consumer, you are implicitly asserting a transport protocol, a direction of travel, and a payload contract that both sides must honor.
The most common modeling failure is treating flow arrows as generic "talks to" lines. A reader who sees a solid directed edge reasonably assumes ordered, continuous transmission: a stream, a queue drain, or a request-response exchange. If the real relationship is a nightly batch export or a manual file handoff, the unlabeled flow arrow hides the operational truth that on-call engineers need most.
Core Diagnostic Rule: Flow Implies Movement With a Contract
Every flow connector should answer three questions at a glance: what payload travels, in which direction, and under which delivery semantics — at-most-once, at-least-once, or exactly-once.
Backpressure is the silent qualifier of every flow edge. When a consumer cannot keep pace, the connector becomes the bottleneck: buffers grow, latency climbs, and upstream services stall. Marking flow connections with expected throughput or rate limits turns a decorative diagram into a capacity-planning instrument.