{"model_id":"phase_b_rf_v1_56","algorithm":"sklearn.ensemble.RandomForestClassifier","algorithm_note":"UNCHANGED — v1.56 swap_curv_pos (mandate gate: AP>= and F1>= with real lift)","parent_model":"phase_b_rf_v1_52","trained_at":"2026-07-28T15:09:05.609720Z","status":"research_screening","frozen":true,"frozen_at":"2026-07-29","freeze_doc":"docs/100-phase-b-rf-v156-FREEZE.md","freeze_page":"web/pages/phase-b-rf-status.html","operational_use":false,"cap_auto_issue":false,"confidence":"exploratory","n_positives":12,"n_negatives":60,"features":["rain_24h_mm","rain_72h_mm","amphoe_mean_rain_mm","flood_risk_index","clay_g_per_kg_idw","month_cos","dist_mrt_construction_km","dist_transit_km","dist_waterway_km","dist_major_road_km","bma_drain_pipe_count","bma_drain_pipe_length_km","bma_drain_pipe_mean_dim_m","bma_drain_coverage","elev_m","slope_deg","relief_m","twi_proxy","psi_vel_mm_yr_idw","psi_subsidence_mm_yr_idw","dist_nearest_psi_km","psi_coverage","gw_prov_coverage","gw_well_count_2km","gw_well_count_5km","dist_nearest_gw_well_km","gw_mean_static_m_5km","copdem_curvature","dist_osm_tunnel_km","pos_copdem_curv","relief_x_inv_urban","curv_x_log_urban","relief_x_log_urban","log_road_dense_2km","dist_urban_core_km","dist_rail_station_km","psi_k3_std","hii_max_rain","wp_x_psi_std","log_gob_1km","log_gob_2km","slope_x_gob_far","relief_x_gob"],"hyperparameters":{"n_estimators":500,"max_depth":4,"min_samples_leaf":2,"max_features":"sqrt","class_weight":"balanced_subsample"},"validation":{"protocol":"leave_one_positive_out_vs_all_negatives","folds":[{"hold_id":"bkk-faichai-2024-08-25","hold_prob":0.6013296605038977},{"hold_id":"bkk-kasakomol-2024-10-06","hold_prob":0.42235787406029135},{"hold_id":"nbi-chaiphruek-2024-11-05","hold_prob":0.36204944106426384},{"hold_id":"nbi-sainoi-2025-07-19","hold_prob":0.08207493061747238},{"hold_id":"nbi-chaengwattana-2025-07-22","hold_prob":0.7296347286563386},{"hold_id":"nbi-chaengwattana-2025-08-14","hold_prob":0.707634218046183},{"hold_id":"bkk-samsen-vajira-2025-09-24","hold_prob":0.4048708149473773},{"hold_id":"ssk-rama2-2026-01-17","hold_prob":0.3065133743506007},{"hold_id":"bkk-charan-faichai-2026-05-09","hold_prob":0.49544013118177505},{"hold_id":"bkk-latphrao-2026-06-16","hold_prob":0.3244002739543893},{"hold_id":"bkk-wongwianyai-2026-07-08","hold_prob":0.6129119670205039},{"hold_id":"pte-latlumkaeo-2026-07-22","hold_prob":0.3009280129868197}],"lopo_auc_mean":0.9680555555555557,"oof_ap":0.9452380952380952,"best_f1":0.9565217391304348,"best_threshold":0.3},"enhancement_doc":"docs/066-phase-b156-curv-pos.md","model_path":"models/phase_b/rf_v1_56.joblib","note":"FROZEN 2026-07-29 — open-feature plateau after v1.57–v1.88. Do not promote new web default without MEA/MWA/LiCSBAS or denser labels. See docs/100-phase-b-rf-v156-FREEZE.md","ok":true,"fetchedAt":"2026-08-19T19:04:02.823226+00:00"}