Skip to content
Sequence & interaction templates

Teaching Case — Arrows That Never Said What They Meant

The most important template in this set, and nothing in it is wrong. A document imported from a notation whose arrows carry no semantics — `->>` and `-->>` are drawn differently and mean whatever the author had in mind — is read as stating nothing, and the checks that depend on a call stack report a GAP naming the line they stopped at. They do not guess. An engine that read those arrows as calls and replies would produce a complete, confident analysis of an interaction the document never described, which is worse than no analysis at all. Rewrite the arrows as `->`, `reply` and `async` and the same document is fully checked.

Template previewSequence & interaction
Imported — semantics unstated6 messages · deepest 0 openGET /meverify(token)subjectload(subject)profile200 OKBrowserGatewayAuthProfileEvery one of the 16 checks that could run over 4 lifelines and 6 messages came back clean. The other 1 could not run, and each sayswhy below — that is silence, not a pass.GAP6 messages state no semantics — `->>` and `-->>` are arrows that do not say whether they are a call, a reply or a fire-and-forget, and this engine will notguess. From line 8 onward the call stack is not simulated, so the reply, deadlock and outstanding-call checks report what they could reach and nothingbeyond it. Write `->` for a call, `reply` for an answer and `async` for a message nobody waits on.INFO4 lifelines, 6 messages. 0 synchronous calls; the deepest point of the interaction has 0 calls open at once. The call stack could not be simulated to the end,so the reply findings above cover only the part that could be.OK16 of the 17 checks ran over every instance of their subject and found nothing: misdirected-reply, orphan-reply, conditional-reply, unreturned-call,after-destroy, before-create, double-create, double-destroy, par-interference, guard-overlap, guard-incomplete, activation-claim, unused-participant,undeclared-lifeline, duplicate-id, fragment-unclosed.

Make it your own.

sequence "Imported — semantics unstated"

participant Browser
participant Gateway
participant Auth
participant Profile

Browser ->> Gateway  : GET /me
Gateway ->> Auth     : verify(token)
Auth   -->> Gateway  : subject
Gateway ->> Profile  : load(subject)
Profile -->> Gateway : profile
Gateway -->> Browser : 200 OK