Skip to content

Volkswagen Dieselgate: Public Claims vs The Record

The car passed emissions — because it knew it was being tested.

Between 2009 and 2015, Volkswagen sold roughly 11 million diesel vehicles certified as meeting strict emissions standards. Internally, engineers had designed software that detected test conditions and switched to compliant mode. On the road, the same vehicles emitted up to 40× the legal NOx limit.

Every public claim said the cars complied. Every internal document, independent field test, and regulator finding said otherwise.

This is the public claims vs records showcase — feeding YantrikDB twelve years of Dieselgate public record and watching it reconstruct the contradictions that unraveled the scandal.

All sources are public: EPA Notice of Violation (2015-09-18), DOJ consent decree (2017), ICCT/West Virginia University field test report (2014), Volkswagen public sustainability reports (2010–2015).


SourceAuthorityPeriodWhat it claims
vw.publicMarketing/PR2009–2015Cars comply; no defeat device
vw.internalEngineering (disclosed at trial)2006+Defeat device was designed in
iccT.reportIndependent field test2014-05Real-world NOx 5–35× legal limit
epa.novUS regulator2015-09-18Formal finding of Clean Air Act violation
doj.decreeUS Dept of Justice2017-01-11VW pleads guilty, $4.3B penalty

The five polarity contradictions the engine caught

Section titled “The five polarity contradictions the engine caught”
[1] VW_TDI_diesels_2009_2015 --complies_with--> US_EPA_Tier2_Bin5_standard
(vw.public) CLAIMS YES from 2009-01-01
(vw.internal) CLAIMS NO from 2006-01-01
[2] VW_TDI_diesels_2009_2015 --complies_with--> US_EPA_Tier2_Bin5_standard
(vw.public) CLAIMS YES from 2009-01-01
(iccT.report) CLAIMS NO from 2014-05-15
[3] VW_TDI_diesels_2009_2015 --complies_with--> US_EPA_Tier2_Bin5_standard
(vw.public) CLAIMS YES from 2009-01-01
(epa.nov) CLAIMS NO from 2015-09-18
[4] VW_TDI_diesels_2009_2015 --contains--> defeat_device_software
(vw.public) CLAIMS NO from 2009-01-01
(vw.internal) CLAIMS YES from 2006-01-01
[5] VW_TDI_diesels_2009_2015 --contains--> defeat_device_software
(vw.public) CLAIMS NO from 2009-01-01
(epa.nov) CLAIMS YES from 2015-09-18

Five contradictions across twelve years, resolved in one query. Every row is a structured claim. Every source is attributed. No text search, no embedding similarity — just polarity, validity, and provenance.


The temporal query — same database, different belief at different times

Section titled “The temporal query — same database, different belief at different times”

On 2013-06-01 (before the ICCT test published, before the EPA NOV):

[vw.public] NO VW_TDI_diesels_2009_2015 --contains--> defeat_device_software
[vw.public] YES VW_TDI_diesels_2009_2015 --complies_with--> US_EPA_Tier2_Bin5_standard

Public state of belief: the cars comply, there is no defeat device.

On 2016-01-01 (after EPA NOV, before DOJ plea):

[epa.nov] YES VW_TDI_diesels_2009_2015 --contains--> defeat_device_software
[epa.nov] NO VW_TDI_diesels_2009_2015 --complies_with--> US_EPA_Tier2_Bin5_standard
[iccT.report] NO VW_TDI_diesels_2009_2015 --complies_with--> US_EPA_Tier2_Bin5_standard

Public state of belief: defeat device confirmed, non-compliance official.

Same entity, same claims-ledger, same database — the answer to “what does the public record say?” depends on when you ask. Validity windows are queryable first-class data, not a hack on top of a last-write-wins table.


Why couldn’t Postgres + embeddings + a dashboard do this?

Section titled “Why couldn’t Postgres + embeddings + a dashboard do this?”

A vector database returns all five sources as “similar” and lets the LLM guess. A SQL database would force overwrite: the moment vw.internal’s 2006 claim and vw.public’s 2009 claim both assert the same (subject, relation, object), one destroys the other. A graph database captures the relationship but not the polarity — you can’t distinguish “VW claims X” from “X is true”.

None of them can store vw.public’s “compliant” (polarity=+1) and epa.nov’s “not compliant” (polarity=-1) on the same (VW_TDI_diesels_2009_2015, complies_with, US_EPA_Tier2_Bin5_standard) tuple as two coexisting rows with opposite polarity, non-overlapping validity windows, full source attribution, and automatic contradiction detection — all in one round-trip. That’s the category.


Any compliance, audit, or regulatory research workflow with long-running contradictions:

  • Emissions / environmental compliance — public claims vs regulator findings vs independent field data
  • Pharmaceutical labeling — marketing claims vs clinical trial data vs FDA warnings
  • Financial disclosures — 10-K statements vs SEC enforcement vs whistleblower filings
  • Product safety — public safety statements vs internal engineering memos vs recall filings
  • Supply chain / ESG claims — vendor certifications vs on-site audits vs investigative reports
  • Compliance across jurisdictions — the same product cleared in one country, flagged in another

YantrikDB’s scoped claims turn each of these into the same kind of structured contradiction detection you see above. The scandal is not stored as a headline. It’s stored as a set of attributed claims whose polarities disagree.


Terminal window
git clone https://github.com/yantrikos/yantrikdb-server
python yantrikdb-server/docs/showcase/volkswagen_engine.py \
ydb_your_token \
http://your-cluster:7438

Requires yantrikdb-server v0.7.2+ and yantrikdb v0.6.1+.

Full script: volkswagen_engine.py


From 2009 to 2015, the cars were simultaneously compliant and non-compliant — depending on which source you asked. YantrikDB stored both.