Arrows and flow

An edge is one statement: the two shapes it joins and a glyph between them. -> is an arrow, <- is the same arrow read the other way (B <- A and A -> B are one edge), <-> carries a head at both ends and -- is a line with no heads. A shape named for the first time by an edge is declared by it as a box, so the smallest diagrams need no box lines at all:

A simple arrow chain

Open in editor

"queue" -> "worker" -> "store"

The text is the box’s handle. Mention it again and you mean the same box; give it a capitalised handle (Queue) and you can write the name bare. A label follows the shape the arrow points at, and a chain labels each hop:

A labelled arrow

Open in editor

A: box "start"
B: box "end"
A -> B "Leads to"

Two distinct boxes with one caption need explicit handles (a: box "foo", b: box "foo", a -> b). A handle that is a near miss of one you declared still creates a new box. Here Revie is a third box, rather than an arrow to Review. The editor shows a non-blocking hint at Revie with the declared name. Open the example and change Revie to Review: the extra box disappears and the arrow ends at the existing one.

A near-miss name creates another box

Open in editor

Test: box "Test suite"
Review: box "Code review"
Test -> Revie "report"

Next: add and format Text and positioning.