At 03:14 UTC on a Tuesday, a research pipeline completed a full nine-dimension analysis of a blockchain asset and returned nothing. Not a crash. Not a timeout. A finished document โ roughly two thousand words, tables fully rendered, every cell populated with the same string: N/A, information insufficient.
The header declared the domain as blockchain/Web3. The body declared the domain as unknown. The engine had been asked to evaluate technology, tokenomics, market structure, ecosystem position, regulatory exposure, team and governance, risk, narrative, and supply-chain transmission. It produced nine complete frameworks and zero facts. Then it appended a note explaining that producing anything further would constitute fabrication, and declined.
That output is the most honest artifact I have read this quarter.
Understand what the sideways tape has done to research. Chop is for positioning โ that is the standard line, and I mostly agree with it. But positioning requires signal, and signal in 2026 arrives through pipelines that almost nobody audits. In 2017 the failure mode was a whitepaper with no code behind it. You could at least read the whitepaper and smell the absence. The failure mode now is a schema with no input behind it, wrapped in a document that looks like an audit. 2017 vibes. Proceed with skepticism.
Nine-dimension frameworks have become the industry's default due-diligence template. Sell-side desks use them. Allocators use them. The format is seductive because it is complete: every question has a box, every box has a heading, and a filled document implies a filled analysis. The template is not the problem. The template is the delivery mechanism for a problem that predates it by a decade.
I spent three months in late 2017 tracing the collateralization logic of the MKR token in Solidity v0.4.11. I found three integer overflow vulnerabilities that the standard audits of the period had missed. What made them dangerous was not the arithmetic. It was the coercion. An uninitialized uint256 in storage reads as zero. Zero is a valid number. Zero passes a type check, zero renders cleanly in a dashboard, zero never throws. The bug class is not "wrong value." The bug class is absence silently promoted to a valid value, and every downstream consumer treats it as data.
That is precisely what an empty analysis pipeline does when it fills a table.
Watch the mechanics. A schema with nine dimensions applied to a protocol that has no token produces six boxes of N/A and three boxes of partial inference. A reader skimming the rendered output does not see absence. They see structure. Structure reads as rigor. The N/A strings sit in grey cells, and grey is the universal dashboard color for "pending," and pending is the universal human reading of "soon." A null has been converted into a narrative without a single fabricated sentence being written.
Now stack the three failure tiers.
Tier one is fail-closed. The engine detects empty input, refuses, and documents the refusal. This is correct behavior and it is what happened here. It is also rare, because it is commercially worthless โ you cannot bill a client for a document that says nothing.
Tier two is fail-silent. Empty input gets coerced into a default. In Solidity that is a zero. In research that is a placeholder like "TBD," or a metric pulled from a stale snapshot, or a TVL figure that survived three migrations without a re-query. Nobody notices because the cell is not empty.
Tier three is fail-loud-but-wrong. The input is non-empty, plausible, and unfounded. The table fills. The prose flows. The conclusion lands with confidence. This is the actual epidemic, and no guardrail in the current stack catches it, because every check in the current stack tests for emptiness rather than truth.
I have a rough number for tier three. If a pipeline runs five hundred assets through nine dimensions, that is four thousand five hundred cells. At a two percent fabrication rate per cell โ generous, given what I have measured on completion-optimized models โ you get ninety invented claims per run. No human audits ninety cells. They audit the executive summary, which is generated last, and which inherits every fabricated cell upstream of it as settled fact.
The gradient rewards completion, not abstention. Every language model in the loop is trained to produce a filled table. An empty table is a failure of the objective function, even when an empty table is the correct output. So the model fills. It fills with sector averages, with comparables, with the shape of an answer rather than an answer. And the shape is convincing, because shape is what the training distribution contains.
There is a second-order problem the schema creates on its own. These frameworks were built for tokens. Apply them to infrastructure and they hallucinate categories. Apply them to the dozens of Layer 2s now competing for the same small user base and the framework will dutifully produce nine dimensions of differentiation for each one โ because the template assumes differentiation exists. It does not. Slicing scarce liquidity across forty rollups is not scaling, and a nine-box framework cannot represent that fact, because the framework has no box labeled "this chain is redundant." The template's blind spots become the analyst's blind spots.
The same failure shows up in the incentive box. Ask a framework to score "real revenue" and it will accept liquidity mining emissions as revenue, because emissions are denominated in dollars and dollars are denominated in the same units as fees. Stop the incentives and the TVL leaves. That is not a research finding โ it is a mechanical property of subsidized liquidity โ but the schema cannot distinguish a subsidy from a business, so it scores them identically. Impermanent loss is real. Do your math. The framework will not do it for you.

