Teach Your Documents Their Own History
In Part 1, you labeled your documents so your AI stops citing the stale ones. You marked one version source_of_truth: true, retired the rest as superseded, and told the model which to trust. Stale citations stop. Good.
But labeling is flat. It only knows the present tense. It can tell the AI which document is current — and nothing about how it got that way. Which means there's a whole class of question it still can't answer.
Ask your AI "what was our pricing last quarter?" and watch what happens. You retired the old pricing doc, so the model treats it as garbage and either refuses or guesses from the current one. But the old doc wasn't garbage. It was the correct answer to a question about the past. You threw away your history the moment you labeled it, because "superseded" told the model "ignore this," when what you actually meant was "this used to be true."
That's what Part 2 fixes. You're going to give your documents a memory of their own history.
The three questions labeling can't answer
- Which version replaced which? With two versions, "current vs. retired" is enough. With five, you have a sequence, and the model can't reason about a sequence it can't see.
- When did the new version take effect? Not when you last edited the file — when the thing it describes actually started applying. Those are different dates, and the difference matters more than almost anyone realizes (more on this below).
- What was true before? History isn't clutter. It's the answer to every past-tense question you'll ever ask — what did we charge, what was the policy, what did we decide and when.
Labeling can't answer any of these, because you told the model what's true now without telling it the story of how it became true.
The fix: add a history layer
Three more fields on top of the header you already have. Here's the upgraded version of the Q3 Pricing doc from Part 1:
---
title: Q3 Pricing
status: active
version: 3
updated: 2026-07-10
effective: 2026-07-01
source_of_truth: true
supersedes: q2-pricing
---
And here's the document it replaced — still on disk, no longer current, but now legible as history:
---
title: Q2 Pricing
status: superseded
version: 2
updated: 2026-04-02
effective: 2026-04-01
source_of_truth: false
supersedes: q1-pricing
---
Three new fields do the work:
version— a number that gives the model an ordered sequence. Three came after two came after one. Now "latest" is a fact, not a guess.supersedes— the ID of the document this one replaced. This is the important one: each doc points back to its predecessor, and those pointers form a chain. Q3 supersedes Q2 supersedes Q1. The model can walk it.effective— the date this version actually took effect, which is almost never the date you last touched the file.
The field almost everyone gets wrong: effective vs. updated
This distinction is the whole reason to read Part 2, so slow down here.
updated is when you last edited the file. effective is when the thing the file describes actually starts applying. They are routinely weeks or months apart, and conflating them makes your AI confidently wrong about when.
A concrete case: it's June 15th. You finalize next quarter's pricing, which kicks in July 1st. You save the file today. Its updated date is June 15th. Its effective date is July 1st. If your AI only knows updated, and someone asks "what's our pricing as of June 20th," the model sees a fresh June 15th document and hands over the new prices — which don't apply for another eleven days. It gave a confident answer that's wrong by exactly the gap between when you wrote it and when it takes effect.
Separate the two dates and the model can reason correctly: it knows the new pricing exists, and it knows not to apply it yet. You've told it not just what changed, but when the change is real.
What your AI can do now
With a chain and honest dates, the model graduates from present-tense lookup to actual historical reasoning:
- Answer past-tense questions — "what did we charge in Q2" walks back one link in the chain and finds the answer, instead of throwing it away.
- Get "when" right — it distinguishes when something was written from when it applies.
- Resolve contradictions by lineage — when two docs disagree, "the later one in the chain wins" is a rule it can follow, not a coin flip.
- Explain the history — "pricing changed effective July 1st, replacing the Q2 rates" is now something it can say, because you wrote the story down.
The part nobody warns you about: this is bookkeeping now
Here's the honest ramp, because you should know what you just signed up for.
A chain only works if you maintain it, and maintaining it is manual. Every single time you create a new version, you have to do two edits, not one:
- On the new doc: mark it
active, setsource_of_truth: true, bump theversion, pointsupersedesat the old doc, set theeffectivedate. - Go back to the old doc: flip its
statustosupersededand itssource_of_truthtofalse.
Miss step two — and you will, eventually — and now you've got two documents both marked active and source_of_truth: true. Which is the exact stale-citation problem from Part 1, silently back from the dead, except now it's hiding inside a system you trust. A half-maintained chain is worse than no chain, because it looks authoritative while lying.
With ten docs and one person who remembers to do both steps, this is fine. It's genuinely fine. But every document you add and every person you add multiplies the number of places the chain can quietly break — a forgotten status flip, a supersedes pointing at a slug that doesn't exist, a version that got bumped twice. The labels drift out of sync with reality, and your AI goes back to trusting things that aren't true.
Where this goes
You now have documents that know their own history. That's a real upgrade — your AI can reason across time instead of just reading the present.
But you've also just become the person responsible for keeping every chain honest, by hand, forever. That job doesn't scale, and when it breaks it breaks silently. Catching drift before it poisons your AI's answers — and eventually enforcing the whole thing automatically — is the wall this series has been walking toward. That's Part 3: when your doc system outgrows you.
Do the versioning on your handful of important docs. Feel how good the historical reasoning is. And notice how much bookkeeping it took to get there.
And if you're already sitting on a tangle of versions with no idea what supersedes what — reconstructing the history by hand is exactly the job the Context Auditor exists for: upload up to 10 documents and it maps the chain, shows you what changed between versions, and flags where they contradict each other. It's opening soon; the early-access list is on the same page as the Context Stamp, which writes every header in this series into your real files — Word, PDF, Excel — invisibly, in your browser.