Correct the Record Without Rewriting the Past
An AI-readable company brain needs append-only event history, attributed corrections, and compact current state—not invisible edits to what happened.
Proof note: This playbook comes from real operating-system repair work: historical records had to remain intact while corrected facts became usable by agents and humans. The examples below are fictional. No real accounts, contacts, record IDs, hashes, or internal exceptions appear here.
An operator opens a CRM record and fixes an old field.
The current view is now correct. The history is now false.
This trade can feel harmless. A stage was mislabeled. A date was copied incorrectly. An automated process wrote an unsupported conclusion. Why preserve a mistake when everyone agrees it is wrong?
Because an AI-readable company brain needs to answer two different questions:
- What did the system record at the time?
- What does the system believe now?
If corrections silently replace history, the company can answer only the second question. It loses the path that produced the current state. That is where audits, agent learning, and ordinary human trust begin to wobble.
Correct the present. Do not counterfeit the past.
Why invisible edits are expensive
Operational history is not a museum. It helps people and agents explain decisions.
A revenue team may need to know why an opportunity advanced. A delivery leader may need to know which scope assumption entered a handoff. A support team may need to know when a risk first appeared. An agent-improvement review may need to distinguish a bad recommendation from a later correction.
When the original event is overwritten, several useful distinctions disappear:
- what was known then versus what is known now;
- an original mistake versus a later repair;
- a model inference versus owner-confirmed evidence;
- a source-data problem versus a compaction problem;
- a policy exception versus an ordinary transition.
The current record may look cleaner. The operating system becomes harder to explain.
This matters even more when agents learn from the record. If an agent sees only the corrected version, it may conclude that the workflow behaved correctly all along. The mistake cannot improve the next run because the mistake no longer exists.
Use two layers: events and current state
The cleanest pattern is simple:
- Events are append-only. They preserve what was recorded, by whom, when, and from which evidence.
- Current state is compacted. It projects the latest accepted truth for the next decision.
The event log tells the story. The current record tells the operator where to stand now.
These layers should be connected, not confused.
Suppose a fictional opportunity was marked qualified based only on public research. Later, the owner confirms that no buyer conversation occurred and the opportunity should remain researching.
Do not edit the old event until it looks like the system never made the mistake. Add a correction event:
{
"event_id": "evt_1042_correction",
"event_type": "record_corrected",
"corrects_event_id": "evt_1042",
"correction_reason": "Public research did not establish buyer qualification",
"corrected_fields": {
"stage": {
"from": "qualified",
"to": "researching"
}
},
"source_evidence": ["owner_review_2026_07_13"],
"authorizing_owner": "revenue_owner",
"occurred_at": "2026-07-13T09:30:00Z"
}
The compacted opportunity record can now show researching. The original event still shows what happened. The correction explains why the present changed.
Nothing mystical happened. The system simply stopped pretending that now and then are the same thing.
The AI Event Correction Contract
A correction event should carry enough structure for a human, query, or agent to reconstruct the repair.
# AI Event Correction Contract
## Original record
- original_event_id:
- original_event_type:
- original_timestamp:
- original_actor:
- affected_entity_id:
## Correction
- correction_event_id:
- correction_reason:
- corrected_fields:
- source_evidence:
- authorizing_owner:
- correction_timestamp:
## Projection
- current_state_before:
- current_state_after:
- compaction_rule_applied:
- downstream records to refresh:
## Controls
- original event preserved: yes / no
- correction links resolve: yes / no
- evidence available: yes / no
- owner authorized: yes / no
- exception registered if needed: yes / no
- integrity check passed: yes / no
The fields can live in JSONL, a database, or an event-capable CRM. The tool is less important than the semantics.
A correction must point backward to the record it changes and forward to the current-state projection it affects.
Separate corrections from ordinary updates
Not every new fact is a correction.
An opportunity moving from researching to qualified after a buyer conversation is an ordinary lifecycle event. A typo in the original account name may be a correction. A newly learned buyer objection is an update. An unsupported objection that was previously recorded as fact needs a correction.
Use this test:
Does the new record describe a later change in the world, or does it repair what the system claimed about an earlier moment?
If the world changed, append the new lifecycle event.
If the earlier record was wrong, append a correction event linked to it.
If both happened, record both. Operational reality is allowed to have more than one sentence.
Give exceptions a registry
Legacy systems rarely become clean in one afternoon. Some old records cannot be repaired immediately. Evidence may be missing. An external integration may have produced malformed events. A historical migration may not preserve every original identifier.
Do not hide these cases inside code comments or tribal memory. Keep a small exception registry:
# Event Integrity Exceptions
- exception_id:
- affected_record_range:
- known problem:
- risk to current state:
- temporary handling rule:
- owner:
- review date:
- remediation status:
An exception registry does not make bad data good. It makes uncertainty inspectable.
That is valuable to agents. A query can exclude known-bad ranges, lower confidence, or ask for human review instead of treating every row as equally trustworthy.
Validate the correction path
A correction contract is only useful if the system checks it.
At minimum, validate that:
- the original event exists;
- the correction points to one valid original event;
- required evidence and owner fields are present;
- corrected fields use allowed names and values;
- current-state compaction applies the correction deterministically;
- no historical event was mutated or deleted;
- downstream views agree with the compacted state;
- unresolved exceptions remain visible.
This turns correction semantics into an operating control rather than a writing convention.
The check should fail loudly when a correction cannot be applied. Silent partial repair is how a company brain grows two versions of the truth and lets each department pick a favorite.
Where human approval belongs
Agents can detect likely inconsistencies. They can draft correction events. They can compare sources and show the projected change.
They should not silently rewrite consequential business history.
Use human approval when a correction changes:
- opportunity stage or forecast meaning;
- customer commitments;
- pricing, scope, or contractual interpretation;
- approval state;
- compliance or incident records;
- attribution of a decision;
- evidence used to justify external action.
The agent can prepare the repair packet. The accountable owner authorizes the meaning.
One action this week
Choose one workflow with an event log or change history.
Find a record someone would currently “just fix.” Before editing it, write a correction event with six fields:
- original event ID;
- correction reason;
- corrected fields;
- source evidence;
- authorizing owner;
- current-state projection.
Then confirm that the original event still exists and that the current view reflects the correction.
A company brain earns trust when it can admit that yesterday's record was wrong without pretending yesterday never happened.
For the underlying event/current-state architecture, read Build the CRM Substrate Before the AI Sales Dashboard. To keep facts, hypotheses, and unknowns distinct in the current record, use Evidence-Aware CRM Fields for AI Revenue Work. If your revenue lifecycle has conflicting records, unclear owners, or AI-generated state changes, map your revenue bottleneck.