This is the story of a bug class that almost certainly lives in tooling you use today — and how it made us believe, for several hours, that nearly half of one network's traffic was leaking past a filter that was in fact blocking every single visit.

The scare

During a routine audit we found that 46% of one campaign's arrivals came from placements that were on the block list. The event log showed them as ACCEPTED. Accepted! From blocked placements! We assumed a leaking gate and went hunting for the hole.

There was no hole. Every one of those visitors had been blocked to a safe page. The traffic was fine. The log was lying.

The bug class: verdict-after-log

The route in question did its work in this order:

The visitor got blocked. The response was correct. The money was safe. But the log row — written a few milliseconds too early — recorded the pre-override verdict: ACCEPT. We call these phantom accepts: records that describe a decision that was later overridden, with no trace of the override.

Once you know the shape, you see how easy it is to create: any pipeline where a decision can be amended after the telemetry is emitted will produce phantoms. Filters, routers, edge functions, tag managers — anywhere with a “final say” layer downstream of the logging layer.

Why phantoms are worse than they sound

The fix: the verdict IS the decision

The repaired order is boring and absolute: decide first, log once, log the truth. If the placement is blocked, that is the final verdict — log exactly one row saying BLOCK with the real reason, skip the now-pointless downstream checks, and serve the block response. No amendments after emission. One event per visit, ever.

How to audit your own stack for phantoms

We found ours because a customer asked an uncomfortable question about a number that did not smell right. Audit before your customer does. And if a vendor's dashboard numbers ever disagree with what visitors actually experience — now you know the name of the thing to ask them about.

FAQ

How common is this bug class?

Any system with layered decisions (visitor checks + list checks + business overrides) is at risk unless the logging happens strictly last. We have seen the pattern in filters, redirect chains, and edge middleware. Assume it exists until you have compared response to log.

Did the phantoms cost money?

Directly, no — the visitors were blocked. Indirectly, nearly: they inflated a dispute claim (embarrassing), inflated accepted-traffic stats (misleading), and burned hours of forensic time (expensive).

What is the one-line takeaway?

Trust the response, not the record — until you have proven your records describe final decisions, not first drafts.