Designing a Reasoning Ledger Record

A companion to Part 4 of the Building the AI Memory Stack series. Part 4.5 of the series.

Part 4 argued that agentic systems need a Reasoning Ledger: a layer that preserves why a decision happened, not just what was decided. The comment thread that followed turned into something more specific and more useful, a working design conversation about what a single ledger record should actually contain. This piece consolidates that. Several of the strongest ideas below arrived from other people, and I have tried to credit them where they land.


The easy version of this article is a schema. Here are the fields, copy them, done.

I want to resist that, because the field list is the least durable thing I could hand you. Implementations differ, field names drift, and a record shape copied without its reasoning becomes cargo-cult structure that nobody maintains. The useful thing is the set of design tensions that decide what belongs in the record and what does not. Get those right and you can derive the fields yourself. Get them wrong and no schema will save you.

So this is principles first, record second. At the end there is a worked record and a field reference, tagged for what is core and what is genuinely optional.

A Starting Point

Here is the baseline record from Part 4. It is a reasonable start and, as the thread quickly established, incomplete in instructive ways.

reasoning_ledger:
  decision: "Approve deployment"
  timestamp: 2026-03-14T09:22:00Z
  evidence:
    - artifact: ADR-014
      authority: architecture-review
      version: 3
    - artifact: security-policy
      authority: security-team
      version: 7
  tools:
    - GitHub
    - CI pipeline
  approvals:
    - release manager
  outcome: approved

Every principle below is, in effect, a thing this record does not yet say.

Principle 1: The Ledger Witnesses, It Does Not Enforce

The first tension is architectural, and it is the one I would defend hardest. A reasoning ledger must not be able to block, veto, or gate the action it records. Its job is to preserve what happened and what evidence surrounded it. The moment the ledger can prevent an action, it stops being an independent witness and becomes part of the mechanism it is supposed to describe, and its own records stop being examinable as neutral fact.

This came up when pm25coder noted, correctly, that a ledger that only narrates can quietly become fiction, and that trust comes from being able to gate rather than merely describe. I agree with the diagnosis and draw the boundary one step earlier: enforcement is real and necessary, but it belongs at the policy and tool boundary, not inside the witness. The ledger preserves that the boundary was evaluated and what it returned. The boundary decides whether the action proceeds.

The practical consequence for the record: a ledger entry can contain a policy_evaluated result showing that a check ran and what it concluded, but it never contains the enforcement decision as its own authority. It reports; it does not rule.

Core. This is not a field, it is a constraint on the whole design.

Principle 2: Supersession Is a New Event, Never a Rewrite

A superseded decision should become a new record that points back at the old one. It should never overwrite the original. “We decided A, and later decided B instead” is two events with a relationship between them, not one field that changed value.

This matters because “wrong now” does not mean “was never decided then.” If you rewrite the March record when you change course in August, you have destroyed the ability to answer whether the March decision was reasonable given what was known in March. The noisier history is the correct trade. Compaction can always produce a clean current-state projection later, but once you have rewritten the historical evidence, you cannot reconstruct it.

This is the same append-only discipline that makes Forensic Receipts useful: preserve what was decided under which evidence and authority, then record the superseding decision as its own event with its own receipt.

Core.

Principle 3: Record How the Authority Was Obtained, Not Just Which One

The baseline record says version: 7. That tells a future reader what supposedly governed. It does not tell them how the system established that version 7 was authoritative at decision time, and those are very different trust claims.

Self-Correcting Systems and pm25coder arrived at this from opposite directions and met in the middle: a policy version fetched fresh from its authority at 09:22, a version read from a five-minute cache, and a version inherited from session state can produce identical version: 7 fields while supporting completely different claims about what the system could reasonably have known. The fix is to treat the authority fetch itself as a recorded event. The record should say which source was consulted, when, what came back, and whether cached state was involved.

This also exposes the sharpest failure mode in the thread, the one an otherwise perfect ledger cannot catch on its own. If the external authority moved to version 8 an hour before your decision and nothing in your system observed that change, the record faithfully captures version 7 and stays perfectly self-consistent. It is a flawless account of a decision that was already wrong when it was made. The record cannot flag this, because there is no edge to preserve; nothing inside the system ever saw the change. Recording how the version was obtained at least lets a later examiner distinguish “we checked and got stale data” from “we never checked.”

