{"eval":{"auc_burst":0.6458,"auc_composite":0.7452,"auc_composite_min_fold":0.7145,"auc_composite_note":"MEAN held-out AUC of the winning fusion method across rolling-origin forward-temporal CV folds","auc_dbscan":0.6402,"auc_hdbscan":0.5439,"auc_stl":0.5803,"best_single_auc":0.6458,"best_single_detector":"burst","composite_beats_best_single":true,"composite_strategy_used":"logistic_stack","n_folds":3,"n_labels":3956,"n_labels_negative":2917,"n_labels_positive":1039,"split_type":"rolling_origin_forward_temporal","window_days":120},"generated_at":"2026-05-22T12:00:33.426047+00:00","honest_caveats":["Fusion v2 method = logistic_stack, chosen by MEAN held-out AUC (0.7452) 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.715..0.769; 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":30,"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":79,"source":"/opt/voidly-ai/data/domain_drift_state.json"},"stl":{"n_countries":42,"source":"/opt/voidly-ai/data/stl_seasonal_anomaly.parquet"}},"n_countries":82,"n_countries_3of4_agree":1,"n_countries_majority_agree":13,"promote_check":{"expose_endpoint":true,"passed":true,"reason":"mean held-out composite AUC 0.7452 >= 0.72 across 3 forward-temporal folds (worst fold 0.7145) — fusion v2 promoted (logistic_stack)","rule":"mean rolling-origin held-out composite AUC >= 0.72"},"schema":"voidly-fused-anomaly/v1","strong_detector_percentile":0.75,"version":"v2","weights":{"burst":null,"dbscan":null,"hdbscan":null,"stl":null},"_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."}}