Can today’s record explain yesterday’s decision?
Keep the value a decision actually used so that later changes do not erase its explanation.
A customer asks why they received an overdue notice yesterday. Today their account says paid. Both facts can be true.
Give facts a time
Hickey distinguishes a fact from a later change. Overwriting the current status makes it hard to recover what the system knew when it sent the notice.
you can't update a fact is because you can't change the pastReplay 22:20–22:25 →
Versions can share structure
Keeping an old version need not mean copying the whole record. Persistent data structures share the parts that stayed the same; old and new readers each have a definite value.
the next version of the value shares a lot of structure with the prior versionReplay 40:03–40:20 →
What else is needed to reconstruct the state at the time?
Event sourcing reconstructs a past state by applying its ordered events to a projection. A record saying “just shut down” illustrates the remaining gap. In MIT’s reactor lecture, neutron-absorbing xenon builds up during operation, so the material present depends on earlier operation. A software projection can define how to replay discrete events; the physical process also evolves with time. A timestamped log is evidence of history. Reconstruction additionally needs the relevant initial conditions, inputs and transition rules.
Compare passages and timestamps
current state is a left fold of previous behaviorsReplay 6:13–6:20 →
Xenon-135 is one of the best neutron absorbers there is.Replay 9:03–9:06 →
you'll reach the xenon equilibrium level where it will build to a certain level that will counteract the reactivityReplay 9:50–10:00 →
Do two historical values need two copies of memory?
Hickey starts with locks that readers of shared data must remember. Immutable values reduce that coordination burden. Puente then opens the implementation: a small change in a persistent tree can copy the affected path while old and new versions share untouched branches. This explains why keeping a value may be cheap. The application still has to record which version actually triggered a particular reminder.
Compare passages and timestamps
have everybody remember what the locking model isReplay 6:05–7:55 →
most of the data structure is shared between all these valuesReplay 8:39–8:46 →
Is a recomputed July report the same report?
Hickey describes deriving prices from past sales. Kleppmann’s materialized view makes derived results cheap to read by maintaining them when underlying data changes. If both the orders and the pricing rule have since changed, today’s view answers a different question. Reproducing the quoted price requires the inputs and rule version used then, or the historical output itself.
Compare passages and timestamps
produces pricing informationReplay 10:38–14:28 →
query's already been done ahead of timeReplay 16:29–16:34 →
After the sale, which date values the proceeds?
This account of Japanese economic history separates asset sale, withdrawal date and price changes. A nominal amount can remain on the books while deferred access during inflation changes what it buys. Place pricing, access and the price index used for comparison on a timeline. A question about remaining wealth needs to specify which value on that timeline it asks for.
Compare passages and timestamps
Land reform during and after the warReplay 15:01–15:06 →
they were not allowed to withdrawReplay 15:16–15:21 →
The application still has to decide which versions to retain and record which version a decision used. Only then can supplying the old record and date reproduce the earlier answer.