There are two ways to build a tool that depends on a signal it might not get. You can fail open — when the signal is missing, substitute a placeholder and carry on. Or you can fail closed — when the signal is missing, produce nothing and say so.
The Mispricing Scanner fails closed. It is the single most important design decision in the engine, and it is the reason you can trust a flag when you see one.
The 50/50 trap
Here's how the scanner works at a high level: it blends two independent signals — a Kalshi price cross-check and an independent model estimate of the true probability — then measures the gap against the Polymarket price. The two-agent spec covers the full blend.
Now suppose the model estimate doesn't come back on a given contract. The request timed out, the response didn't parse, the service hiccuped. What should the engine do?
The lazy answer is to plug in 0.50 — a neutral coin-flip — so the pipeline doesn't stall. It feels harmless. It is not. A fabricated 50% estimate is not "no opinion." It is a strong, wrong opinion on any contract that isn't actually a coin-flip. Drop 0.50 into a market trading at 20¢ and you've manufactured a 30-point edge out of thin air. The scanner will flag it, rank it, maybe email it — and none of it is real.
We know the exact cost of that shortcut, because an earlier version had it: the 0.50 fallback fabricated 52% of the flags in production. More than half the "edges" the tool surfaced were the placeholder, not a finding. That is worse than useless — it's confidently misleading.
Fail closed: return nothing, not a guess
The fix is a one-line philosophy with teeth. When the model signal is missing, the function that produces it returns null — no value at all — never 0.50 and never any other stand-in. A contract without a real estimate simply doesn't get scored on that signal. It drops out of the candidate list rather than faking its way onto it.
The result you don't see is the whole point. An empty slot means "we didn't have a real read here," which is the honest thing to say. Every number the scanner does show you is a number it actually computed.
When too much is missing, the whole run stands down
Fail-closed goes one level up, too. If more than 30% of the model calls fail on a single run, the engine declares a DEGRADED RUN and skips writing results entirely. It would rather show you yesterday's healthy scan than today's half-blind one.
It doesn't hide the problem, either — the run still records a heartbeat, so the failure is logged and visible on the operations side. Silence with a paper trail, not silence pretending everything's fine.
This is the same instinct behind the HIGH CONFIDENCE gate: the tool is built to withhold rather than to invent. A scanner that always has something to show you is a scanner willing to show you noise.
Why this matters for how you trade
You are going to size real positions off these flags — ideally with the quarter-Kelly calculator, not your gut. Kelly sizing is only as good as the edge you feed it. Feed it a fabricated edge and it will confidently tell you to stake real money on nothing.
Fail-closed design means the edges reaching you have survived a simple, ruthless filter: if the engine wasn't sure it had a real signal, it kept quiet. That is what lets you treat a flag as a starting point for research instead of a number you have to second-guess.
The scanner's most valuable output is often the flag it refused to show you.