The document arrived formatted, footnoted, and entirely empty.
Sixty-one table cells. Nine section headings. A risk matrix with six rows and five columns. A scoring rubric rendered in stars. And in every position where a fact should have lived, the same four characters: N/A.
I have read a great deal of bad research. In 2017, as a high school student in Copenhagen, I spent six months working through the whitepapers of more than forty ICO projects, and I finished with a twelve-thousand-word essay called "Code as Constitution." I manually audited the tokenomics of three startups that later failed, and I remember the specific texture of those documents β fourteen pages of polynomial notation, one paragraph about enterprise adoption, and a supply schedule that fell apart under a pencil. I have read reports with confident numbers attached to projects that did not exist.
This was different. This was a document that had been generated correctly by every formal criterion. It had a schema. It satisfied the schema. It contained nothing at all.
I want to be careful here, because the obvious reading is the wrong one. The obvious reading is that something broke. Something did break, but not the thing you would expect. The generation of that document was a success. The failure happened earlier, upstream, and it happened silently β and nobody noticed, because nothing about the output looked like a failure.
That is the new shape of this problem. Not a lie. An empty room with all the lights on.
We are in the third year of a research boom that has outrun its own supply of facts.
Count the artifacts. Every token launch now arrives with a companion corpus: a thread, a long-form, a "deep dive," a live space, a translator's summary in four languages, a dashboard, a newsletter, a two-minute video. The demand is structural, not cyclical. In a sideways market β and we have been sideways for the better part of ninety days, with perpetual funding rates pinned near neutral and realized volatility compressing toward the floor of its one-year range β price stops speaking. When price stops speaking, people reach for something else to listen to. Narratives fill the silence, and narratives have to be produced.
Producing them used to be labor. Now it is a pipeline.
The economics of that pipeline are worth stating plainly. Research in this industry is paid by volume and by attention, not by accuracy. Projects retain analysts. KOLs receive allocations in exchange for coverage. Bounties reward publication. Grant programs reward proposals. Every incentive in the stack points toward producing more artifacts, faster, in more formats, and none of them points toward producing fewer, better ones. An analyst who publishes nothing this quarter is not rewarded for restraint. An analyst who publishes four bad pieces is.
I have spent the last year inside that pipeline from the builder's side. As an open source evangelist in Copenhagen, I ran a six-month initiative to bridge AI developers and blockchain communities β three workshops, fifty participants each, all of them devoted to the question of how zero-knowledge proofs could protect AI training data privacy. Out of that work came a technical whitepaper, "Trusted AI on Chain," which a local startup adopted for pilot testing. The entire project ran on a team of four engineers. Small, deliberate, slow, and β I will say it β uncomfortable, because in a market that rewards velocity, four people moving carefully is indistinguishable from four people doing nothing.
We were building verification infrastructure. We were asking a narrow question: how do you prove that a model produced a particular output? Not that the output is good. Not that the model is aligned, or safe, or wise. Only that the artifact you are holding came from the process you claim produced it.
Then I encountered the empty document, and I understood that we had been working on the second half of the problem. The first half is: what happens when the process had nothing to work with?
Let me describe the architecture, because the failure is architectural before it is anything else.
Any research pipeline has four stages. Ingestion: fetch the source, parse it, normalize it, strip the markup. Extraction: identify entities, claims, quantities, dates, and relationships. Scoring: apply a framework β nine dimensions, six risk categories, whatever rubric the client paid for. Synthesis: produce prose that satisfies the requested format.
The failure mode lives at the seam between ingestion and extraction. Ingestion returns an empty set. A fetch that 403s. An OCR pass that fails on a scanned PDF. A document that parses to whitespace because its text layer was never generated, so the file is three megabytes of image data wearing a .pdf extension. Extraction, dutifully, extracts nothing. It returns an empty list.
And here is the critical detail, the one that matters more than everything else in this piece. An empty list is not an error. It is a valid return value.
So it flows forward. Scoring receives zero ingredients and produces zero-scored dimensions, because a rubric applied to nothing yields nothing. Synthesis receives the instruction "produce nine sections" and produces nine sections, because the instruction was about the shape of the output, not the content of it. Nowhere in that chain does any step say: stop.
We built delivery mechanisms with no null policy. We specified every behavior except the behavior of not knowing.
In my audit work I used to run a three-part test on any claim that arrived with numbers attached. First, information density: how many of these figures would change if the project disappeared tomorrow? Second, provenance chain: can I trace each number to a source that would survive being questioned by someone hostile? Third, falsifiability: what observation would make this claim false, and has anyone actually looked for it?
The empty document passes all three, trivially and vacuously. It is airtight. It is nothing.
Now the uncomfortable part, and the reason I keep returning to this artifact. This failure is not new. It is the oldest failure in the industry, and we have been getting it wrong on-chain since long before language models existed.
Null is not zero.
In relational algebra this is three-valued logic. A NULL does not equal another NULL; the comparison returns UNKNOWN, not TRUE. SQL was designed this way in the 1970s, precisely because its authors understood that a missing value and a known-empty value are different objects. "I do not have the answer" and "the answer is zero" demand different downstream behavior. One propagates through the system and poisons every computation it touches. The other terminates.

