{"agreement_rate_2plus":0.17583497053045186,"confirmed_corroboration_rate":0.5074626865671642,"generated_at":"2026-05-21T13:56:05.219544Z","honest_caveats":["Source-presence is binary at the country-day level (one row -> present), so a single elevated OONI test counts the same as a dozen IODA outage rows. This avoids letting one noisy source dominate the agreement rate.","Voidly and Voidly-Community are merged into a single voidly_probes bucket -- their coverage overlaps geographically.","Cohen's kappa is computed over country-days WHERE AT LEAST ONE SOURCE FIRED. Days where no source fired are excluded so kappa isn't inflated by trivial 'both quiet' agreement across 200+ countries.","Most pairwise kappas are LOW (0.05-0.20). This is the honest finding -- the four sources observe DIFFERENT layers of the internet (active probing vs BGP vs DNS scans vs reachability checks) and rarely happen to fire on the same country-day. Low kappa here doesn't mean the sources are wrong; it means they're complementary, which is exactly why multi-source corroboration is informative when it DOES happen.","IODA fires heavily on connectivity disruptions that are not censorship (fiber cuts, BGP misconfigs). This is why the forecast pipeline excludes IODA from confirmed-censorship labels -- but we still report IODA presence here, because the journalist's question 'did multiple sources see this?' is answered by what they observed, not by our label rules."],"monthly_agreement_rate":[{"agreement_rate":0,"month":"2025-05","n_2plus":0,"n_total":25},{"agreement_rate":0,"month":"2025-06","n_2plus":0,"n_total":65},{"agreement_rate":0,"month":"2025-07","n_2plus":0,"n_total":62},{"agreement_rate":0,"month":"2025-08","n_2plus":0,"n_total":66},{"agreement_rate":0,"month":"2025-09","n_2plus":0,"n_total":65},{"agreement_rate":0,"month":"2025-10","n_2plus":0,"n_total":68},{"agreement_rate":0,"month":"2025-11","n_2plus":0,"n_total":61},{"agreement_rate":0,"month":"2025-12","n_2plus":0,"n_total":63},{"agreement_rate":0.012027491408934709,"month":"2026-01","n_2plus":7,"n_total":582},{"agreement_rate":0.17927631578947367,"month":"2026-02","n_2plus":218,"n_total":1216},{"agreement_rate":0.22544495715227422,"month":"2026-03","n_2plus":342,"n_total":1517},{"agreement_rate":0.19272976680384088,"month":"2026-04","n_2plus":281,"n_total":1458},{"agreement_rate":0.2627906976744186,"month":"2026-05","n_2plus":226,"n_total":860}],"n_confirmed_corroborated_by_2plus":136,"n_country_days_total":6108,"n_country_days_with_2plus_sources":1074,"n_country_days_with_confirmed_censorship":268,"ok":true,"pairwise_kappa":{"censoredplanet|voidly_probes":{"kappa":-0.004235328577868188,"n":6108,"n_a_only":1397,"n_b_only":13,"n_both_present":0,"n_neither":4698,"pe":0.7701287864069967,"po":0.769155206286837},"ioda|censoredplanet":{"kappa":-0.3022254314767088,"n":6108,"n_a_only":3352,"n_b_only":1068,"n_both_present":329,"n_neither":1359,"pe":0.44430425877106644,"po":0.27635887360838246},"ioda|voidly_probes":{"kappa":-0.0042598011345047985,"n":6108,"n_a_only":3681,"n_b_only":13,"n_both_present":0,"n_neither":2414,"pe":0.39778470182426856,"po":0.39521938441388343},"ooni|censoredplanet":{"kappa":0.1377262147353619,"n":6108,"n_a_only":1572,"n_b_only":696,"n_both_present":701,"n_neither":3139,"pe":0.5693753969693733,"po":0.6286836935166994},"ooni|ioda":{"kappa":-0.5984604857708924,"n":6108,"n_a_only":1865,"n_b_only":3273,"n_both_present":408,"n_neither":562,"pe":0.47374871822583153,"po":0.15880812049770793},"ooni|voidly_probes":{"kappa":-0.004250495728143046,"n":6108,"n_a_only":2273,"n_b_only":13,"n_both_present":0,"n_neither":3822,"pe":0.6273208100083671,"po":0.6257367387033399}},"per_country_endpoint":"/v1/atlas/source-agreement/{cc}","per_source_marginals":{"censoredplanet":{"n_present":1397,"rate":0.22871643745907008},"ioda":{"n_present":3681,"rate":0.6026522593320236},"ooni":{"n_present":2273,"rate":0.37213490504256713},"voidly_probes":{"n_present":13,"rate":0.002128356254092993}},"schema":"voidly-cross-source-agreement/v1","since":"2025-05-21","sources":["ooni","ioda","censoredplanet","voidly_probes"],"window_days":365,"_voidly_pay":{"claim_did":"https://voidly.ai/pay/claim","for_builders":"https://voidly.ai/pay/for-builders","marketplace":"https://api.voidly.ai/v1/pay/marketplace","live_demo":"https://huggingface.co/spaces/emperor-mew/voidly-pay","universal_proxy":{"url":"https://api.voidly.ai/v1/pay/proxy","example":"https://api.voidly.ai/v1/pay/proxy?u=<https-url>&to=did:voidly:<your-did>&price=0.01","page":"https://voidly.ai/pay/proxy","note":"Paywall any public HTTPS URL with one query param. No SDK install required."},"install":{"typescript":"npm install @voidly/pay","python":"pip install voidly-pay","langchain":"pip install voidly-pay-langchain","vercel_ai":"npm install @voidly/pay-vercel-ai","mcp":"npx @voidly/pay-mcp","cli":"npm install -g @voidly/pay-cli"},"note":"Voidly Pay is the open agent-to-agent payment rail. Claim a DID + 10 starter credits in 60s, or paywall any URL via the universal proxy with one query param."}}