{"best_example":{"auc":0.582,"country_code":"TM","n_days":110,"n_shutdowns_in_window":12,"pearson_r":0.165},"built_at":"2026-10-03T04:30:02.435071Z","config":{"baseline_days_for_zscore":30,"gdelt_signal_used":"protests_count + riots_count","lookback_hours_after_signal":48,"min_country_days":21,"min_shutdowns_per_country":2,"shutdown_types_counted":["censorship","mixed"]},"doc":"Daily GDELT protest+riot mention counts \u2192 30-day rolling z-score per country \u2192 label = shutdown (censorship|mixed) in next 48h \u2192 Pearson r + ROC AUC per country. Endpoint surfaces today's signal plus per-country historical correlation strength.","endpoints":{"info":"/v1/sentinel/pre-protest-signal/info","leaderboard":"/v1/sentinel/pre-protest-signal/leaderboard","per_country":"/v1/sentinel/pre-protest-signal/{cc}"},"honest_caveats":["GDELT counts news mentions, not actual protest events \u2014 a spike could be coverage of another country's protest.","Per-country z-score baseline is only 30 days; sparse-news countries get inflated z-scores from low baseline variance.","Shutdown labels are confirmed-censorship incidents only; IODA-only disruptions are excluded (could be over-counted as shutdowns triggered by non-protest causes).","Correlation does not imply causation \u2014 a protest spike and a shutdown may share a common upstream cause (election, policy announcement) rather than one causing the other.","Media-blackout countries with low daily article volume produce biased z-scores in both directions.","Dataset window is short (~48h forward per protest day, ~256 days total) \u2014 wider windows would tighten error bars."],"n_countries_evaluated":27,"n_significant_countries":0,"promote_floor":{"min_significant_countries":5,"r_threshold":0.3},"promoted":false,"schema":"voidly-pre-protest-signal/v1","significant_countries":[],"version":"v1"}