Core for the fact of how evidence was obtained. The revalidation mechanism that catches silent version drift lives outside the record, and Principle 7 covers it.

Principle 4: Relationships Need Two Clocks

If you ever want to reconstruct what the system could have known at a past moment, every relationship in the ledger needs two timestamps, not one. This is standard bitemporal modeling, and Giulio D’Erme named exactly why it is not optional here.

Valid time is when a fact was true in the world. Transaction time is when your system asserted or learned the relationship. If a supersession edge carries only a single date, replaying last March will show March’s decision annotated with August’s supersessions, and the decision-maker will look like they ignored a policy that did not yet exist. You will have judged a past decision using knowledge that arrived in the future, which is the precise thing a reasoning ledger exists to prevent.

So a supersession or correction relationship carries both valid_time (when the new state became true) and asserted_at (when the system recorded the edge). Reconstruction filters on asserted_at to see only what was knowable then.

Core for any ledger whose purpose includes reconstructing historical decision context. If you genuinely only ever query current state, you can defer this, but that is a smaller ambition than most of these systems have.

Principle 5: Preserve What Lost, Not Just What Won

A ledger that records only the evidence supporting the final decision is a post-hoc justification engine wearing an audit trail. You can reconstruct why the decision looked reasonable, and you have quietly lost what competed with it, what failed a threshold, and what stayed unresolved.

GnomeMan4201 made this case from the investigation side, and it reframed the record for me. An immutable ledger can preserve history perfectly and still preserve a biased history if the losing evidence never gets written. The distinction between “we chose A because of X” and “we chose A because of X, rejected B because of Y, and could not resolve Z” is enormous when someone later asks whether the decision was defensible given what was actually known.

The fields this implies: alternatives_considered with a rejection_reason for each, disconfirmed_by for evidence that actively cut against the chosen path, and unknowns or scope_limitations for what the system could not resolve at decision time.

A scoping note, in answer to Kartik N V J K, who asked whether to capture rejected branches: capture the alternatives that were explicit parts of the decision process, not an exhaustive reconstruction of every path the model internally considered. If the agent evaluated three tools and rejected two on policy grounds, those rejections are observable decision evidence and belong in the record. The model’s private deliberation does not. Observable reasoning is architecture; private reasoning belongs to the model.

Optional, escalating to Core with stakes. For a low-consequence decision, surviving evidence may be enough. For anything a human will later audit, defend, or be held accountable for, treat these as required. The higher the stakes, the more the losing evidence matters.

Principle 6: The Trigger Is a First-Class Field

pm25coder offered the most immediately practical field in the thread, from running a live decision ledger: the thing people actually read first, months later, is not the outcome. It is what provoked the decision. A timestamped complaint, an incident, a threshold breach, a human request. When every record carries its trigger, “why did we change this” becomes a search rather than an archaeology project, and the audit trail starts writing itself.

It is easy to bury the trigger inside an evidence list. Do not. Promote it to its own field, because it is the field that makes the record findable by the question a future reader will actually bring to it.

Core. Small field, disproportionate value.

Principle 7: Some Things Belong Outside the Record

Two mechanisms the thread kept reaching for are real and necessary, and they do not go in the ledger entry. Naming them keeps the record honest about what it is.

The first is revalidation. A ledger cannot observe a change in the outside world that never entered the system, so something outside the ledger has to periodically re-fetch referenced authorities and emit a fresh observation. pm25coder described this as a periodic “still current” or “stale” marker, which is a clean way to put it. The important framing: the revalidation job runs outside the ledger, and its result becomes a new event the ledger preserves. The ledger never claims continuous authority between checks, only that authority was observed at particular moments.

The second is retrieval. Giulio D’Erme and arun rajkumar converged on the point that a ledger gets read at exactly one moment, when someone is about to change the thing the reasoning was about, and that nobody goes looking for a constraint they have never hit. A well-structured record that is never surfaced is not much better than no record. The fix is to make the decision history an obligation on retrieval rather than an obligation on the reader: when a query surfaces the artifact a decision governed, the decision rides along, asked for or not.

