{"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-05-22T05: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":30,"n_insufficient_data":0,"n_ok":0,"results":[{"abs_drift_pp":75,"brier":0.5625,"calibration_drift_pp":-75,"country":"LB","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.75,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":11,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":73.87,"brier":0.547,"calibration_drift_pp":-73.87,"country":"IR","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.7387,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":20,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":73.16,"brier":0.5376,"calibration_drift_pp":-73.16,"country":"ET","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.7316,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":22,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":71.63,"brier":0.5177,"calibration_drift_pp":-71.63,"country":"TR","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.7163,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":11,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":69.05,"brier":0.4819,"calibration_drift_pp":-69.05,"country":"VE","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.6905,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":24,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":67.77,"brier":0.4642,"calibration_drift_pp":-67.77,"country":"CN","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.6777,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":17,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":65.94,"brier":0.4404,"calibration_drift_pp":-65.94,"country":"SY","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.6594,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":17,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":61.06,"brier":0.3797,"calibration_drift_pp":-61.06,"country":"IN","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.6106,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":24,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":59.86,"brier":0.3586,"calibration_drift_pp":-59.86,"country":"TH","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.5986,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":10,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":59.85,"brier":0.3591,"calibration_drift_pp":-59.85,"country":"PH","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.5985,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":15,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":59.72,"brier":0.3569,"calibration_drift_pp":-59.72,"country":"SD","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.5972,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":6,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":59.67,"brier":0.3589,"calibration_drift_pp":-59.67,"country":"MM","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.5967,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":11,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":59.58,"brier":0.3552,"calibration_drift_pp":-59.58,"country":"BR","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.5958,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":14,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":59.44,"brier":0.3535,"calibration_drift_pp":-59.44,"country":"SA","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.5944,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":11,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":59.39,"brier":0.354,"calibration_drift_pp":-59.39,"country":"TM","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.5939,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":6,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":59.33,"brier":0.3525,"calibration_drift_pp":-59.33,"country":"KP","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.5933,"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-05-15","window_start":"2026-04-22"},{"abs_drift_pp":58.83,"brier":0.3473,"calibration_drift_pp":-58.83,"country":"ER","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.5883,"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-05-15","window_start":"2026-04-22"},{"abs_drift_pp":58.83,"brier":0.3473,"calibration_drift_pp":-58.83,"country":"ID","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.5883,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":14,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":58.02,"brier":0.3378,"calibration_drift_pp":-58.02,"country":"CU","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.5802,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":12,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":57.74,"brier":0.3345,"calibration_drift_pp":-57.74,"country":"MY","drift_alert":true,"empirical_pos_rate":0,"mean_predicted_prob":0.5774,"n_observed_positives":0,"n_predictions":24,"n_relabeled_vs_sentinel":6,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":55.3,"brier":0.3446,"calibration_drift_pp":-55.3,"country":"BY","drift_alert":true,"empirical_pos_rate":0.0417,"mean_predicted_prob":0.5947,"n_observed_positives":1,"n_predictions":24,"n_relabeled_vs_sentinel":11,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":39.58,"brier":0.1569,"calibration_drift_pp":39.58,"country":"PK","drift_alert":true,"empirical_pos_rate":1,"mean_predicted_prob":0.6042,"n_observed_positives":24,"n_predictions":24,"n_relabeled_vs_sentinel":0,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":33.54,"brier":0.3414,"calibration_drift_pp":-33.54,"country":"NG","drift_alert":true,"empirical_pos_rate":0.2917,"mean_predicted_prob":0.6271,"n_observed_positives":7,"n_predictions":24,"n_relabeled_vs_sentinel":12,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":33.52,"brier":0.3447,"calibration_drift_pp":-33.52,"country":"BD","drift_alert":true,"empirical_pos_rate":0.2917,"mean_predicted_prob":0.6269,"n_observed_positives":7,"n_predictions":24,"n_relabeled_vs_sentinel":11,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":31.04,"brier":0.298,"calibration_drift_pp":-31.04,"country":"NI","drift_alert":true,"empirical_pos_rate":0.2917,"mean_predicted_prob":0.6021,"n_observed_positives":7,"n_predictions":24,"n_relabeled_vs_sentinel":12,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":30.74,"brier":0.3212,"calibration_drift_pp":-30.74,"country":"VN","drift_alert":true,"empirical_pos_rate":0.2917,"mean_predicted_prob":0.5991,"n_observed_positives":7,"n_predictions":24,"n_relabeled_vs_sentinel":12,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":29.74,"brier":0.2922,"calibration_drift_pp":-29.74,"country":"KZ","drift_alert":true,"empirical_pos_rate":0.2917,"mean_predicted_prob":0.5891,"n_observed_positives":7,"n_predictions":24,"n_relabeled_vs_sentinel":4,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":28.63,"brier":0.1895,"calibration_drift_pp":28.63,"country":"UZ","drift_alert":true,"empirical_pos_rate":0.875,"mean_predicted_prob":0.5887,"n_observed_positives":21,"n_predictions":24,"n_relabeled_vs_sentinel":1,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":25.76,"brier":0.308,"calibration_drift_pp":-25.76,"country":"EG","drift_alert":true,"empirical_pos_rate":0.375,"mean_predicted_prob":0.6326,"n_observed_positives":9,"n_predictions":24,"n_relabeled_vs_sentinel":15,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"},{"abs_drift_pp":25.07,"brier":0.2897,"calibration_drift_pp":-25.07,"country":"RU","drift_alert":true,"empirical_pos_rate":0.375,"mean_predicted_prob":0.6257,"n_observed_positives":9,"n_predictions":24,"n_relabeled_vs_sentinel":8,"observed_rebuilt_from_voidly_db":true,"operational_threshold":0.05,"status":"drifting","window_end":"2026-05-15","window_start":"2026-04-22"}],"schema":"voidly-per-country-calibration-drift/v1","sidecar_last_modified":"2026-05-22T05:00:03Z","sidecar_size_bytes":16634,"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."}}