Crypto spent a decade learning this lesson in blood.
Think about the oracle, the most ordinary piece of infrastructure we have. A price feed carries a last-updated timestamp, and in a startling proportion of integrations that timestamp is stored and almost never checked. A feed goes stale. The aggregator stops receiving updates because of a network partition, an API key rotation, a node falling out of sync. What does the consumer contract see? A number. Not an error, not a revert β a number, sitting in the same storage slot it occupied the previous block. The screen says everything is fine.
I watched this happen from the inside. In 2020, during DeFi Summer, I interned at a small Copenhagen-based DAO working on lending protocols. I spent three months on the real-world consequences of algorithmic stablecoins. I interviewed twelve users who had lost savings to oracle failures. Twelve separate conversations, twelve different people, and every one of them said some version of the same sentence: the interface told me my position was safe.

The interface was not lying. The interface was answering a question nobody had asked. It was reporting a price. It had stopped being able to report a price some hours earlier, and it had no vocabulary for that condition.
The parallel runs deeper on-chain than most people admit. A subgraph that has quietly stopped indexing returns zero events, and zero events reads as a quiet week. A TVL dashboard reading from a contract whose owner key has rotated returns a number, the number is real, and it means nothing. A block explorer that fails to verify a contract displays no source code, and no source reads as "not yet verified" rather than "the verification service is down." A liquidation bot consuming a stale feed does not halt. It liquidates.
The most dangerous data in this industry is not missing data. It is missing data wearing the costume of completeness.
I learned a version of this in 2021, when I spent two months on the intellectual property rights of major NFT collections, focusing on Art Blocks. I worked with a legal scholar here in Copenhagen on a thirty-page open-source guide to digital provenance, and we presented it at a university seminar. The argument I made then was that NFTs ought to represent cultural stewardship rather than speculation. The argument I would make now, after this, is narrower and harder: provenance is a claim about a chain of custody, and a chain of custody is only as strong as its weakest link β and the first link, the one everyone forgets, is that there was something in the box to begin with.
Bring all of this back to the research layer and the picture sharpens. The pipeline that produced the empty document was not hallucinating. Hallucination is the glamorous failure β it produces wrong numbers that feel right, and eventually someone catches it, because wrong numbers are contradicted by other numbers. The empty document produces no numbers at all. It produces the format of analysis. Structure without content is far harder to falsify than content without structure, because there is nothing to check against. You cannot fact-check a heading.
So how would you detect one of these in the wild? Not with a checklist β checklists are what produced the problem. You detect it the way you detect any forgery: by looking for effort that has no purpose. A nine-section analysis with no quoted source. A risk matrix whose probabilities are all "medium." A methodology paragraph that describes the process in the abstract and never names what was processed. Numbers with no units, dates with no timezone, comparisons with no counterparty named. Confidence distributed evenly across every dimension, which is the statistical signature of a system that has stopped differentiating. A real analysis is lumpy. It is confident in three places and openly lost in five. Evenness is the tell.
So what would honest verification actually look like?
We can now attest to weights and to inference. Zero-knowledge machine learning has moved from a research toy toward pilot-stage tooling. Content Credentials and the C2PA standard are doing for images what we need for model outputs: attaching a signed provenance chain to the artifact itself, so that the artifact carries its own history. In our whitepaper work, we assumed this was the hard part. We were wrong.
The hard part is attesting to the input. I can prove that a model ran, and I can prove which model. I cannot, today, prove that the document it read was not empty β unless the ingestion step itself emits a signed record of what it consumed: byte counts, parse coverage, a hash of the normalized text, a timestamp, a source pointer. Without that, a flawless proof of inference is a notarized lie. It certifies that the factory ran. It says nothing about whether anything was in the hopper.
This is where I think the industry has a genuine and underappreciated opening. Every serious research or risk system should ship with three invariants. A minimum-density check at ingestion: if the extractor returns fewer than N facts, the pipeline halts rather than continuing. A provenance hash over the normalized input, published alongside the output, so that any reader can verify the source was non-trivial and unaltered. And an explicit, enforced null policy β the system must be able to return "insufficient information" as a first-class result, not as a formatted section embedded in a longer document that pretends to be complete.
The last of those is a cultural product as much as an engineering one, and culture is expensive. Which brings me to the one funding mechanism I have seen that would actually pay for it: Optimism's RetroPGF. Retroactive public goods funding rewards measured impact after the fact β the artifact that survived scrutiny, rather than the deck that promised it. If we want verification infrastructure, verification is the thing worth retroactively funding. Every other grant committee I have watched in this ecosystem, across every DAO I have studied, funded proximity rather than results. RetroPGF is the only one I have encountered that pays for the work that turned out to matter, and it pays late, which is precisely what makes it honest. It cannot be gamed by a roadmap.
Here is the claim that will annoy people.
That empty report is the most honest document produced in crypto this year.
Every "N/A" in it is true. Every "insufficient information" is accurate. Every blank cell is a blank cell. Set it beside the structurally identical report that a competent analyst, or a competent model, would have produced from the same null input β nine sections, six risk rows, a plausible number in every field, a confident paragraph under each heading. The two documents are indistinguishable in form. One of them can be checked. The other can only be believed.
The industry's panic right now is about hallucination, and the panic is misplaced. Hallucination is a symptom. The disease is that we optimized for completeness inside systems that have no way to represent incompleteness. We spent a decade building pipelines that always answer and never abstain, and then we were surprised when they answered.
There is a second blind spot, and it belongs to us rather than to the machines. We tell ourselves that better models will fix this β that the next generation will know when it does not know, and will say so. Perhaps. But the pressure toward a complete-looking artifact comes from the reader, not the writer. In a sideways market, with volatility compressed and funding flat and no direction on the chart to anchor to, the appetite for someone, anyone, to say something definitive is enormous. The reader does not want a null. The reader wants a signal.
A system that says "I don't know" gets scrolled past. And a researcher who publishes three honest nulls in a row does not get retained for a fourth.
Faith in the protocol is not faith in the people running it. And faith in the model is not faith in the input it was handed.
The next serious piece of infrastructure in this space will not be the one that claims it cannot be fooled. Everything claims that. It will be the one that can be caught β the one that refuses to answer a question for which it holds no data, that publishes what it consumed before it publishes what it concluded, and that treats "I don't know" as a deliverable rather than a defect.
Code is law, until the law breaks the code. We built the temple, but forgot who the god is. The ledger remembers, but the heart forgets β and we are building machines that remember everything and understand nothing.
The question worth carrying into the next cycle is not whether our systems are clever enough to be right. It is whether any of us would pay for one that is honest enough to be empty.