That is what I have started calling separate custody, one interface. The ledger stays independently governed, so it cannot be edited in the same operation that changes what it witnesses. But the retrieval layer reunites the artifact and its decision history when the relationship becomes relevant, so no one has to know the ledger exists to benefit from it. Both properties matter, and they pull in opposite directions, which is exactly why they belong to different layers.

Core as principles, external as mechanisms. Neither is a field in the record.

A Worked Record

Applying the core principles to the baseline, a fuller record looks closer to this. The optional fields from Principle 5 are included and marked, since this is the kind of consequential decision where they earn their place.

reasoning_ledger:
  decision_id: dep-2026-03-14-0922
  decision: "Approve deployment"
  decided_at: 2026-03-14T09:22:00Z

  trigger:                                 # Principle 6
    type: incident
    ref: INC-2291
    observed_at: 2026-03-14T08:55:00Z

  evidence:
    - artifact: ADR-014
      authority: architecture-review
      version: 3
      obtained:                            # Principle 3
        source: adr-service
        method: re-derived
        retrieved_at: 2026-03-14T09:21:40Z
    - artifact: security-policy
      authority: security-team
      version: 7
      obtained:
        source: policy-cache
        method: cached
        retrieved_at: 2026-03-14T09:21:41Z
        cache_age_seconds: 240

  policy_evaluated:                        # Principle 1 (reports, does not rule)
    - check: dirty-tree-guard
      result: pass

  alternatives_considered:                 # Principle 5 (optional, stakes-dependent)
    - option: "Defer to next window"
      rejection_reason: "Incident severity exceeded defer threshold"
  disconfirmed_by: []
  unknowns:
    - "Downstream cache warm state not verified"

  relationships:                           # Principle 4 (two clocks)
    - type: supersedes
      target: dep-2026-02-02-1130
      valid_time: 2026-03-14T09:22:00Z
      asserted_at: 2026-03-14T09:22:00Z

  approvals:
    - release-manager
  outcome: approved

Field Reference

For quick use, here is the same thing as a reference, tagged.

Core fields. decision_id, decision, decided_at, trigger, evidence (with per-item authority, version, and an obtained block recording source, method, and retrieval time), outcome, and, for any relationship, both valid_time and asserted_at.

Optional fields, escalating to core with stakes. alternatives_considered with rejection_reason, disconfirmed_by, unknowns, scope_limitations.

Optional, context-dependent. confidence assessments, tools used, and policy_evaluated results where a boundary check ran. Useful, but not every decision needs them, and an empty one is worse than an absent one.

Not fields at all. Enforcement decisions, revalidation jobs, and integrity guarantees. These are mechanisms that surround the ledger, not contents of the record.

The Honest Limit

It is worth ending where the design genuinely runs out, because pretending otherwise is how ledgers get oversold.

A perfect record can tell you exactly what the system knew and did. It cannot retroactively give the system knowledge it never acquired. If the world changed and no observation of that change ever crossed your boundary, the ledger will contain a flawless, self-consistent account of a decision that was already wrong. Revalidation narrows that gap. It does not close it. Auditability is a property of what was observed, not a guarantee that everything relevant was.

That is not a reason to skip the record. It is a reason to be precise about what the record proves. It witnesses observation, not omniscience.

Looking Ahead

This piece is about what a record should contain and the principles that decide it. It has deliberately said almost nothing about whether the record can be trusted not to have been altered after the fact. That is a separate problem with its own answer, Write-Side Custody, and it is where Part 5 goes next. Designing the record and guaranteeing its integrity are different jobs, and keeping them apart is itself one of the design principles.


With thanks to the commenters whose contributions shaped this: GnomeMan4201 on disconfirming evidence, pm25coder on the trigger field and authority-fetch-as-event, Giulio D’Erme on two clocks and retrieval as an obligation, Self-Correcting Systems on provenance of the version, arun rajkumar on where the record lives, Tae Kim on evidence chains under audit, and Kartik N V J K on rejected branches. The record is better for the argument.

Facebooktwitterredditlinkedinmail

You Don’t Need a Ministry of Truth to Build a Memory Hole

What happens when a thousand independent sources turn out to have one parent?

A while back I went looking for a specific piece of television. A 2012 late-night interview with a sitting president, forty-five minutes long, broadcast on a major network to several million people.

