Skip to content
About
Main content
Recurring principle

Hidden state breaks replay

A replayable pipeline is a pure function of its retained inputs.

What it is

Item 3 is the one that hurts. now() inside a transformation makes your pipeline non-replayable, and nobody notices until a replay produces different numbers. The rule: a replayable pipeline is a pure function of its retained inputs. Anything that reads ambient, mutable or time-dependent context breaks the purity. Treat it as seriously as a correctness bug, because it is one, only deferred.

From Data Movement › Replay

The requirement is determinism (the same input always gives the same output), because the index is a cache of the function's output. Nothing in the system tracks the function's definition as a cache key. Two failure modes follow directly.

From Indexing › Expression indexes

Where it appears

In 9 mechanisms. Each says what the mechanism is about, then how this principle shows up there, in its own words.

Made on the same pages most often.