{"generated_at":"2026-10-03T19:16:01.920199Z","honest_caveats":["Active-learning value depends on humans actually labelling. If labels_submitted is 0 the loop is plumbed but idle.","simulated_f1_lift uses PROXY labels (incident-table positives within +/-3 days, else negative), not human labels. It is an optimistic estimate \u2014 real human labels on uncertain days are noisier and the AL queue surfaces days the incident table is silent on. Treat the lift as 'is the queue surfacing learnable rows', not a promotion signal."],"loop_note":"The loop is wired end to end (queue -> submit-label -> aggregate -> promote -> retrain) but 0 human labels have been submitted. Until reviewers label candidates at /atlas/active-learning the loop is idle by design \u2014 value depends on humans actually labelling.","loop_state":"plumbed_idle","schema":"voidly-sentinel-al-loop-status/v1","simulated_f1_lift":{"augmented_f1_median":0.8571428571428571,"baseline_f1_median":0.8695652173913043,"f1_mean_delta":-0.0046,"f1_median_delta":-0.0124,"generated_at":"2026-10-03T04:30:01.846571+00:00","simulated_with_top_n_candidates":45},"simulation_detail":{"augmented":{"corpus_rows":4282,"f1_mean":0.7063600811486489,"f1_median":0.8571428571428571,"n_countries":127},"baseline":{"corpus_rows":4237,"f1_mean":0.7109360224005077,"f1_median":0.8695652173913043,"n_countries":127},"candidates_usable":45,"caveats":["PROXY LABELS, NOT HUMAN LABELS. Positives come from the incidents table within +/-3 days of the candidate date; everything else is labeled negative. This is optimistic \u2014 the AL queue surfaces UNCERTAIN days precisely where the incident table is silent.","Only 45 rows added over a 4237-row corpus; the LOCO delta is small and partly run-to-run noise.","Simulated lift estimates whether the queue surfaces learnable rows. It is NOT a promotion signal \u2014 real retrain still goes through the v3.3 dual-holdout gate."],"exists":true,"generated_at":"2026-10-03T04:30:01.846571+00:00","lift":{"f1_mean_delta":-0.0046,"f1_median_delta":-0.0124},"per_country_movers":[{"country":"KW","delta":0.6667,"f1_after":0.6667,"f1_before":0.0},{"country":"UZ","delta":0.2271,"f1_after":0.3871,"f1_before":0.16},{"country":"TH","delta":0.125,"f1_after":0.25,"f1_before":0.125},{"country":"AE","delta":0.0808,"f1_after":0.4444,"f1_before":0.3636},{"country":"MA","delta":0.0769,"f1_after":0.2308,"f1_before":0.1538},{"country":"PK","delta":0.0711,"f1_after":0.5538,"f1_before":0.4828},{"country":"SG","delta":0.0667,"f1_after":0.1667,"f1_before":0.1},{"country":"TN","delta":0.0667,"f1_after":0.4,"f1_before":0.3333},{"country":"KZ","delta":0.0652,"f1_after":0.5652,"f1_before":0.5},{"country":"GE","delta":0.0523,"f1_after":0.9412,"f1_before":0.8889}],"proxy_label_breakdown":{"incident_table_negative":13,"incident_table_positive":32},"queue_size":50,"status":"ok"},"stages":{"1_queue":{"endpoint":"/v1/sentinel/active-learning-queue","queue_size":405},"2_labels_submitted":{"audit_log_exists":false,"count":0,"distinct_candidates":0,"endpoint":"/v1/sentinel/active-learning-submit-label"},"3_consensus":{"aggregator":"aggregate-active-learning-labels.py","candidates_with_submissions":0,"consensus_reached":0,"consensus_threshold":null,"last_aggregated_at":null,"pending_consensus":0},"4_promoted_to_training":{"corpus":"labeled_incidents_v3.3.json","corpus_total_rows":4237,"promoted_rows":0,"promotion_script":"promote-al-labels-to-training.py"},"5_retrain":{"last_retrain_included_al_labels":null,"note":"Timestamp of the last corpus promotion \u2014 the most recent point at which a v3.3 retrain would have consumed active-learning labels. Null = no promotion has happened yet.","retrain_queue":{"active_learning_in_trigger":false,"al_new_labels_last_promotion":null,"al_rows_in_corpus":null,"note":"A retrain is queued. weekly-retrain.sh (cron 02:00 UTC Sun) consumes this file and deletes it after a successful retrain. If 'active-learning' is in triggers, the next retrain will learn from promoted human-consensus labels.","queued":true,"queued_at":"2026-10-03T05:20:10.995505+00:00","scheduled_for":"next 02:00 UTC weekly cron","trigger":"concept-drift","triggers":["concept-drift"]}}}}