Finding out about it was trivial. An episode database has the record: season, episode number, air date, runtime, and a summary of what was discussed. Wire coverage exists. Clips exist. A national newspaper posted the complete video the following morning, and the URL for that page is still indexed. Contemporary articles quote it. Later articles quote those articles.

Finding the thing itself was considerably harder.

A version of this essay treats that as sinister. This is not that essay. Broadcast rights change hands. Video platforms get retired. Formats go obsolete. Nobody has to intend anything for a forty-five-minute artifact to become difficult to inspect while everything written about it remains a search away.

What interests me is the shape that leaves behind, because I think it is becoming the normal shape of our information environment:

What happens when the source disappears but everything derived from it remains?

The memory hole doesn’t have to be empty

We tend to imagine information loss as absence. A document disappears, a database is deleted, a recording is destroyed. Something that existed no longer does.

Modern information systems produce a stranger failure mode. The original can vanish while its descendants multiply.

Picture a primary artifact that generates ten contemporary news stories. Another hundred articles cite those stories. Wikipedia summarizes several of them. Blog posts cite Wikipedia. Podcasts discuss the blog posts. Social posts quote the podcasts. Years later, AI systems ingest some combination of it all.

The ecosystem now contains thousands of references to an artifact almost nobody can examine. Retrieval works. Search works. There may be enormous agreement about what the original contained. But something has quietly changed underneath all that agreement.

The system hasn’t forgotten the story. It has forgotten how to prove the story.

That leads to the claim this whole essay rests on, so I will state it once, plainly, before dressing it up in examples:

Document count is a terrible proxy for evidentiary independence.

417 sources can’t all be wrong, right?

Suppose an AI system is answering a question about a disputed event and finds 458 relevant documents. Of those, 417 support one interpretation and 41 support another. The tempting conclusion writes itself.

417 > 41

But documents aren’t votes.

Suppose 290 of those 417 ultimately trace back to the same wire-service report. Another 92 descend from the same organizational statement. The remaining 35 cite one another. Meanwhile, the 41 documents supporting the competing interpretation include several independent primary sources.

The interesting question was never how many documents agree. It is how many independent provenance chains support the claim.

The web is exceptionally good at copying information, which is precisely why counting copies tells you so little. Generative AI sharpens the problem, because the final answer collapses hundreds of derivative sources into one confident paragraph. The reader sees consensus without seeing the genealogy that produced it.

This is not a thought experiment, and you can check it yourself in about a minute. Ask an answer engine a general knowledge question and look at what it cites. A crowd-edited encyclopedia will turn up more often than you might expect. That encyclopedia is a tertiary source: a summary of secondary reporting about primary artifacts. When it appears in a citation list, nothing in the interface mentions that the chain already runs three deep before it reaches anything anyone actually witnessed.

Enter the Golden Country Tire Company

Real disputes carry emotional freight, so let’s use tires.

Imagine the Golden Country Tire Company is the world’s largest tire manufacturer. Golden Country has just released its flagship product, the Super-Duper Road Tire. It’s fine—perfectly adequate tire. Golden Country would nevertheless very much like the world’s humans, search engines, and AI systems to regard it as one of the finest achievements in the history of vulcanized rubber. The company and every site named below are invented. The structure is not exotic.

So Golden Country does what any competent marketing organization does. It creates genuinely good content: technical documentation, comparison pages, FAQs, buying guides, structured data, product specifications, expert commentary, and articles answering every question a person might plausibly ask about road tires.

From a GEO and AEO standpoint, Golden Country is doing its job well.

Then Golden Country goes further and funds or controls a collection of apparently independent sites:

RoadTireExperts.example
UltimateDrivingGuide.example
TirePerformanceLab.example
BestRoadTiresToday.example
DefinitelyNotGoldenCountry.example

Each publishes high-quality, well-structured, machine-readable content. Each concludes that the Super-Duper Road Tire is fantastic.

Now ask an answer engine which tires are best for highway driving.

Retrieval surfaces dozens of sources praising the Super-Duper Road Tire. The model isn’t hallucinating. The documents exist. The recommendations exist. The citations exist.

Five sources are not five independent sources if Golden Country is standing behind all five of them.

Golden Country may not have fabricated a single claim. Every individual statement might be technically defensible. What Golden Country manufactured is not a falsehood. It is the appearance of consensus.

