{"alert_status":"alert","alert_threshold":{"f1":0.6939,"fp":1,"low_confidence":false,"max_tp_seen":17,"n_alerts_backtest":18,"n_incidents_in_window":31,"precision":0.9444,"raised_from_global":true,"recall":0.5484,"threshold":0.25,"tp":17},"country":"IR","generated_at":"2026-07-06T05:10:01.905571+00:00","honest_caveats":["Cutting the false-alarm rate TRADES recall. Each candidate's true_positive_rate_pct is reported next to its false_alarm_rate_pct — read them together.","Per-country thresholds are picked IN-SAMPLE on the same 90-day window they are scored on. The live forward false-alarm rate will be somewhat worse than this backtest; treat the backtest FP rate as an optimistic lower bound.","Thresholds are floored at the global 0.05 — the fix only ever RAISES an alert bar, never lowers one, so it can never fire MORE alerts than the baseline.","Countries with zero incidents in the window get recall=1 by convention when they also fire zero alerts; a country that fires alerts but had no incident is correctly scored as all-false-alarm.","The persistence gate fires one alert per sustained episode (on the day the run reaches PERSIST_DAYS length), not one per day — so it genuinely de-duplicates 1-day spikes rather than just delaying them.","Chronic-FP suppression downgrades a country to 'watch', it does not delete its forecast. The risk number is still published at /v1/sentinel/current_risk/{cc}; only the webhook alert is withheld.","DBSCAN / contagion multi-signal confirmation was considered but NOT backtested: those sidecars are point-in-time snapshots, not historical time series, so there is no honest 90-day backtest for them. They remain a candidate for a future fix once their history is retained."],"note":null,"schema":"voidly-sentinel-alert-quality/v1","suppressed":false,"suppression_detail":null,"window":{"lookback_days":90,"since":"2026-04-07T05:10:01.905571+00:00","until":"2026-07-06T05:10:01.905571+00:00"},"winner_summary_for_context":{"alerts_analyzed":417,"candidate":"C3_suppress_chronic_fp","false_alarm_rate_pct":8.4,"fp_rate_after":8.4,"fp_rate_before":36.3,"tp_rate_after":88.7,"tp_rate_before":61.3,"true_positive_rate_pct":88.7},"_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."}}