← The Stage ManagerCase 03 of 05

Who was told?

Reading the answer instead of tracking it.

The situation

A new product is added to the catalogue and two departments need to know, each on its own machine. Then somebody asks the question that always arrives later: who actually got the message? That question is normally expensive — a delivery tracker, correlation identifiers threaded through every hop, a tracing backend to query. The message was cheap; the answer was the expensive part.

What travels

What actually crosses between machines.

Outbound

One envelope per receiver: the message, its ordered values, and an identity taken from the thing being announced.

Inbound

An acknowledgment that names who answered — a sentence, not a metric.

The check

Carried inside the envelope and answered where it lands. It does not run at the sender, because the sender cannot know the state of each receiver and should not pretend to.

The audit trail was not built. It was written, one sentence at a time, as it happened.

The objection

Sending one message per receiver sounds wasteful. With fifty departments that is fifty messages instead of one — why is that better?

One broadcast buys delivery and costs the answer: address a message to everyone and exactly one acknowledgment comes back, from everyone, naming nobody. The fifty messages are cheap, and what they buy is fifty acknowledgments that each name someone. The alternative was never really one message — it was one message plus the tracker built afterwards to work out who received it.

Words used precisely
The check does not run at the sender
It is not a filter applied before sending, deciding who deserves the message. It is a question carried along and answered at each destination.
Exactly once describes the effect, not the delivery
The message may well arrive twice — that is a transport's business. What happens once is the registration, because a repeated delivery carries the same identity and is recognized as already applied.
What is absent
  • No broadcast.
  • No tracker, no correlation identifier, no tracing backend.
  • No closed list of members for someone to maintain.
  • No filtering at the sender.

That absence is the result, not the setup.

Grounded in

Where this comes from.

Reactions guide, scenario 7 — the ack must say who
Reactions guide — consumer uptake, the Check runs at the receiver