An answer engine that understands URLs sees five sources. An answer engine that understands provenance sees one organization speaking through five domain names. Those are very different information environments, and nothing in the retrieval layer distinguishes them.

When the copies start citing one another

The problem gets more interesting once Golden Country’s ecosystem develops internal links.

RoadTireExperts.example publishes a review calling the tire exceptional, citing a braking-distance comparison from TirePerformanceLab.example. The lab article points to a roundup at UltimateDrivingGuide.example. That roundup cites customer-satisfaction figures summarized by BestRoadTiresToday.example, which links back to the original Road Tire Experts review.

From the outside, the provenance graph looks rich:

Four boxes labeled Road Tire Experts, Tire Performance Lab, Ultimate Driving Guide, and Best Road Tires Today. Arrows labeled "cites" run from each to the next, and a final arrow runs from Best Road Tires Today back to Road Tire Experts, closing the chain into a loop. No other elements appear.

Multiple domains. Multiple articles. Multiple authors. Multiple citations. Apparent corroboration throughout.

The graph is a circle. No independent evidence ever entered the system. The sources don’t corroborate one another. They are recursively laundering the same claim.

Here is the same graph with one more fact restored:

The same four sites and the same loop of "cites" arrows as the previous diagram. A fifth box, Golden Country Tire Company, now sits apart from the loop with dashed arrows labeled "controls" running from it to each of the four sites. The four sites still cite only one another; every ownership arrow points inward from the single outside node.

The dashed edges are the only thing that changed, and they are the only thing that matters. They are also the only part of this picture that no retrieval system draws, because nothing in a URL, a byline, a schema block, or a citation announces who funded the page.

This is where counting citations becomes as misleading as counting documents. A densely connected graph can look authoritative while having almost no independent roots. If every path eventually terminates at Golden Country, the graph contains repetition, not corroboration.

None of this is new. Human information ecosystems have always contained circular citation, press-release recycling, unattributed copying, and claims that gain acceptance through sheer repetition.

What changes with generative AI is the economics. Another plausible article is cheap. Another plausible site is nearly as cheap. Rephrasing a claim so it reads as linguistically independent is cheap. Producing structured, answer-friendly content at volume is cheap.

Apparent consensus can now grow much faster than independent evidence.

I could give you a number here. A widely circulated figure estimates how much of the newly published web is now AI-generated, and I have seen it quoted in a dozen places this month. I went looking for where it came from. The first article cited a second article. The second cited a marketing blog. The marketing blog cited a crawl study, described but not linked. I gave up at the fourth hop, which is either a failure of diligence on my part or the entire thesis of this essay demonstrating itself at my expense. Possibly both.

So take the number as read, and notice instead that I cannot show you its parents.

And synthetic content no longer needs to copy the original wording. Fifty pages can express the same unsupported claim fifty different ways. Textual similarity becomes a weaker signal of shared ancestry, even though the underlying provenance hasn’t changed at all.

The result is an information environment optimized beautifully for retrieval and architecturally terrible for verification.

But doesn’t somebody catch this?

The reasonable objection is that platforms already police this. They do, and they do it reasonably well. Search engines have spent years developing policies against scaled content abuse and coordinated networks built to manipulate rankings, and enforcement actions have removed entire sites from indexes.

Notice what those policies target: low-quality content produced at volume, and thin content built to game a ranking. That is the crude version of Golden Country, and the crude version does get caught.

Our Golden Country doesn’t do that. Its technical documentation is accurate. Its comparison pages are useful. Its specifications are correct. Its structured data is well-formed. Every site in the network would survive a quality review on its own merits, because every site deserves to.

Golden Country is not violating the spam policy. It is following the content marketing playbook competently, five times, from five domains it happens to own. The enforcement regime was built to detect garbage, and Golden Country isn’t producing garbage. It is producing a well-made monoculture.

That deserves a name, because it will keep happening. Call it a provenance monoculture: an information environment that is diverse in sources, formats, and domains, and uniform in origin. Nothing in it is false. Nothing in it is thin. Everything in it grew from the same root.

That is the gap. Quality enforcement and independence verification are different problems, and we currently have infrastructure for one.

Nobody needs a pneumatic tube to the furnace

In 1984, controlling history requires destroying evidence. Winston Smith rewrites the record and the original goes down the memory hole.

