{"generated_at":"2026-05-22T20:33:51.697618Z","metrics":{"categories_exposed_at_inference":["censorship","natural_outage","natural_outage:ddos","natural_outage:infrastructure","natural_outage:weather","natural_outage:maintenance","mixed_unknown"],"censorship_probability_bins":{"0.40 <= P(censorship) < 0.60":0.002506265664160401,"0.60 <= P(censorship) < 0.80":0.0,"P(censorship) < 0.40":0.005012531328320802,"P(censorship) >= 0.80":0.9924812030075187},"cv_auc":0.9973813506338768,"feature_importance_full":{"anomaly_rate":0.00021036863576083455,"confidence":2.549280754859002e-06,"duration_hours":0.0003067607008156898,"duration_log":0.00010558379571110305,"ev_asn_diversity":0.00014540252547885717,"ev_n":2.5745178296571797e-05,"ev_n_asns":8.80270661377545e-05,"ev_n_blocking_methods":2.258449979197955e-05,"ev_n_domain_categories":0.0002474231688354101,"ev_n_domains":0.00034642164203195204,"ev_n_signal_types":0.0005322968184359504,"ev_n_sources":3.658978806423896e-07,"ev_pct_anon_category":0.0,"ev_pct_block":0.0007018446103901847,"ev_pct_blockpage":0.0,"ev_pct_censoredplanet":0.0006594355631973267,"ev_pct_critical":0.0005134916469919165,"ev_pct_dns":0.000541353780335052,"ev_pct_grp_category":6.169804515566314e-05,"ev_pct_interference":4.47310310744806e-05,"ev_pct_ioda":0.006534475364376932,"ev_pct_news_category":0.000593363933876386,"ev_pct_ooni":2.4484793353654143e-06,"ev_pct_outage":0.005357858443410679,"ev_pct_tcp_reset":1.4945288851151278e-06,"ev_pct_throttle":0.0,"ev_pct_tls_reset":0.0,"ev_selectivity":1.0882401914373497e-05,"ev_source_diversity":5.752745794805544e-07,"has_cp_source":0.03734663457029906,"has_ioda_source":0.8761983141730854,"has_ooni_source":3.2417756380806057e-06,"hour_of_day":0.0002593970569237772,"is_business_hours":2.004058576745464e-08,"is_weekend_start":0.001395792040880783,"long_duration_flag":3.133192660369709e-09,"measurement_count":2.1432932569140836e-06,"measurement_count_log":1.7794249275511844e-06,"mechanism_block":0.0,"mechanism_dns":0.0,"mechanism_platform":0.0,"mechanism_throttle":0.0,"month":5.3374168303876955e-09,"multi_source":0.03965342321314173,"n_affected_asns_declared":0.0,"n_affected_domains_declared":0.0,"n_affected_services_declared":0.0,"n_sources_declared":0.025364736078727645,"severity_critical":0.0,"severity_warning":0.0,"very_long_duration_flag":6.235402328529481e-09,"weekday":0.002717321313067053},"feature_importance_top5":{"ev_pct_ioda":0.006534475364376932,"has_cp_source":0.03734663457029906,"has_ioda_source":0.8761983141730854,"multi_source":0.03965342321314173,"n_sources_declared":0.025364736078727645},"generated_at":"2026-05-21T20:44:09.854138Z","honest_auc_no_source_features":0.9978057900519692,"honest_caveats":["Trained binary (censorship vs natural_outage). The 2,293 IODA disruption incidents have unknown true cause \u2014 we treat them as a natural-outage prior, not as separate sub-cause labels.","Sub-cause indicators (ddos/infrastructure/weather/maintenance) are emitted at inference time using HEURISTICS on feature shape, not from supervised training. Treat them as hints, not verdicts.","Many real outages are genuinely ambiguous. The model exposes probability bands; downstream consumers SHOULD NOT collapse to argmax for journalistic claims \u2014 show the band.","BIG ONE: the model's headline AUC is partly recovering the labeling rule itself (disruption rows come from IODA, censorship rows come from OONI/CensoredPlanet). We retrained without source-identity features and report the 'honest_auc_no_source_features' metric \u2014 that's the genuine SHAPE-signal AUC. Use it when judging real-world generalization to outages whose source you don't know."],"model":{"algorithm":"GradientBoostingClassifier","learning_rate":0.05,"max_depth":4,"n_estimators":200,"seed":42},"n_features":52,"n_negative_natural_outage":2297,"n_positive_censorship":399,"n_train":2696,"natural_outage_probability_bins":{"0.40 <= P(censorship) < 0.60":0.00043535045711797995,"0.60 <= P(censorship) < 0.80":0.0,"P(censorship) < 0.40":0.9978232477144101,"P(censorship) >= 0.80":0.0017414018284719198},"promote_check":{"censorship_recall_at_p60":0.9924812030075187,"censorship_recall_at_p60_floor":0.8,"natural_outage_correct_at_p40":0.9978232477144101,"natural_outage_correct_at_p40_floor":0.6,"passed":true},"schema":"voidly-outage-attribution/v1"},"schema":"voidly-outage-attribution-info/v1","summary":{"censorship_recall_at_p60":0.9924812030075187,"cv_auc":0.9973813506338768,"n_negative":2297,"n_positive":399,"n_train":2696,"natural_outage_correct_at_p40":0.9978232477144101,"passed_promote_floor":true}}
