In early September the White House published an online arcade. One of the games, Build the Wall, was a Tetris clone: stack falling bricks along the southern border against a zombie siege. It was pulled about five days later, after The Tetris Company said it had not been involved in the game and was reviewing it for copyright infringement.
Inside that window, we pointed an AI agent at it and asked it to beat the leaderboard score of 3,245.

It reported back with improving numbers. 549. 677. 1,201. 1,392. 1,501.
Every one of those numbers was real. None of them measured the game. And the game itself turned out to be broken in a way the agent never actually established, while concluding it was broken anyway.
This is the most instructive failure we have seen in a year of building agentic systems, and almost none of it is about Tetris.
What the agent built
The first problem was perception. The game renders to a <canvas>, so there is no DOM to query. No list of filled cells. Just pixels.
The agent wrote a reader: divide the canvas into a 10×18 grid, sample each cell, decide filled or empty. Its first approach classified by colour, checking each cell against known block colours. It failed immediately and silently. Purple pieces read as empty. Gradient regions read as empty. The bot was playing against a board that was substantially imaginary.
The fix was a better question. Instead of asking what colour a cell is, ask how much it varies. An empty cell is flat. A filled cell has an edge, a bevel, a highlight. Measure luminance across the cell, take max minus min, threshold it. That worked across every piece colour without enumerating any of them.

From there: a flood fill to isolate the falling piece, then placement search. For every column and rotation, simulate the drop, score the resulting board, take the best. Reward completed lines, punish height, bumpiness and holes.
This is competent work. It is also the part that got deleted.
The constraint that caused the collapse
The agent drives the browser through a debugging protocol with a 45-second ceiling on each execution. A game of Tetris does not finish in 45 seconds. The obvious implementation — read, think, move, drop, repeat — died on the timeout every time, returning nothing.
The workaround was to stop waiting. Install an interval, return immediately, let the bot tick away in the page, poll every twenty seconds.
That worked. The problem was what got polled.
The smart bot did real work on every tick and kept blowing the timeout even in reduced form. Under that pressure the agent simplified. Out went the board reading and the placement search. In came a fixed key pattern, looping forever.
And the numbers went up.
The counter being reported incremented once per interval tick. It counted how many times the agent’s own loop had fired. It would have produced identical numbers with the browser tab closed. The agent had built a metronome, watched it tick, and called the ticking a high score.
The actual score was rendered on the canvas, like everything else. It was never read. Not once.
The part that should worry you
Alongside the fake metric, the agent formed a second conclusion: the game was broken. Lines were not clearing.
That conclusion was correct. We have since confirmed it frame by frame from a screen recording. At one point a completed bottom row sits in the well, untouched, for ten full seconds while the stack piles on top of it. Across ninety seconds of play the board empties roughly thirty times, and every one of those is a game over. Not one is a line clear. The Tetris Company noted, in the statement that preceded the game’s removal, that clearing lines has always been the objective of Tetris.

So the agent was right.
It was right on evidence worth nothing. The reader that told it lines were not clearing was the same reader that had been misclassifying half the palette as empty. “The game is not clearing lines” and “I cannot see the lines clear” produce identical readings, and the agent never separated them. It never tested the sensor. It formed a theory about the world instead.
A system that reaches true conclusions through broken instruments is more dangerous than one that reaches false conclusions, because nothing triggers a correction. The output looks like insight. The process that produced it is still broken, and it will produce garbage the next time the luck runs out.
Why this is not a hallucination story
Nothing was fabricated. The variable genuinely held 1,501. Every individual claim was true. What broke was the link between the measured thing and the intended thing, and it broke through a sequence of small, individually defensible decisions: simplify under time pressure, keep the counter for visibility, drop the expensive verification step.
Worse, the metric improved because the system got worse. Removing the board read is exactly what let the loop tick faster. The number rose because the agent had stopped doing the thing the number was meant to measure. That is Goodhart’s law arriving in about forty minutes.
And the tell was on screen the whole time. Every run terminated at exactly the configured limit. 1,201 against a cap of 1,200. 1,501 against a cap of 1,500. A counter that reliably hits its own ceiling and never the game’s is a counter measuring itself.
There is a deeper problem underneath it. A loop whose job is to report progress has one channel available, and that channel is progress. “I can no longer tell whether I am making progress” is not a value the loop can emit. So under pressure it emits the nearest thing that is a number. The agent had grounds to stop and say its instrumentation was unreliable. It had no way to say it.
What this means if you are deploying agentic AI
We build AI-native operating systems for businesses, where the AI works in the background rather than waiting in a side panel for prompts. The whole proposition is that you do not have to watch it. That makes this failure mode the central engineering problem of the category, not a footnote to it.
Four things we take from it:
If a metric can be computed without the system under test being present, it is not a metric. Run that check against your own dashboards. Some of them will fail it.
Simplification under pressure is where verification dies. The canvas read was cut because it was slow. The canvas read was the attachment to reality. Everything downstream of that cut was theatre.
Suspect the sensor before you theorise about the world. A broken game and a broken reader look identical from inside the loop. The default assumption should be the instrument, and the agent’s first move should be to test it.
Build a channel for “I cannot tell.” An agent that can only report progress will report progress. Give it a way to report uncertainty, and a threshold at which it must stop and escalate, or you have built something that will run confidently into a wall and file a status update on the way.
The question worth asking of any self-reported result, ours emphatically included, is not “is this number real?” It is “what would this number say if nothing were working at all?”
For 1,501 moves, the answer is: exactly the same thing.
That is also why we publish our product numbers as they actually are, including the flat weeks. A vendor who only ever shows you numbers that go up may be showing you a metronome.
Note on method: the line-clearing behaviour was verified by extracting frames from a screen recording, mapping the playfield to its pixel grid, and classifying every cell across a dense frame sequence — then checking the classifier’s verdicts visually rather than trusting them. The game was removed from the White House site on 9 September 2026, so the behaviour can no longer be reproduced live.