Our systems don’t require anything that dramatic. A primary source becomes gradually inaccessible. Links rot. Licensing changes. Platforms retire. Archives migrate. Formats go obsolete. Meanwhile the derivative material stays exactly where it is, and new material keeps accumulating around one interpretation of the missing source.

Nothing has to be deleted on purpose. Nothing has to be centrally coordinated. The environment simply becomes asymmetric, and the systems grounded on that environment inherit the asymmetry.

A modern memory hole is surrounded by more information than ever.

The economics of the hole

GEO and AEO are usually discussed as marketing disciplines: make your organization, product, expertise, or terminology retrievable and comprehensible to answer engines. That is legitimate work, and good technical content should be understandable by humans, search engines, and answer engines alike.

The problem starts when information availability gets confused with independent corroboration.

When a primary source is missing, something determines which secondary representation becomes its machine-readable substitute. An organization with sufficient resources can produce a large body of coherent, optimized material around its preferred representation of reality. It doesn’t need to falsify anything. It only needs to become disproportionately represented in the environment from which answers get assembled.

The Super-Duper Road Tire doesn’t become better. It becomes better represented.

If answer engines treat frequency as confidence, domain count as independence, citation density as authority, or repetition as corroboration, then the organizations best equipped to populate the environment gain an advantage with no relationship whatsoever to the quality of their evidence.

There is a further wrinkle, and it’s also easy to test. Put the same question to two different answer engines and compare the lists of sources underneath. The answers will often agree. The evidence behind them frequently does not overlap much at all. Whatever consensus a reader perceives is partly an artifact of which pipe they happened to ask.

When the source is missing, say so

This is where provenance stops being an archival concern and becomes part of memory architecture.

A trustworthy system should distinguish among primary evidence, independent corroboration, derivative reporting, organizational claims, unknown provenance, and unavailable primary sources. Those are not equivalent categories of knowledge, and collapsing them is a design decision, not a technical necessity.

If 417 documents descend from three sources, the system should know that. If five apparently independent tire sites belong to Golden Country, the system should know that too. If a citation graph contains no independent evidentiary root, the number of edges in the graph should not manufacture authority.

And if a source once existed but can no longer be examined, the system should preserve that fact rather than silently filling the gap with the statistical weight of everything surrounding it. Absence is itself a provenance category. It is a thing worth recording, not a hole to be smoothed over.

A provenance-aware system might answer like this:

Multiple secondary sources report this claim, but the primary artifact they reference is unavailable. Several of those sources also derive from the same upstream reporting, so they should not be treated as independent corroboration.

That is not a weaker answer. It is a more honest one, and honest answers are the only kind worth building infrastructure for.

Information without provenance is just gossip

Memory is not simply the ability to preserve information. Trustworthy memory preserves the relationship between information and its origins.

Who created this? What evidence supported it? Was the source primary or derivative? Was it independent? Can that authority still be verified? Does this source depend on another that no longer exists? Are apparently independent sources controlled by the same organization? Does the citation graph lead outward to evidence, or eventually curl back onto itself?

Without those relationships, a system can accumulate an extraordinary volume of knowledge while gradually losing the ability to explain why any of it should be believed. That isn’t memory. That’s a very well-indexed rumor mill.

Orwell imagined that controlling history required destroying the evidence. Our problem is subtler and considerably cheaper. We can preserve enormous quantities of information while losing the provenance required to evaluate it, and we can surround a missing source with so many summaries, restatements, and synthetic corroborations that the absence itself becomes invisible.

Increasingly, machines stand between that environment and the person asking the question. So the question is no longer whether a system can find an answer. It is whether the system can tell a thousand independent witnesses from one witness repeated a thousand times.

Because when a source falls into a memory hole, something always fills the space around it. Information without provenance is just gossip, and gossip scales beautifully.


An open question, and I mean it as one.

I have described a problem and stopped short of a fix, because I am not sure what the first move is. Disclosure obligations for funded networks? An independence signal carried alongside citations? Answer engines surfacing shared upstream sources when they detect them? Something else entirely, or nothing, because the incentives point the other way?

If you build retrieval systems, work in trust and safety, or just have a view: what would a first step actually look like, and who is positioned to take it?

Facebooktwitterredditlinkedinmail