The forensic question I keep returning to is provenance. After the FTX collapse I spent four months reverse-engineering the withdrawal routing logic, and what struck me was not the fraud itself. It was how many internal ledger entries looked perfectly valid while the balance sheet behind them was empty. Every line item type-checked. Every report reconciled against a database that was already wrong. The corruption lived one layer below the surface that everyone audited.
Research pipelines have the same topology. The surface is the document. One layer below is the cell. One layer below that is the pointer to a source. When the pointer is missing, the cell is an uninitialized variable, and the whole document is an audit of nothing. No pointer, no cell. That is the only rule that survives contact with a real pipeline, and it is not a prompt-engineering problem. It is a data-model problem. A prompt can be persuaded. A schema with a mandatory foreign key cannot.
Here is the contrarian read, and it will annoy the people building guardrails. The guardrail that fired here is cosmetic. It is celebrated because it is visible โ a clean refusal is easy to demo โ but it tests emptiness, not truth. Feed the same pipeline a non-empty, confidently wrong input and it will pass every check in the stack, fill nine dimensions, and publish. The refusal we just witnessed is the cheap half of the problem. The expensive half is that a wrong input and a right input are indistinguishable at the boundary, and no one is pricing that asymmetry.
The asymmetry is the actual vulnerability. A refusal is correct and commercially worthless. A fabricated report is incorrect and commercially valuable, because it gives an allocator a number to put in a memo by Friday. Markets pay for the artifact, not for the abstention. So the incentive runs one direction: fill the cells, ship the memo, and let the null hide in the appendix where nobody scrolls.
Worse, nulls get recycled. Someone scrapes a framework, sees six N/A cells, fills them with sector medians, and republishes as an original note. The null was a seed. Three hops later it is a consensus estimate with no ancestry, cited by four other notes that also have no ancestry. This is how a fabrication becomes a fact โ not through one lie, but through a chain of unattributed defaults.
In 2025 I spent five months verifying recursive SNARK soundness proofs on a rollup and found an edge case in state derivation. I published it to developers, not to media, precisely because a soundness bug described in a headline becomes a different bug by the time it reaches a reader. Cryptographic claims degrade in translation the same way research claims do. The difference is that cryptography has a formal notion of a witness, and research does not. We should borrow it. Every claim needs a witness. A claim without a witness is a zero with a nice font.
Entropy wins. Always check the fees. In this case the fee is the cost of being wrong, and it is paid by whoever allocated capital on the strength of a cell that had no pointer behind it. They will not know they paid it. That is what makes it a fee and not a loss.
What I expect next, and what I am watching for: provenance scoring as a product category, where a research note is rated by the fraction of its cells that resolve to a verifiable source, and that ratio gets published next to the rating. Abstention-rate audits โ the share of queries a pipeline correctly refuses โ becoming a procurement requirement rather than a curiosity. And a slow repricing of the entire due-diligence function around the question of ancestry rather than coverage.
The question worth sitting with is not whether your pipeline can fill nine dimensions. It is how many of the last ten research documents you read had a single cell you could trace back to a witness. If the answer is zero, you were not reading analysis. You were reading the font.