Your compliance scanner
is probably lying to you.
You can generate an EU AI Act scanner in thirty seconds by asking a model for one. It will be the version that returns a confident, false clean. The code was never the hard part. Knowing when the tool is wrong is the hard part, and it is the only part that cannot be generated.
So we published the cases. Twenty-five of them. Twenty-two are our own tooling failing against our own systems, in the order it failed.
Documentation is not disclosure
The team wrote it down repeatedly, in detail, for each other. Never once for the user. A scan that reads a README as disclosure certifies exactly the organisations that understand their exposure and have done nothing about it.
A site whose subject is AI
A noun phrase names a topic. Only an assertive phrase makes a disclosure. On a news network covering AI this produced 101 false positives out of 112, and a clean verdict over two dozen generated-text surfaces.
AI that is not a language model
A forecasting transformer never calls a chat endpoint. The industry has quietly redefined AI to mean generative AI, and Annex III is largely made of the other kind: scorers, rankers and forecasters.
A chat surface with humans behind it
Article 50 attaches to an AI system. Telling a company to label its employees as a robot is how a compliance report gets thrown out.
A page about the law
The sharpest case in the set, and the most embarrassing: our own scanner read our own page explaining Article 50 as our own compliance with Article 50.
Open weights, self-hosted
Putting into service includes supply for your own use. Downloading a model does not make you a deployer of someone else’s system; it makes you the maker of your own — and it swaps Article 26 for Articles 9 to 15.
A summary line that merges two populations
Two errors compounding in one sentence. We published it in five documents and left it unexamined for eleven days, because the larger number supported our argument better. No test catches a figure you have no incentive to question.
Instrumentation that is not on the executed path
Four of our own model-calling paths failed this way at once, including the one that writes a weekly verdict on every business line. The log existed, shipped to a second machine, and held rows from the two systems that happened to route through the wrapper.
Why our own failures, and not a scoreboard
A benchmark whose author passes every case is a benchmark written to make its author look good. Ours does not: the reference implementation shipped with the corpus still fails one of the cases, and we left the bug in.
We have also had to retract a finding about somebody else's scanner. We reported that it could not detect a self-hosted image model. It can. Our test fixture was a Python dictionary with no imports in it — not a pipeline, a data structure that resembled one. Rebuilding the fixture honestly then exposed the same blind spot in our own detector.
That correction is in the repository, in public, with the reasoning. A test corpus that quietly rewrites its own history is worth nothing.