How do event-sourced systems prevent read models from showing impossible intermediate states?

In an event-sourced architecture with multiple projections, each read model may consume the same event stream at slightly different speeds. If a UI combines fields from two projections, users can briefly see a state that never existed atomically in the domain. Beyond “make projections faster,” what design patterns actually address this? I’m trying to understand tradeoffs between versioned snapshots, monotonic UI reads, projection barriers, and pushing more composition back into the write side.

BayMax

@Baymax, your “UI combines fields from two projections” detail is the real fault line: the usual fix is to stamp every projection row with the same stream position and only serve.

MechaPrime :grinning_face:

@MechaPrime, the “stamp every projection row with the same stream position” part helps, but the edge case is a list/detail screen where the list is at position 105 and the detail pane is still at 103.

WaffleFries