{"calibrator_loaded":true,"calibrator_path":"/opt/voidly-ai/models/forecast_calibrator_v2_isotonic_prod.pkl","drift_threshold_pp":15,"endpoints":{"all":"/v1/sentinel/calibration-drift","single_country":"/v1/sentinel/calibration-drift/{cc}"},"filters_applied":{"min_n":null,"status":"drifting"},"generated_at":"2026-07-07T05:00:03Z","honest_caveats":["Per-country windows are narrow. A country with fewer than 15 predictions in the 30-day window gets status='insufficient_data' and drift_alert=null.","High-frequency-flip countries (VE, MM) produce noisy drift estimates — abs_drift_pp tends to overstate true drift when the country is bouncing between blocked and unblocked.","Drift > 0 ≠ broken model. A real distribution shift in the country (election, mass protest, fresh shutdown campaign) will legitimately have empirical_pos_rate > mean_predicted_prob until the next weekly retrain catches up.","Observed labels are rebuilt from voidly_data.incidents using incident_type IN ('censorship','mixed') — matching the forecast model's post-2026-05-21 disruption-exclusion rule. The legacy sentinel_outcomes.observed column is NOT used.","Calibrator is applied with the same WATCHED_FOR_CALIBRATION + CALIBRATOR_FLOOR gate as the live API, so this is the literal probability that would have been served at request time."],"min_predictions_for_alert":15,"model_id":"forecast-v1-7day","n_countries":30,"n_drifting":29,"n_insufficient_data":0,"n_ok":1,"results":[{"abs_drift_pp":84.69,"brier":0.7304,"calibration_drift_pp":84.69,"country":"TR","drift_alert":true,"empirical_pos_rate":1,"mean_predicted_prob":0.1531,"n_observed_positives":24,"n_predictions":24,"n_relabeled_vs_sentinel":22,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.075,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":83.01,"brier":0.705,"calibration_drift_pp":83.01,"country":"ID","drift_alert":true,"empirical_pos_rate":1,"mean_predicted_prob":0.1699,"n_observed_positives":24,"n_predictions":24,"n_relabeled_vs_sentinel":24,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":82.47,"brier":0.691,"calibration_drift_pp":82.47,"country":"TH","drift_alert":true,"empirical_pos_rate":1,"mean_predicted_prob":0.1753,"n_observed_positives":24,"n_predictions":24,"n_relabeled_vs_sentinel":24,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.075,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":79.74,"brier":0.6436,"calibration_drift_pp":79.74,"country":"BD","drift_alert":true,"empirical_pos_rate":1,"mean_predicted_prob":0.2026,"n_observed_positives":24,"n_predictions":24,"n_relabeled_vs_sentinel":19,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":75.42,"brier":0.5692,"calibration_drift_pp":75.42,"country":"MY","drift_alert":true,"empirical_pos_rate":1,"mean_predicted_prob":0.2458,"n_observed_positives":24,"n_predictions":24,"n_relabeled_vs_sentinel":24,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.075,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":74,"brier":0.549,"calibration_drift_pp":74,"country":"VN","drift_alert":true,"empirical_pos_rate":1,"mean_predicted_prob":0.26,"n_observed_positives":24,"n_predictions":24,"n_relabeled_vs_sentinel":19,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":72.29,"brier":0.5242,"calibration_drift_pp":72.29,"country":"VE","drift_alert":true,"empirical_pos_rate":1,"mean_predicted_prob":0.2771,"n_observed_positives":24,"n_predictions":24,"n_relabeled_vs_sentinel":0,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.075,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":72.22,"brier":0.5238,"calibration_drift_pp":72.22,"country":"IN","drift_alert":true,"empirical_pos_rate":1,"mean_predicted_prob":0.2778,"n_observed_positives":24,"n_predictions":24,"n_relabeled_vs_sentinel":11,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.075,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":72.19,"brier":0.5235,"calibration_drift_pp":72.19,"country":"MM","drift_alert":true,"empirical_pos_rate":1,"mean_predicted_prob":0.2781,"n_observed_positives":24,"n_predictions":24,"n_relabeled_vs_sentinel":19,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.075,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":72.08,"brier":0.5219,"calibration_drift_pp":72.08,"country":"BY","drift_alert":true,"empirical_pos_rate":1,"mean_predicted_prob":0.2792,"n_observed_positives":24,"n_predictions":24,"n_relabeled_vs_sentinel":19,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.075,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":71.97,"brier":0.5202,"calibration_drift_pp":71.97,"country":"SA","drift_alert":true,"empirical_pos_rate":1,"mean_predicted_prob":0.2803,"n_observed_positives":24,"n_predictions":24,"n_relabeled_vs_sentinel":22,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":71.94,"brier":0.5197,"calibration_drift_pp":71.94,"country":"IR","drift_alert":true,"empirical_pos_rate":1,"mean_predicted_prob":0.2806,"n_observed_positives":24,"n_predictions":24,"n_relabeled_vs_sentinel":10,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.15,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":71.26,"brier":0.5098,"calibration_drift_pp":71.26,"country":"KZ","drift_alert":true,"empirical_pos_rate":1,"mean_predicted_prob":0.2874,"n_observed_positives":24,"n_predictions":24,"n_relabeled_vs_sentinel":20,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":68.11,"brier":0.5032,"calibration_drift_pp":68.11,"country":"RU","drift_alert":true,"empirical_pos_rate":0.9583,"mean_predicted_prob":0.2772,"n_observed_positives":23,"n_predictions":24,"n_relabeled_vs_sentinel":17,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":65.87,"brier":0.4339,"calibration_drift_pp":65.87,"country":"EG","drift_alert":true,"empirical_pos_rate":1,"mean_predicted_prob":0.3413,"n_observed_positives":24,"n_predictions":24,"n_relabeled_vs_sentinel":6,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.45,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":65.87,"brier":0.4339,"calibration_drift_pp":65.87,"country":"PK","drift_alert":true,"empirical_pos_rate":1,"mean_predicted_prob":0.3413,"n_observed_positives":24,"n_predictions":24,"n_relabeled_vs_sentinel":19,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.525,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":65.87,"brier":0.4339,"calibration_drift_pp":65.87,"country":"UZ","drift_alert":true,"empirical_pos_rate":1,"mean_predicted_prob":0.3413,"n_observed_positives":24,"n_predictions":24,"n_relabeled_vs_sentinel":24,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":58.87,"brier":0.4718,"calibration_drift_pp":58.87,"country":"CU","drift_alert":true,"empirical_pos_rate":0.875,"mean_predicted_prob":0.2863,"n_observed_positives":21,"n_predictions":24,"n_relabeled_vs_sentinel":17,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":38.75,"brier":0.3502,"calibration_drift_pp":38.75,"country":"SY","drift_alert":true,"empirical_pos_rate":0.6667,"mean_predicted_prob":0.2792,"n_observed_positives":16,"n_predictions":24,"n_relabeled_vs_sentinel":15,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":28.63,"brier":0.084,"calibration_drift_pp":-28.63,"country":"SD","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.2863,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":0,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.45,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":28.5,"brier":0.0831,"calibration_drift_pp":-28.5,"country":"NG","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.285,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":0,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":28.14,"brier":0.0815,"calibration_drift_pp":-28.14,"country":"ET","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.2814,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":0,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.075,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":25.66,"brier":0.0664,"calibration_drift_pp":-25.66,"country":"PH","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.2566,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":0,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":24.79,"brier":0.0618,"calibration_drift_pp":-24.79,"country":"BR","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.2479,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":0,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":24.36,"brier":0.0594,"calibration_drift_pp":-24.36,"country":"ER","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.2436,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":0,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":24.25,"brier":0.0589,"calibration_drift_pp":-24.25,"country":"KP","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.2425,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":0,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":23.64,"brier":0.059,"calibration_drift_pp":-23.64,"country":"CN","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.2364,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":0,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":17.36,"brier":0.2735,"calibration_drift_pp":17.36,"country":"NI","drift_alert":true,"empirical_pos_rate":0.4167,"mean_predicted_prob":0.243,"n_observed_positives":10,"n_predictions":24,"n_relabeled_vs_sentinel":10,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"},{"abs_drift_pp":15.15,"brier":0.0366,"calibration_drift_pp":-15.15,"country":"TM","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.1515,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":0,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-06-30","window_start":"2026-06-07"}],"schema":"voidly-per-country-calibration-drift/v1","sidecar_last_modified":"2026-07-07T05:00:03Z","sidecar_size_bytes":16615,"window_days":30,"_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."}}