Time is two-dimensional (Foundations, part 6)
Part 6 of Foundations: what temporal databases teach a memory about change, correction, and history.
Two questions that look the same and aren't: "Where did I live in 2023?" and "What did you believe in 2023 about where I lived?" If that seems fussy, consider that the second one is what every audit, every "why did you tell me X last month," every debugging-of-an-old-decision actually asks. A memory that can't tell them apart will answer one with the other and call it recall.
Database folks mapped this out years ago — Richard Snodgrass and the temporal-database community called it bitemporal data. Every fact gets two independent time axes. Valid time: when it was true in the world. Ingest time: when the system learned it. Two axes, because the world changes and your knowledge of the world changes, and those are different events.
From there, a small catalog of correctness:
Updates close intervals. They don't erase. When you move away from Denver, the old address doesn't become false — it becomes bounded: true until March. A memory that overwrites has amnesia about everything it ever correctly knew.
Corrections aren't updates. "Actually, I moved in March, not May" repairs the past — valid time moves — while the record of when you said each thing stays put. So the system can honestly answer both "when did you move?" (March) and "when did I learn it was March?" (today).
Succession isn't contradiction. Austin, then Denver — that's a history. Two claims about the same interval that disagree — that's a conflict, and it deserves a flag, not a silent latest-wins. Collapse this distinction and your system ends up believing whatever was said most recently. Sound familiar?
For actually reading time out of language, we stand on more shoulders: James Allen's interval algebra (1983) — the thirteen ways two intervals can relate, turning before/during/overlaps into a calculus — and TimeML/TIMEX3 (James Pustejovsky and colleagues), the standard for normalizing "March 2024," "for three weeks," "every Tuesday" into typed dates, durations, and recurrences. Sounds mundane. It's genuinely hard, and it's solved because people spent years on it. That's the reason "every Tuesday" can be stored as a recurrence instead of a vibe.
One more thing worth noticing: "no erasure" is also how accountants have kept books for five hundred years. Append-only ledgers, corrections as new entries referencing old ones. When the same design shows up independently in double-entry bookkeeping, temporal databases, and git, it's telling you what trustworthy records are.
So: a real memory is an append-only, two-axis history. "What's true now" is one slice of it. "What was true then" is another. "What did we believe when" is always answerable. Time isn't metadata on the fact. It's half the fact.