Last Tuesday I reviewed a due-diligence output from a two-stage automated pipeline I helped specify. Stage one deconstructs source text into discrete information points. Stage two runs nine analytical dimensions against them: technical, token economics, market, ecosystem position, regulatory, team and governance, risk, narrative, supply-chain transmission. The report came back complete. Forty-seven fields across nine sections, every one of them rendering as a green checkmark with the value "N/A — insufficient information."
The upstream data pack was empty. No title. No source. No thesis. No project identified. Zero information points. Stage one had failed quietly, and stage two did precisely what a well-behaved system does when handed nothing: it produced a schema-valid document containing no content. The dashboard looked healthy. The dashboard was lying.
I have spent twenty-nine years watching systems fail. That failure mode — the confident blank — is the most expensive one in the category. Not exploits. Not rug pulls. The blank that renders as a pass.
To understand why, look at the shape of the pipeline. The information point list is the atomic unit: the smallest claim that can be independently verified. Stage one either produces it or it doesn't. Stage two is a consumer — it trusts the schema and analyzes what it receives. When stage one returns an empty list rather than an error, stage two has no way to tell "there is nothing to analyze" apart from "we failed to look." Both arrive as the same object.
This is not an artificial-intelligence problem. It is a data-infrastructure problem, and every stack in this industry has the same surface.
A subgraph stops indexing at block N and keeps serving its last known state as current. An oracle misses a heartbeat and returns the last price instead of reverting. An RPC provider load-balances your read to a node four hundred blocks behind. A monitoring exporter dies, so the graph goes flat, and nobody alerts, because flat sits inside tolerance.
Site-reliability practice solved this decades ago, and the solution is unglamorous: alert on absence, not only on threshold. A metric that stops arriving must fire its own alarm. Crypto protocols almost never deploy that, because a heartbeat costs gas per call and ships no user-visible feature. The failure is free — right up until the moment it isn't.
In March 2022, during the Luna cascade, I published hourly updates on three under-collateralized Avalanche lending markets while we rebalanced $12 million in user funds back to solvency. I did that for one reason. To a panicking depositor, silence and insolvency are the same signal. Silence is a data format. Most protocols never decide what it says.
Now the technical center of it. The distinction that separates an honest system from a confident one is tri-state logic. Not verified is a different state from verified false. Analysts collapse them constantly, and so does code.
Run a Howey analysis with null inputs. You do not get "compliant." You get "unknown." Run a supply-schedule review with no unlock table and you do not get "no dilution risk." You get an unmeasured exposure. Nine dimensions returning N/A is not a clean bill of health. It is an error state wearing the costume of a report.
The root cause is schema design, and it is entirely voluntary.
"risk_level": "string"with nounknownenum → a label someone has to invent- Python
floatinstead ofOptional[float]→ a crash, or a silent default of0.0 try/except: pass→ continuation down the happy pathNOT NULLsatisfied by writing0→ a number downstream code will multiply- An aggregator summing nulls as zero → a plausible, wrong chart
Every one of those choices is made by a human optimizing for uptime. Uptime is not the same as truth. A report that cannot represent "unknown" will eventually represent it as "safe."
Take TVL. A subgraph fails to index a newly deployed pool and reports zero. The aggregator sums the zero. The dashboard prints a 4% dip. Nobody alerts, because 4% sits inside tolerance. The real number is not lower — it is absent. Those are different facts, and only one of them is actionable.
I hit the same defect in 2020 while auditing 15 yield-farming protocols, where I ultimately flagged $20 million in critical logic flaws across Uniswap v2 forks. A meaningful share were not arithmetic errors. They were branch conditions where a failed external call returned 0 and execution continued as though the check had passed. The contract did not know that it did not know. That is the identical bug one layer up, except in Solidity it costs gas and in a research pipeline it costs capital.
In 2017, when I built the due-diligence checklist that became the Vancouver Protocol Standard, I rejected roughly 80% of the ICOs I reviewed. The most common reason was not fraud. It was that the whitepaper could not state what the token did in a form that could be tested. Undefined is not neutral. Undefined is a decision, and it almost always favors whoever wrote the schema.
The same pattern runs through token disclosures. Foundation wallets, team allocations, treasury runway — a report that omits them is still schema-valid. A governance proposal clears quorum with no disclosed treasury position, and the absence of a number gets read as the absence of a problem. That is how the compliance shield works in practice: not by lying, but by returning a well-formed blank.
I have watched the health-endpoint version of this in Layer 2 operations. A sequencer monitor returns HTTP 200 because the health check itself timed out and the default branch is healthy. Proving-cost dashboards print a figure while the prover runs and nothing while it doesn't, so an operator bleeding money sees a quiet screen rather than a red one. The meter does not run when the machine is down. That is the whole trap.
When I co-authored the Vancouver Framework in 2025 — three Canadian provinces, roughly $50 billion in institutional crypto assets covered — the hardest single argument across fifty meetings with bank executives was not privacy. It was getting risk officers to add a third state to their systems. Their pipelines were binary: pass or fail. We had to force "insufficient evidence" in as a distinct, blocking outcome. Compliance is the new crypto currency, and its reserve asset is representable uncertainty.
Here is where the prevailing narrative gets it wrong. The consensus holds that on-chain data solved transparency. It solved availability. Those are not the same property, and this industry has spent a decade optimizing the first while assuming the second.
The indexer is the new trusted third party. A large share of this market left a regulated bank and now trusts a hosted Graph node that nobody audits for completeness — only for latency. Verifiability and completeness are orthogonal. A verifiable chain behind an incomplete indexer produces a picture more confident than an honest chain that is visibly lagging. Verify everything. Trust the protocol — but only once the protocol can say "I don't know" without rendering green. Hype is noise. Standards are signal.
Second, and less comfortable: "N/A" is not the honest position. It is an abdication wearing the costume of rigor. There is a real difference between "we attempted to obtain this and could not" and "this does not exist." The report I opened last Tuesday did not say which. It buried a crawl failure under nine template tables. Had stage one returned ERROR, a human would have looked at it inside the hour. Because it returned a valid document, it advanced downstream unchallenged.
That is the tell. Failure that announces itself is cheap. Failure that complies with the schema is expensive.
The next adoption gate will not be regulatory clarity. It will be whether institutional capital can distinguish a passing protocol from an unmeasured one — and right now, most pipelines cannot. Structure wins. Chaos loses. So does the audit that never fires.
Where is your meter reading zero, and do you know whether that is a number or a hole?