{"block_signal_type_counts":{"block":353043,"dns-blocking":28522,"http-blocking-blockpage":1,"http-blocking-tcp-reset":3009,"http-blocking-timeout":1169,"interference":1077},"block_signals":["dns-blocking","http-blocking-tcp-reset","http-blocking-timeout","http-blocking-blockpage","block","blocking","interference","tcp-reset","blockpage","tor-blocking","header-manipulation","middlebox-detection"],"caveats":["This is a RECOMMENDATION. It is not wired into probe_module.py or the live probe scheduler \u2014 nothing changes the probe cadence yet. It produces a priority list a scheduler or human can choose to consume.","Thompson sampling here treats each (country, domain) pair as an INDEPENDENT bandit arm. In reality DPI policy correlates domains within a country and censors flip many sites at once \u2014 a hierarchical / contextual model would be more correct. Treat the ranking as a heuristic.","A high-variance pair may just be intermittently REACHABLE (flaky resolver, congested transit) rather than censorship-uncertain. The recent-flip term partly separates genuinely-contested pairs from merely-noisy ones, but not perfectly.","Cold pairs with fewer than 2 observations are not ranked here; the existing fixed-list scheduler already covers them.","Recency weighting uses a 45-day half-life, so a block state that flipped months ago is heavily discounted relative to fresh observations."],"endpoints":["/v1/atlas/probe-priority","/v1/atlas/probe-priority/info"],"generated_at":"2026-10-04T04:50:02.262096+00:00","halflife_days":45.0,"is_recommendation_only":true,"mean_posterior_variance":0.032309,"method":"Thompson sampling per (country, domain) bandit arm","min_observations":2,"prior":{"alpha":0.5,"beta":0.5,"name":"Jeffreys Beta(0.5, 0.5)"},"priority_formula":"posterior_variance * recency_weight * flip_weight * (1 + thompson_weight * (1 - |sample-0.5|*2))","random_seed":20260521,"schema":"voidly-atlas-probe-scheduling-priority/v1","summary":"Each (country, domain) pair carries a Beta(alpha, beta) posterior over P(blocked). alpha/beta accumulate recency-weighted block / unblock observations from the evidence table. The posterior variance is the information-gain proxy: a fresh probe is worth most where the posterior is widest. A Thompson draw from each Beta adds bandit exploration. Pairs are ranked by variance * recency * recent-flip * Thompson term. The output is a RECOMMENDED priority list \u2014 it is not wired into the live probe scheduler.","thompson_weight":0.5,"top_k_country_counts":{"AE":3,"AF":5,"AU":3,"AZ":5,"BD":4,"BH":5,"BO":1,"BR":4,"BY":13,"CA":1,"CN":4,"CU":3,"DE":3,"DZ":1,"EG":3,"ES":2,"FR":4,"GB":4,"GH":5,"HN":1,"ID":12,"IN":17,"IQ":4,"IR":65,"IT":8,"JP":2,"KH":3,"KR":6,"KW":3,"KZ":3,"LA":5,"LB":1,"MA":3,"MM":1,"MN":5,"MX":4,"MY":3,"NG":1,"NI":1,"NL":2,"OM":1,"PK":3,"QA":3,"RU":3,"RW":1,"SA":3,"SD":3,"SG":13,"SY":5,"TH":3,"TR":9,"TZ":2,"UG":2,"US":7,"UZ":1,"VE":3,"VN":3,"ZA":12},"total_evidence_rows_scanned":499580,"total_pairs_cold_skipped":1522,"total_pairs_scored":3487,"total_pairs_with_recent_flip":244,"unblock_signals":["ok"],"window_days":365,"wired_into_scheduler":false}
