=== STEP_046H RESULT === step=STEP_046H_VM100_LOCAL_ONE_IDLE_SELECTOR_CHANGE mode=VM100_CONTROLLED_ONE_IDLE_SELECTOR_CHANGE_AND_RESTORE vm100_controlled_change: target_ip=10.253.1.12 from=cs3/canary_vpn5 to=cs2/canary_vpn4 precheck_ok=True backup_rc=0 rollback_script=/root/rollback-step046h-selector-20260710-073833.sh rollback_script_rc=0 pre_selector_sha256=2db1a0c46c1b93d9ede5f560d2d00db2dad3283adbc8f6ca6b0434ab695d8460 changed_selector_sha256=a4050ae41e421773172f3d603480896a2813937d949f233b70114c7fba55a44e post_selector_sha256=2db1a0c46c1b93d9ede5f560d2d00db2dad3283adbc8f6ca6b0434ab695d8460 changed_sha_differs_from_pre=True post_sha_matches_pre=True changed_line_12=10.253.1.12 cs2 canary_vpn4 post_line_12=10.253.1.12 cs3 canary_vpn5 change_apply_rc=0 restore_apply_rc=0 controlled_change_ok=True restore_ok=True wg_runtime_stable=True prototype_rebalancer: target_count=5 lease_rows=5 active_count=1 idle_count=4 action_count=0 noop=True final_safety: transient selector change applied and restored rollback script created on VM100 final selector SHA restored final .12 restored to cs3/canary_vpn5 WG peer runtime stable no VM101 changes no VM121 DB writes/jobs old prototype real --apply remains refused success_checks: router_ops_pre_state_collected=True pre_timer_enabled_active=True prototype_rebalancer_executable=True prototype_sampler_executable=True prototype_rebalancer_dryrun_ok=True prototype_rebalancer_noop=True prototype_rows_all_have_peer_id=True prototype_apply_preview_ok=True prototype_apply_preview_no_write=True prototype_apply_preview_zero_actions=True prototype_apply_preview_zero_updates=True prototype_apply_preview_zero_jobs=True prototype_real_apply_refused=True vm100_controlled_change_raw_ok=True vm100_controlled_change_json_created=True vm100_precheck_ok=True vm100_backup_ok=True vm100_rollback_script_ok=True vm100_pre_backup_sha_match=True vm100_change_awk_ok=True vm100_change_mv_ok=True vm100_change_apply_ok=True vm100_changed_sha_differs=True vm100_changed_line_expected=True vm100_changed_nft_contains_ip=True vm100_changed_nft_contains_cs2=True vm100_restore_copy_ok=True vm100_restore_apply_ok=True vm100_post_sha_matches_pre=True vm100_post_line_expected=True vm100_post_nft_contains_ip=True vm100_post_nft_contains_cs3=True vm100_controlled_change_ok=True vm100_restore_ok=True vm100_wg_runtime_stable=True vm100_final_check_ok=True vm100_final_sha_matches_pre=True vm100_final_selector_rows_five=True vm100_final_line_12_restored=True vm100_final_peer_count_five=True vm100_final_allowed_ip_count_five=True vm100_final_uci_peer_sections_zero=True vm100_final_nft_contains_cs3=True vm101_static_mapper_check_ok=True vm101_cs1_to_vpn3=True vm101_cs2_to_vpn4=True vm101_cs3_to_vpn5=True vm101_cs4_to_vpn1=True vm101_cs5_to_vpn2=True vm121_role_check_ok=True vm121_backend_admin_history_only=True vm121_not_selector_apply_owner=True vm121_not_dynamic_decision_owner=True prototype_sampler_post_ok=True prototype_sampler_post_rows_five=True prototype_sampler_post_selector_match_five=True db_enabled_peers_five=True db_lease_rows_five=True db_active_one=True db_idle_four=True db_forced_zero=True db_pending_zero=True vm121_pending_zero=True router_ops_post_state_collected=True post_timer_enabled_active=True public_report_created=True public_index_rebuilt=True expected_absence: private_material_published=False manual_agent_service_start_used=False vm100_final_selector_drift=False vm100_wg_peer_runtime_changed=False vm101_changed=False vm121_db_written=False jobs_created=False prototype_apply_preview_wrote_db=False real_apply_enabled=False timer_disabled=False all_ok=True decision=PASS_STEP_046H_VM100_LOCAL_ONE_IDLE_SELECTOR_CHANGE next_step=STEP_046I_VM100_LOCAL_SELECTOR_CHANGE_WITH_TRAFFIC_PROOF LOCAL_REPORT=http://127.0.0.1:8099/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260710-073826_step046h_vm100_local_one_idle_selector_change/ TRYCF_REPORT=https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260710-073826_step046h_vm100_local_one_idle_selector_change/