{"eval":{"auc_burst":0.6902,"auc_composite":0.7516,"auc_composite_min_fold":0.6938,"auc_composite_note":"MEAN held-out AUC of the winning fusion method across rolling-origin forward-temporal CV folds","auc_dbscan":0.6113,"auc_hdbscan":0.5996,"auc_stl":0.6203,"best_single_auc":0.6902,"best_single_detector":"burst","composite_beats_best_single":true,"composite_strategy_used":"rank_avg","n_folds":3,"n_labels":3216,"n_labels_negative":2240,"n_labels_positive":976,"split_type":"rolling_origin_forward_temporal","window_days":120},"generated_at":"2026-07-06T05:45:18.973441+00:00","honest_caveats":["Fusion v2 method = rank_avg, chosen by MEAN held-out AUC (0.7516) across 3 rolling-origin forward-temporal CV folds. v1 picked its strategy in-sample on the same labels it evaluated — v2 does not.","Evaluation is ROLLING-ORIGIN forward-temporal CV: each fold is fit on earlier label dates and scored on a strictly later, held-out date block. A shuffled random split would leak time-autocorrelation and inflate AUC; that mistake is deliberately avoided.","Per-fold held-out AUC ranges 0.694..0.797; the worst fold (sparse-positive late-May window) is the honest lower bound. The headline number is the mean.","The published auc_composite is the mean held-out CV number. The live per-country composite re-fits the winning method on all labels (standard once a method is selected), but the public metric stays the honest held-out figure.","Components have different time resolutions (DBSCAN/STL/burst = day, HDBSCAN = week). Each 'today' score is treated as a same-day snapshot.","'Anomalous' != 'censored'. A high composite means the day looks unusual on multiple axes; ground-truthing is still required.","Burst and HDBSCAN-drift are near-static 'current snapshot' signals applied at past label dates for evaluation, so their historical AUC is weak — DBSCAN and STL carry most of the discriminative load.","Composite renormalises weights over present detectors; a country with only 2/4 detectors still gets a composite."],"input_detectors":{"burst":{"n_countries":20,"source":"/opt/voidly-ai/ml-deploy/anomaly_bursts_v1.json"},"dbscan":{"n_countries":72,"source":"/opt/voidly-ai/data/dbscan_country_day.parquet"},"hdbscan":{"n_countries":75,"source":"/opt/voidly-ai/data/domain_drift_state.json"},"stl":{"n_countries":69,"source":"/opt/voidly-ai/data/stl_seasonal_anomaly.parquet"}},"n_countries":80,"n_countries_3of4_agree":5,"n_countries_majority_agree":17,"promote_check":{"expose_endpoint":true,"passed":true,"reason":"mean held-out composite AUC 0.7516 >= 0.72 across 3 forward-temporal folds (worst fold 0.6938) — fusion v2 promoted (rank_avg)","rule":"mean rolling-origin held-out composite AUC >= 0.72"},"schema":"voidly-fused-anomaly/v1","strong_detector_percentile":0.75,"version":"v2","weights":{"burst":0.25,"dbscan":0.25,"hdbscan":0.25,"stl":0.25},"_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."}}