A control framework is six hundred unchecked claims about a law¶
A control says something like: Article 10(2)(c) requires you to document data-preparation operations. That is three claims in one sentence. The provision exists. It says roughly that. Nothing has repealed it.
Two hundred controls make about six hundred of those. Nobody checks them.
Not carelessness, an absent mechanism¶
You can review a control framework the way you review a document. Read it, form a view, note some corrections. That does not settle anything and it does not scale past a few dozen controls.
I found this out directly. A control framework I was building for the AI Act reached about 194 controls in prose, and I put it through two independent audits. The first said it was fit to build on. The second found four Critical defects, and all four were real.
The worst of them: Article 113, the general application rule, had been missed entirely. It says the Act shall apply from 2 August 2026. The framework was still framed as a readiness tool. Much of the Act was already in force.
An audit that reads and forms a view will miss that. A check that asks "is every operator duty covered" catches it in seconds.
Seven checks, and a non-zero exit code¶
| Check | Question |
|---|---|
CITE |
Does the cited provision exist? |
REPEAL |
Is it still in force? |
QUOTE |
Is the quoted text verbatim, or paraphrased? |
MODAL |
Does the control's obligation level match the provision's verb? |
QUAL |
Does the control drop a qualifier that narrows the duty, including one inherited from a chapeau? |
COVER |
Does every operator duty have a control, or a written exemption? |
DUP |
Do two controls cite the same provision at different obligation levels? |
Errors fail the run. Warnings are judgement calls that get recorded either way.
REPEAL is the one worth explaining. Repeals are derived by set difference between the base act and the consolidated act, not by reading deletion markers. A marker tells you that something went, not what. And "cites a provision that was deleted" and "cites a provision that never existed" are different defects that need different fixes.
What it actually caught¶
A verification tool that has never found anything is not evidence of quality. This one found five parser defects, each of which would have corrupted the work silently.
The worst: a SECTION heading did not reset the parser's write target, so a section title overwrote the last paragraph of the preceding article. Fourteen provisions had their text destroyed. Article 27(5) was stored as the string "Notifying authorities and notified bodies". So was Article 15(5) on security and resilience, and Article 73(11) on serious incidents. Two later domains would have been built on text that was not there.
Also (i) parsed as a Roman numeral rather than the ninth letter, breaking eight lettered lists.
Four of the five were found by accident. That is not a property to rely on, which is why the integrity gates exist: the fifth was found by construction, in seconds, and that class cannot recur.
What a green run does not mean¶
This matters more than what it does mean.
Green means the parser accounted for every line, the citations are real, the quotes are verbatim, every operator duty has a control or a written exemption, and no qualifier was silently dropped.
It does not mean the control is well drafted, that the evidence is the right evidence, or that the framework is fit for purpose.
And one distinction is worth being exact about. The integrity gates prove text survived into the corpus and that the expected number of structural nodes exists. Neither proves the text was attached to the right node. No purely textual invariant can. That is what reading the whole article, and keeping the verbatim quote beside each control, are for.
The page states the known limitations plainly rather than leaving them to be discovered.
The method matters as much as the tool¶
Five rules came out of how the original defects happened, and they apply whether the work is done by a person or an AI agent:
Read the whole article, not the paragraph you think you need. Never write "confirm before the build" — confirm now, or leave the control out, because a deferred check is a defect with a note attached. Derive counts mechanically, never in prose. Never assert a negative from a script you have not tested on a known positive case.
That fourth one nearly caught me out on the tool itself. Checking whether Article 9 had been amended, my first script matched art_9 against art_95, art_96 and art_99.
Verifying a control framework against the regulation →
Regulation (EU) 2024/1689 (EU AI Act) and Regulation (EU) 2016/679 (GDPR), consolidated texts on EUR-Lex. Practitioner material, not legal advice.