- If you cannot show the exact data an AI read, you cannot defend its answer. In most enterprise stacks that data has since been overwritten.
- In EY's 2026 survey, data quality problems were the most common finding of AI assurance reviews (57%), ahead of model drift (48%).
- Every data platform is layered (staging, hub and mart; or Bronze, Silver and Gold), and history usually dies in the upper layers, which are exactly the ones reports and AI read.
- Auditability is a property of the read path: can you rebuild and prove a past state? Governance is a property of the write path: which writes are allowed, and what each must carry.
- Append-only storage with a lifecycle at every layer turns an auditor's request into a query, and makes completeness provable rather than asserted.
Most enterprise AI failures are data failures. In a September 2026 EY survey of senior AI leaders at billion-dollar companies, 72% said they worry about being unable to trace or audit the data lineage and inputs feeding critical AI decisions, and their AI assurance reviews found data quality problems (57%) more often than model drift (48%). In a Cloudera study fielded the same summer, 95% of enterprises had delayed or cancelled AI initiatives over data governance, compliance or regulatory challenges, and 72% said their data architecture needs a significant overhaul.
We build data infrastructure for regulatory and financial reporting, where every number has to be traceable. In our experience the problem is rarely the model. It is whether each layer of the data platform overwrites data or keeps its history.
Three storage design patterns, and only one is auditable
Let's take an example. A bank runs an AI agent that drafts its quarter-end credit risk summary. For the quarter ending 30 June, it reported exposure of $12.4 million to the borrower with identifier B-1042: the amount outstanding on the borrower's loans, minus the collateral held against them. The figure came from a report generated automatically from the data layer. A risk controller approved it, and it was submitted to the regulator.
On 28 July, an analyst finds that a collateral revaluation on the borrower's loan L-2041, from $4.1 million to $4.6 million, was never loaded. The source system sends a new file, the collateral record is corrected, and exposure drops to $11.9 million.
In October, the supervisor's data quality review asks: "Your June return says $12.4 million. Your systems say $11.9 million. Explain the difference." The same correction plays out very differently depending on how each layer stores data.
Every layer is overwritten
A classic warehouse has layers too:
- Staging tables for raw extracts
- A hub or core model for cleaned and transformed data
- Marts for reporting
On 30 June, the reported number came from a query like this, which joins loans to their collateral:
SELECT l.borrower_id,
SUM(l.outstanding - c.value) AS exposure
FROM core.loans l
JOIN core.collateral c ON c.loan_id = l.loan_id
WHERE l.borrower_id = 'B-1042'
GROUP BY l.borrower_id; -- 12,400,000
Reloading the collateral file for the correction touches all three layers, and each step is destructive:
-- staging: truncated and reloaded
TRUNCATE stg.collateral;
-- hub: corrected in place
UPDATE core.collateral
SET value = 4600000 -- was 4,100,000
WHERE loan_id = 'L-2041';
-- mart: rebuilt from the hub
TRUNCATE mart.borrower_exposure;
-- the same query now returns 11,900,000
After the July runs, $12.4 million exists nowhere:
- Staging kept only one night of data.
- The hub may keep history for some dimensions as slowly changing records, but facts and marts are overwritten.
- The database's write-ahead log was recycled for crash recovery long ago, and the point-in-time recovery window closed weeks before October.
- The team rebuilds the story from email threads, spreadsheets and working files on people's laptops.
The business may still arrive at an answer for the auditor or regulator, but it takes time, and the evidence is the testimony of its users, not a record in the system.
Raw data is kept, the rest is overwritten
A data lake following the medallion architecture has three layers:
- Bronze for raw data, appended and retained
- Silver for cleaned and conformed data
- Gold for business-ready aggregates and reporting
Bronze keeps both collateral files. Silver and Gold are treated as derived data, so the correction is merged into Silver and Gold is rebuilt:
-- Bronze keeps both extracts:
-- collateral_0630 L-2041 4,100,000
-- collateral_0728 L-2041 4,600,000
-- Silver: corrected in place
MERGE INTO silver.collateral t
USING bronze.collateral_0728 s ON t.loan_id = s.loan_id
WHEN MATCHED THEN UPDATE SET t.value = s.value;
-- Gold: rebuilt by joining loans to collateral
INSERT OVERWRITE gold.borrower_exposure
SELECT l.borrower_id, SUM(l.outstanding - c.value)
FROM silver.loans l JOIN silver.collateral c USING (loan_id)
GROUP BY l.borrower_id; -- B-1042: 11,900,000
-- a week later, routine clean-up
VACUUM gold.borrower_exposure;
By October, the raw files survive, but the Gold table that said $12.4 million does not:
- Table formats such as Delta Lake and Apache Iceberg can show older versions of a table ("time travel"), but only for a limited time. By default, Delta Lake's routine clean-up deletes replaced files after one week, and Iceberg keeps five days of history.
- Recreating June means rerunning June's version of the pipeline code against June's reference data, applying only the corrections that existed then.
- Where history does survive, it records what changed but rarely why. The author is often a service account, no reason is attached, and nothing shows that anyone approved the Silver fix before Gold was rebuilt.
The answer can be found, but only through an investigation, not a query, and the gaps in who and why are still filled by people's recollection. That is why "we keep all the raw data" is not an audit answer: raw data shows what arrived, not what was reported, corrected or approved.
Nothing is overwritten, at any layer
This is how we built our platform. It keeps the same Bronze, Silver and Gold layers, with three differences:
- Every layer, not just Bronze, stores data in files that are never changed once written.
- Every change at every layer is an entry in one append-only log, and each entry must carry an author and a reason.
- Every new version, from a pipeline run or a correction, keeps the previous one intact, and approval marks which version is certified for reporting and AI.
Every committed change gives a table a new version number. Two Gold versions matter in this story:
The supervisor's question is answered by filtering the log for this borrower. Rows 41–42 are the June report; rows 56–62 are the July correction, moving up from Bronze to Silver to Gold:
seq layer op file ver reason by from
41 gold ADD g07 v14 Q2 aggregation pipeline s12,s13
42 gold APPROVE - v14 Q2 sign-off; filed risk/ctrl-02 -
56 bronze ADD b30 v8 L-2041 valuation 4.6M source-sys -
57 silver REMOVE s12 v6 fix: reval not loaded analyst-07 -
58 silver ADD s19 v6 L-2041 4.1M -> 4.6M analyst-07 s12+b30
59 silver APPROVE - v6 correction sign-off risk/ctrl-02 -
60 gold REMOVE g07 v15 restate from silver v6 pipeline -
61 gold ADD g09 v15 restate from silver v6 pipeline g07+s19
62 gold APPROVE - v15 restatement sign-off risk/ctrl-02 -
The June report was recorded against Gold v14 (row 41). The file it read, g07, was taken out of the current table in row 60 but never deleted, so v14 and v15 can be rebuilt side by side:
-- snapshot_files(table, v): the files the log had added,
-- and not removed, as of version v
SELECT 14 AS ver, SUM(exposure) AS exposure
FROM read_parquet(snapshot_files('gold.borrower_exposure', 14))
WHERE borrower_id = 'B-1042'
UNION ALL
SELECT 15, SUM(exposure)
FROM read_parquet(snapshot_files('gold.borrower_exposure', 15))
WHERE borrower_id = 'B-1042';
-- ver exposure
-- v14 12,400,000 what was reported and filed
-- v15 11,900,000 after the approved correction
In October, everything is still there:
- The June figure of $12.4M was right for the data the bank had on 30 June, and rebuilding Gold v14 proves it.
- The difference is one late valuation from the source system, one approved correction in Silver and one approved restatement in Gold, each with a named author and a reason.
- The
fromcolumn traces the number from Gold back to Silver and to the Bronze file the source system sent.
The answer is a query that takes minutes, and the evidence is in the system. Nothing else changed, and the log proves it. It is double-entry bookkeeping applied to data: you never erase an entry, you post a correcting one.
Data auditability vs data governance
The two terms are often used interchangeably. The example shows they are different jobs, done at different points in the storage layer.
Prove what the data was on any date, and explain every change since.
In Design C, auditability is rebuilding Gold v14 (the $12.4M June figure) and showing the log entries, rows 56–62, that turned it into v15 ($11.9M). It is a property of how data is kept and read back.
Decide who can change the data, what they must record, and who must approve it.
In Design C, governance is refusing any change without an author and a reason, and requiring a manual correction to be signed off before its version is certified for reporting. It is a property of how data is allowed to be written.
You need both. Governance without auditability is a policy you cannot prove. Auditability without governance is a perfect record of uncontrolled changes.
Every approved version, traceable across layers
What makes Design C auditable is not that it has Bronze, Silver and Gold layers; Design B has those too. It is that every version of every layer stays available, each one records exactly which versions of the layer below it was built from, and the versions certified for reporting are marked as approved.
Read across a row and you have the full lineage of a reported number: Gold v15 was built from Silver v6, which was built from Bronze v8. This linkage moves the usual audit requests from rerunning pipelines or hunting for files to simple queries:
- Reproduce history.
- Open the approved Gold version, v14, and query the records behind the $12.4M figure.
- Check each file against the checksum recorded when it was written.
- Trace its lineage.
- Follow the version from step 1 through its recorded links down to the raw layer: Gold v14 to Silver v5 to Bronze v7, the
collateral_0630file.
- Follow the version from step 1 through its recorded links down to the raw layer: Gold v14 to Silver v5 to Bronze v7, the
- Explain the changes.
- Compare two approved versions at each layer, such as Gold v14 and v15, or Silver v5 and v6.
- List the changes between them, each with its author and reason.
Because nothing is ever overwritten, auditability is stored with the data itself. Whether a change was made by an AI agent or a person, the previous version is still there for the auditor.
Prove completeness. Because the log only ever grows, the changes between Gold v14 and v15 are exactly the entries between them, at every layer. There is nowhere else for a change to hide.
AI agents now change data, not just read it
People and pipelines used to be the only writers to enterprise data. Now AI agents are too, and most controls have not caught up:
- 49% of organizations using AI agents say their governance rules do not cover them yet (EY).
- 87% of IT and security leaders have seen or suspected an AI agent reaching data it did not need for its task (Delinea).
- In July 2025, an AI agent wiped records from a live production database, then filled it with about 4,000 made-up ones (eWeek).
- In 2026, researchers at Cyera reviewed real enterprise AI agent failures and found 23 cases of hidden integrity damage: fabricated records, silently reverted human edits and corrupted data.
The fix: treat an agent like any other writer. It cannot edit or delete data directly. It hands over a new file, the file goes through the same checks as any other load, and the log records which agent made the change, for whom, and why.
Because nothing is overwritten, an agent that gets it wrong cannot destroy anything. The previous version is still there.
A business context: BCBS 239 is still elusive
Banks have been asked to solve this problem for more than a decade. In 2013, the Basel Committee published BCBS 239, its principles for how banks should gather and report risk data. The core idea is simple: a bank should be able to show where every risk number came from.
Ten years later, most still cannot. According to Deloitte's summary of the Basel Committee's 2023 progress report, only 2 of the 31 large banks assessed were fully compliant. The reasons were familiar: data spread across many systems, old technology, and too much manual work. Since 2024, the European Central Bank has gone further and expects banks to trace each reported figure all the way back to its source, field by field.
From where I sit, the lesson is direct. A bank that cannot show this lineage to its regulator cannot show it for an AI model either, because both read from the same storage. Fix the storage once, and you answer both.
Four questions to ask before your next AI pilot
Pick one table your AI will use, and ask your data team to answer these. Each should take a query, not a project.
- What did the AI see? Take an answer it gave last month. Can you show the exact version of the data it used?
- Who changed it, and why? Take one value that was corrected. Can you show who changed it, when, why, and what it was before?
- Can you rebuild it? Can you show the reporting data exactly as it stood three months ago, without restoring a backup or rerunning a pipeline?
- Was it approved? Can you show that the version the AI used was the approved one?
If any answer is "not easily", the risk in your AI initiative is not the model. It is the storage underneath it, and it will show up the first time someone asks your AI to explain a number.
Frequently asked questions
What is the difference between data auditability and data governance?
Auditability is a property of the read path: the ability to rebuild any past state of the data at any layer, prove it is what was used, and explain every change since. Governance is a property of the write path: the rules enforced at commit time about who may write, what evidence a write must carry, and which version readers may treat as fact.
Is a medallion architecture with Delta Lake or Iceberg auditable?
Partly. Bronze is usually append-only and retained, but Silver and Gold are typically merged or overwritten, default time travel lasts days to weeks, author and reason are optional metadata, and there is no approval step. Auditability needs versioned history at every layer, mandatory reasons, and a record of which versions were approved for use.
References
- EY US, EY survey finds that autonomous AI implementation outpaces oversight, yielding an AI governance gap, 15 September 2026. Survey of 202 senior AI executives at organizations with at least $1 billion in revenue, fielded 28 May–15 June 2026.
- Cloudera, The Great AI Re-Architecture, 11 August 2026. Commissioned by Cloudera; conducted by Wakefield Research among 1,500 enterprise architects, cloud infrastructure leads and data architects, 5–22 June 2026.
- Seagate Technology, 2026 Data Infrastructure Readiness Report, 14 September 2026. Commissioned by Seagate; conducted by Recon Analytics among 2,712 technology decision-makers, May–June 2026.
- Precisely, 2026 State of Data Integrity and AI Readiness, 2026. Survey of 500+ data and analytics leaders.
- Campus Technology, Survey Reveals Data Governance Enforcement Gap for Agentic AI Tools, 7 October 2026, reporting Delinea's Identity Security Report The AI Enforcement Gap (2,254 IT and security leaders).
- eWeek, AI Agent Wipes Production Database, Then Lies About It, July 2025.
- Cyera, Agent-Inflicted Damage: Inside the Real-World Failures of Enterprise AI Systems, 2026.
- Deloitte, BIS assessment of banks' compliance with BCBS 239 principles, summarizing the Basel Committee's Progress in adopting the Principles for effective risk data aggregation and risk reporting, November 2023.
- European Central Bank, Guide on effective risk data aggregation and risk reporting, May 2024, as summarized by Solidatus.


