← The Stage ManagerCase 04 of 05

The clerk

The price list is a character, not a tier.

The situation

Three tills and one of the oldest problems in distributed systems: the things every machine must agree on. The price list. The catalogue. Who counts as a member. The textbook answer gives those a category of their own — coordination state — and then a home of their own: a second system beside the application, plus a cache, an invalidation rule and a job that reconciles when the two drift. This case claims that middle category does not need to exist.

What travels

What actually crosses between machines.

On a write

A command forwarded to the Director, then compact records out to every replica.

On a read

Nothing. The reaction that fires when a price changes never touches the network, because the clerk was already there.

What is captured

The consumed value is frozen into the consumer's own journal entry, the way a timestamp is frozen. A replay five years later never asks the clerk anything.

The clerk is a source of knowledge, not a source of historical truth.

The objection

If the price lives in a replica, and a replica can be a moment behind the Director, a till could sell at the old price. Isn't that a bug you designed in?

It is a real property, worth stating rather than waving away: two machines can capture different prices for what looks like the same logical moment. What does not break is honesty — every sale records exactly the price it used, and every replay reproduces exactly that sale. Where that is genuinely unacceptable there is a knob: a decision that needs a linearized read pays the trip to the Director and gives up the free local read.

Words used precisely
Capturing is not caching
A cache is asked again and can answer differently the second time, which is what makes a replay drift. A captured value was asked once and became part of the sentence that was written down. It cannot answer differently later, because it is no longer answering.
The Director writes, a Cast applies
A Cast does not compute its own version of the price list. It applies the same record, in the same order.
What is absent
  • No coordination service standing beside the application.
  • No cache, and therefore no invalidation rule.
  • No reconciliation job for when the two copies drift.
  • No synchronization code written by anybody.

That absence is the result, not the setup.

Grounded in

Where this comes from.