Two networks, one domain, different answers: why we publish single-source blocks as a floor, not a fact
A data-trust audit of the observatory itself. Voidly aggregates three independent networks that measure different things: OONI (active web-connectivity, 5,552 domains / 93 countries, full accessible+blocked verdicts), CensoredPlanet (remote DNS/HTTP, just 28 high-profile domains / 42 countries, detection-only), and IODA (ASN connectivity outages, no per-domain signal). Their scopes barely overlap: of 28,287 domain×country cells the two domain-measuring networks cover, only 384 (1.4%) are tested by BOTH — so most detections are single-source by construction. And where they overlap they often disagree: on the 384 cells where CensoredPlanet flagged a block and OONI also tested, OONI independently confirmed only 110 (29%); on the other 274 (71%) OONI's active test reached the site. The gap is mostly methodology, not error: CensoredPlanet's entire 28-domain set is large CDN platforms (facebook/google/youtube/chatgpt/telegram/whatsapp/…), exactly where remote DNS measurement false-positives on legitimate GeoDNS variance — the canonical case being CensoredPlanet flagging facebook.com 'blocked' in Singapore (which doesn't block it) with no OONI confirmation. This is WHY Voidly publishes single-source detections as a floor/suspected, treats multi-source-corroborated incidents (191 of 498 citable = 38%) as the citable core, and requires a block across ≥3 networks for a confirmed-national blocklist. Reporting the intersection, not the union, is the cost of being citable. HONEST CAVEATS: (1) 'OONI didn't confirm' ≠ 'CensoredPlanet was wrong' — different vantage/time/method, intermittent or ISP-specific blocks; the 29% is a cross-confirmation rate not an error rate. (2) Asymmetric by design — CP stores detections only, so this is OONI-confirmation-of-CP, not symmetric agreement; IODA excluded (no domain signal). (3) The small 384-cell overlap is structural (CP tests 28 domains), not a sampling flaw. (4) Voidly is the analysis layer aggregating upstreams, not an independent source. Live: /data/incidents/stats + /v1/measurement/summary.