{"distinct_from":"/v1/forecast/{cc}/7day — that endpoint is a current-regime persistence signal (audit: transition-row AUC ~0.33).","endpoint":"/v1/forecast/{cc}/onset","evaluation":"forward-temporal (train past, test strictly-future)","finding_url":"/atlas/findings/shutdown-onset-predictability-2026-05","honest_caveats":["Onset is the hard problem: P(a NEW confirmed censorship/mixed shutdown begins within 7 days), scored ONLY on country-days with no shutdown active now. This is NOT the /7day endpoint, which is a current-regime persistence signal.","IODA disruption incidents (fiber cuts, DDoS, BGP, weather) are excluded from the onset label — only confirmed censorship + mixed count.","Evaluation is forward-temporal only (train past, test strictly-future). See /v1/forecast/onset/info for the honest AUC and the promote verdict.","If a shutdown is active in a country right now, onset is undefined for it and this endpoint returns status=shutdown_active with no probability."],"label_meta":{"date_range":["2024-05-22 00:00:00","2026-05-22 00:00:00"],"definition":"onset_7d = 1 iff a NEW confirmed censorship/mixed incident starts within the next 7 days, evaluated ONLY on country-days with no shutdown active now. An incident is 'active' over [first_seen-3d, last_seen+14d]. IODA disruption excluded.","generated_at":"2026-05-22T13:16:53.138020+00:00","knobs":{"cooldown_days":14,"grace_days":3,"horizon_days":7,"min_incidents_per_country":2,"window_years":2},"n_active_rows":8509,"n_countries":40,"n_eligible_rows":21462,"n_features":69,"n_grid_rows":29971,"n_onset_events":297,"onset_base_rate":0.01383841207715963,"onset_events_by_country":{"AE":{"eligible_rows":688,"onset":4},"AZ":{"eligible_rows":600,"onset":4},"BD":{"eligible_rows":601,"onset":12},"BY":{"eligible_rows":288,"onset":8},"CU":{"eligible_rows":688,"onset":4},"DZ":{"eligible_rows":659,"onset":15},"EG":{"eligible_rows":397,"onset":12},"GA":{"eligible_rows":646,"onset":8},"GB":{"eligible_rows":492,"onset":8},"ID":{"eligible_rows":661,"onset":4},"IN":{"eligible_rows":616,"onset":8},"IQ":{"eligible_rows":612,"onset":12},"IR":{"eligible_rows":424,"onset":8},"JO":{"eligible_rows":504,"onset":7},"KH":{"eligible_rows":451,"onset":4},"KP":{"eligible_rows":731,"onset":0},"KW":{"eligible_rows":670,"onset":8},"KZ":{"eligible_rows":626,"onset":12},"MA":{"eligible_rows":427,"onset":8},"MM":{"eligible_rows":51,"onset":0},"MY":{"eligible_rows":653,"onset":8},"NG":{"eligible_rows":686,"onset":8},"NI":{"eligible_rows":662,"onset":12},"OM":{"eligible_rows":681,"onset":8},"PK":{"eligible_rows":331,"onset":8},"QA":{"eligible_rows":495,"onset":8},"RU":{"eligible_rows":10,"onset":4},"RW":{"eligible_rows":667,"onset":8},"SA":{"eligible_rows":377,"onset":4},"SG":{"eligible_rows":702,"onset":4},"SS":{"eligible_rows":695,"onset":8},"SY":{"eligible_rows":642,"onset":7},"TH":{"eligible_rows":662,"onset":4},"TM":{"eligible_rows":400,"onset":8},"TN":{"eligible_rows":706,"onset":8},"TR":{"eligible_rows":432,"onset":16},"TZ":{"eligible_rows":537,"onset":8},"UZ":{"eligible_rows":597,"onset":4},"VE":{"eligible_rows":275,"onset":8},"VN":{"eligible_rows":420,"onset":8}},"schema":"voidly-onset/v1","top_feature_corr_with_onset":{"block_rate_cv_14d":0.119,"block_rate_cv_30d":0.0949,"block_rate_range_14d":0.1039,"block_rate_roll30_mean":0.0756,"block_rate_vol_14d":0.1103,"block_rate_vol_30d":0.1076,"block_rate_vol_7d":0.0747,"election_in_7days":0.0761,"leader_block_rate_level":0.0994,"month":-0.0833,"recent_shutdown":0.0788,"week_of_year":-0.0862}},"metrics":{"all_models":{"gradient_boosting":{"fit_seconds":2.27,"test_ap":0.0608,"test_auc":0.4475},"logreg_balanced":{"fit_seconds":1.79,"test_ap":0.0587,"test_auc":0.4898},"xgboost":{"fit_seconds":0.61,"test_ap":0.0636,"test_auc":0.4557}},"baselines":{"base_rate_constant_auc":0.5,"block_rate_lag1_auc":0.4471,"block_rate_today_auc":0.456},"best_model":"logreg_balanced","evaluation":"forward-temporal (train past, test strictly-future)","generated_at":"2026-05-22T13:19:31.300278+00:00","label_definition":"onset_7d=1 iff a NEW confirmed censorship/mixed incident starts within 7 days, evaluated only on country-days with no shutdown active now. IODA disruption excluded. Forward-temporal split.","logreg_convergence":{"converged":true,"fit_seconds":1.79,"lbfgs_n_iter":53,"max_iter":1000,"scaled_features":true},"n_eligible_rows":21462,"n_features":69,"onset_base_rate":0.01383841207715963,"onset_operating_points":{"at_precision_0.25":{"f1":0.1303,"fn":35,"fp":1380,"precision":0.0713,"reached_target_precision":false,"recall":0.7518,"target_precision":0.25,"threshold":0,"tn":715,"tp":106},"at_precision_0.40":{"f1":0.1303,"fn":35,"fp":1380,"precision":0.0713,"reached_target_precision":false,"recall":0.7518,"target_precision":0.4,"threshold":0,"tn":715,"tp":106},"f1_optimal":{"f1":0.1303,"fn":35,"fp":1380,"precision":0.0713,"recall":0.7518,"threshold":0,"tn":715,"tp":106}},"promote":false,"promote_gate":{"auc_floor":0.6,"beats_baselines":false,"clears_auc_floor":false,"usable_recall_at_p25":false},"robustness_walk_forward":{"fold_aucs":[{"auc":0.529,"fold":1,"n_test":3891,"n_test_onsets":20,"test_window":["2025-06-27","2025-11-20"]},{"auc":0.4402,"fold":2,"n_test":1770,"n_test_onsets":84,"test_window":["2025-11-20","2026-03-10"]},{"auc":0.5168,"fold":3,"n_test":1825,"n_test_onsets":105,"test_window":["2026-03-10","2026-05-23"]}],"mean_auc":0.4953,"method":"3-fold expanding-window walk-forward, logistic-balanced — averages out one unlucky split"},"schema":"voidly-onset-model/v1","split":{"cut_date":"2026-01-21","method":"forward-temporal; latest cut date that keeps >=60 onsets in train, >=30 in test, and a test fold >=10% of the timeline","n_test":2236,"n_test_onsets":141,"n_train":19226,"n_train_onsets":156,"test_frac":0.104},"test_ap_on_onset_events":0.0587,"test_auc_on_onset_events":0.4898,"test_brier":0.2133,"top_features":{"contagion_chain_active":0.447,"contagion_chain_score":-0.375,"days_since_last_incident":0.2988,"days_until_incident_anniversary":-0.5308,"election_within_30d":0.1702,"gdelt_protests_7d":-0.1695,"gdelt_unrest_30d":-0.124,"is_friday":0.0895,"is_weekend":0.1921,"leader_rising_count":-0.8408,"month":0.3072,"near_incident_anniversary":0.1057,"protest_last_48h":-0.1546,"recent_shutdown":-0.7029,"week_of_year":-0.8492},"verdict":"NEGATIVE_FINDING","verdict_text":"Shutdown onset is NOT predictable 7 days out from current features: AUC 0.490 <= 0.60 floor; does not clearly beat baselines (block_rate-today 0.456, lag1 0.447); no usable recall at >=0.25 precision (best recall there 0.75). This is a definitive negative finding — the leading indicators we have (momentum, events, contagion) do not separate the country-days that precede a new shutdown from those that don't."},"model":"censorship-shutdown-onset/v1","problem":"Predict whether a NEW confirmed censorship/mixed shutdown begins within 7 days, scored ONLY on country-days with no shutdown active now. Conditioning on 'no active shutdown' is what separates onset from the persistence-dominated /7day target.","schema":"voidly-onset-forecast-info/v1","_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."}}