{"dataset":{"date_max":"2026-05-21","date_min":"2026-02-20","n_negative_total":5756,"n_positive_test":63,"n_positive_total":183,"n_positive_train":120,"test_cutoff":"2026-04-21","test_rows":2485,"total_rows":5939,"train_rows":3454},"honest_caveats":["LEAKAGE AUDIT (2026-05-22): the reported AUC ~0.92 is real arithmetic but near-tautological. The label is_censorship is derived from the incidents table; 343 of 344 censorship/mixed incidents were minted from an anomalous evidence row on the same country-day the feature counts. The feature partially ENCODES the label.","censoredplanet_present alone (one raw binary feature, no model) scores AUC ~0.90 on the temporal test set. The 4-source Naive Bayes adds only ~1.6pp (bootstrap 95% CI [0.0, 3.3pp]) \u2014 the 'multi-source fusion' contributes essentially nothing.","On a leakage-free target (predict NEXT-day censorship from TODAY's sources) AUC falls to ~0.73.","At threshold 0.5 the model's F1/precision/recall are all 0.0 \u2014 it is a ranker, not a classifier. Treat the posterior as a relative score only.","The split itself is honest (forward-temporal, not shuffled). The leakage is circular features, not split contamination \u2014 but the effect on the headline number is the same: the metric overstates real skill.","Naive Bayes assumes per-source independence given the label, violated when sources cover overlapping ASNs.","The corroboration gate in auto-incident-watchdog.py is a conservative near-veto, not the independent confirmation it appears to be."],"likelihoods":{"censoredplanet":{"lr_absent":0.01009013368822213,"lr_present":5.285392552244278,"p_present_given_censorship":0.9918032786885246,"p_present_given_no_censorship":0.18764988009592326},"ioda":{"lr_absent":1.7521893275961336,"lr_present":0.28733025178720106,"p_present_given_censorship":0.14754098360655737,"p_present_given_no_censorship":0.5134892086330936},"ooni":{"lr_absent":0.6623177718531964,"lr_present":1.7624231557377052,"p_present_given_censorship":0.5409836065573771,"p_present_given_no_censorship":0.3069544364508393},"voidly_probes":{"lr_absent":0.9921006709759874,"lr_present":27.344262295081972,"p_present_given_censorship":0.00819672131147541,"p_present_given_no_censorship":0.00029976019184652276}},"loaded":true,"model_version":"corroboration_v1_naive_bayes","per_source_contribution":{"censoredplanet":{"auc_with":0.9157327670952774,"auc_without":0.6854265791094858,"delta_auc":0.2303061879857916},"ioda":{"auc_with":0.9157327670952774,"auc_without":0.9194126590906112,"delta_auc":-0.003679891995333806},"ooni":{"auc_with":0.9157327670952774,"auc_without":0.9045358027604106,"delta_auc":0.011196964334866832},"voidly_probes":{"auc_with":0.9157327670952774,"auc_without":0.9157458744576827,"delta_auc":-1.3107362405340162e-05}},"prior":0.03474232773595831,"promote_floor_auc":0.75,"promoted":false,"schema":"voidly-corroboration-info/v1","sources":["ooni","ioda","censoredplanet","voidly_probes"],"test_metrics":{"auc":0.9157327670952774,"brier":0.025301537936352668,"ece":0.021128220069929128,"f1_at_0.5":0.0,"log_loss":0.08724260552014225,"precision_at_0.5":0.0,"recall_at_0.5":0.0,"reliability_bins":[{"bin":[0.0,0.1],"empirical_rate":0.006091846298031865,"n":2134,"predicted_mean":0.004044606403723503},{"bin":[0.1,0.2],"empirical_rate":0.11515151515151516,"n":165,"predicted_mean":0.17967309107813476},{"bin":[0.2,0.30000000000000004],"empirical_rate":null,"n":0,"predicted_mean":null},{"bin":[0.30000000000000004,0.4],"empirical_rate":0.16666666666666666,"n":186,"predicted_mean":0.3682191231797183},{"bin":[0.4,0.5],"empirical_rate":null,"n":0,"predicted_mean":null},{"bin":[0.5,0.6000000000000001],"empirical_rate":null,"n":0,"predicted_mean":null},{"bin":[0.6000000000000001,0.7000000000000001],"empirical_rate":null,"n":0,"predicted_mean":null},{"bin":[0.7000000000000001,0.8],"empirical_rate":null,"n":0,"predicted_mean":null},{"bin":[0.8,0.9],"empirical_rate":null,"n":0,"predicted_mean":null},{"bin":[0.9,1.0],"empirical_rate":null,"n":0,"predicted_mean":null}]},"trained_at":"2026-05-21T12:03:21.503969Z"}
