Why a single threshold can't clean censorship false-positives — a measurement-noise audit
Voidly's national-censorship map flags a domain as nationally blocked when it is confirmed-blocked across >=3 independent networks (ASNs). It has a known weak spot, and this is the honest write-up of two attempts to close it that BOTH made things worse. The false positive: the free Netherlands was listed as blocking facebook.com / instagram.com — because OONI recorded 21 "confirmed" blocks out of 5,755 measurements (0.36% noise) that happened to span 3 Dutch ASNs (heavily-measured platforms accrue stray confirmations from TLS/CDN/anti-bot quirks). Attempt 1 — require >=10% confirmed-rate per ASN: NL drops to 0 (FP gone), IR/RU keep ~98% — but Italy's Piracy Shield craters 218->0 and China/Cuba/Vietnam/Turkmenistan crater to ~0, because OONI marks their probabilistic/rotating blocks as "anomaly" not "confirmed", so a confirmed-RATE floor punishes the heaviest real censors (under-reporting China is far worse than the NL FP). Attempt 2 — require >=30% anomaly-rate per ASN: fixes China (15->763) but balloons free-country FPs (NL 10->206, DE 6->230, NL facebook still flagged) because major platforms carry a HIGH baseline anomaly rate EVERYWHERE (CDN failover, TLS variance, bot defenses) — the exact opposite failure mode. The two fail in opposite directions because raw confirmed/anomaly rate isn't comparable across domains or countries: the noise floor is per-domain and per-country, so no single global cutoff separates signal from it without sacrificing one archetype to save another. The real fix is harder than a threshold (judge each country-domain against THAT domain's global baseline — CN facebook is 3-4x its worldwide median, NL facebook isn't — or cross-check measured accessibility) and we did not ship it. Until then the map keeps its multi-ASN gate, the handful of heavily-measured-platform FPs in free countries are a known bounded limitation, and — the load-bearing part — we did NOT ship a "fix" that quietly erased Italy's and China's real censorship to make the Netherlands look clean. Reproducible via scripts/extract-national-blocks-multiasn.py (--min-conf-rate, default off).