>>> VM101 [01/08] pre-state __PRE_STATE__ date_utc=2026-07-11T11:05:20Z endpoint_fingerprint_pre=720e542d3d50d48894956385ba15d5e0573b4f45b7a00705b15c2ae7b9091a8a cron_fingerprint_pre=d708ea7f7dfc73ad53172e27f08401321abc6beab0e7d86add033b808993bcea daily_counter_pre=1 quarantine_lines_pre=2 mode_pre=UNKNOWN runner_exists=true helper_exists=true planner_exists=true watcher_exists=true hook_pre_exists=false hook_init_pre_exists=false hook_conf_pre_exists=false hook_running_pre=false hook_enabled_pre=false endpoint_pre.vpn1=178.215.227.13:44408 endpoint_pre.vpn2=151.236.30.139:33998 endpoint_pre.vpn3=95.211.68.119:45176 endpoint_pre.vpn4=78.31.250.16:41729 endpoint_pre.vpn5=157.173.27.69:41797 >>> VM101 [02/08] backup existing hook files __BACKUP__ backup_dir=/root/step050g-emergency-decision-hook-20260711-110520 >>> VM101 [03/08] write hook config/script/init __INSTALL_RESULT__ hook=/usr/local/sbin/router-egress-emergency-decision-hook.sh hook_init=/etc/init.d/router-egress-emergency-decision hook_conf=/etc/router-egress-emergency-decision.conf rollback=/root/rollback-step050g-emergency-decision-hook-20260711-110520.sh hook_syntax_ok=true -rwxr-xr-x 1 root root 270 Jul 11 11:05 /etc/init.d/router-egress-emergency-decision -rw-r--r-- 1 root root 575 Jul 11 11:05 /etc/router-egress-emergency-decision.conf -rwx------ 1 root root 1421 Jul 11 11:05 /root/rollback-step050g-emergency-decision-hook-20260711-110520.sh -rwxr-xr-x 1 root root 2511 Jul 11 11:05 /usr/local/sbin/router-egress-emergency-decision-hook.sh >>> VM101 [04/08] run real hook once before enabling service __HOOK_REAL_ONCE_BEFORE_SERVICE__ hook_real_once_json_begin { "schema": "router-egress-emergency-refresh-v1", "mode": "dry-run", "decision": "below_threshold_noop", "reason": "daily_fail_count_below_threshold", "daily_fail_count": 1, "daily_fail_threshold": 5, "threshold_reached": false, "force": false, "cooldown_seconds": 600, "cooldown_remaining": 0, "healthy_vpn_slots": 5, "commit_enabled": false, "direct_failopen_enabled": false, "direct_failopen_action": "disabled_not_allowed_in_step050f", "helper_ok": true, "refresh_cmd": "/root/hmn/hmn-refresh-pool-safe.sh", "refresh_cmd_exists": true, "planner_cmd": "/usr/local/sbin/router-egress-hmn-plan-top5.sh", "planner_cmd_exists": true, "rebalance_apply_cmd": "/usr/local/sbin/router-egress-hmn-rebalance-top5-apply.sh", "rebalance_apply_cmd_exists": true, "watcher_cmd": "/usr/local/sbin/router-egress-health-repair-watch.sh", "watcher_cmd_exists": true, "last_emergency_refresh_status": "NONE", "last_emergency_refresh_epoch": 0 } hook_real_once_json_end >>> VM101 [05/08] temp threshold test through hook, no production state mutation temp_counter_seeded=5 hook_temp_threshold_json_begin { "schema": "router-egress-emergency-refresh-v1", "mode": "dry-run", "decision": "would_run_emergency_refresh", "reason": "threshold_or_force_reached_no_commit_in_dry_run", "daily_fail_count": 5, "daily_fail_threshold": 5, "threshold_reached": true, "force": false, "cooldown_seconds": 600, "cooldown_remaining": 0, "healthy_vpn_slots": 5, "commit_enabled": false, "direct_failopen_enabled": false, "direct_failopen_action": "disabled_not_allowed_in_step050f", "helper_ok": true, "refresh_cmd": "/root/hmn/hmn-refresh-pool-safe.sh", "refresh_cmd_exists": true, "planner_cmd": "/usr/local/sbin/router-egress-hmn-plan-top5.sh", "planner_cmd_exists": true, "rebalance_apply_cmd": "/usr/local/sbin/router-egress-hmn-rebalance-top5-apply.sh", "rebalance_apply_cmd_exists": true, "watcher_cmd": "/usr/local/sbin/router-egress-health-repair-watch.sh", "watcher_cmd_exists": true, "last_emergency_refresh_status": "NONE", "last_emergency_refresh_epoch": 0 } hook_temp_threshold_json_end temp_state_removed=true >>> VM101 [06/08] enable/start dry-run decision hook service __HOOK_SERVICE_STATE__ hook_enabled=true hook_running=true hook_log_exists=true hook_last_state_exists=true hook_log_tail_begin 2026-07-11T11:05:20Z rc=0 { "schema": "router-egress-emergency-refresh-v1", "mode": "dry-run", "decision": "below_threshold_noop", "reason": "daily_fail_count_below_threshold", "daily_fail_count": 1, "daily_fail_threshold": 5, "threshold_reached": false, "force": false, "cooldown_seconds": 600, "cooldown_remaining": 0, "healthy_vpn_slots": 5, "commit_enabled": false, "direct_failopen_enabled": false, "direct_failopen_action": "disabled_not_allowed_in_step050f", "helper_ok": true, "refresh_cmd": "/root/hmn/hmn-refresh-pool-safe.sh", "refresh_cmd_exists": true, "planner_cmd": "/usr/local/sbin/router-egress-hmn-plan-top5.sh", "planner_cmd_exists": true, "rebalance_apply_cmd": "/usr/local/sbin/router-egress-hmn-rebalance-top5-apply.sh", "rebalance_apply_cmd_exists": true, "watcher_cmd": "/usr/local/sbin/router-egress-health-repair-watch.sh", "watcher_cmd_exists": true, "last_emergency_refresh_status": "NONE", "last_emergency_refresh_epoch": 0 } 2026-07-11T11:05:21Z rc=0 { "schema": "router-egress-emergency-refresh-v1", "mode": "dry-run", "decision": "below_threshold_noop", "reason": "daily_fail_count_below_threshold", "daily_fail_count": 1, "daily_fail_threshold": 5, "threshold_reached": false, "force": false, "cooldown_seconds": 600, "cooldown_remaining": 0, "healthy_vpn_slots": 5, "commit_enabled": false, "direct_failopen_enabled": false, "direct_failopen_action": "disabled_not_allowed_in_step050f", "helper_ok": true, "refresh_cmd": "/root/hmn/hmn-refresh-pool-safe.sh", "refresh_cmd_exists": true, "planner_cmd": "/usr/local/sbin/router-egress-hmn-plan-top5.sh", "planner_cmd_exists": true, "rebalance_apply_cmd": "/usr/local/sbin/router-egress-hmn-rebalance-top5-apply.sh", "rebalance_apply_cmd_exists": true, "watcher_cmd": "/usr/local/sbin/router-egress-health-repair-watch.sh", "watcher_cmd_exists": true, "last_emergency_refresh_status": "NONE", "last_emergency_refresh_epoch": 0 } hook_log_tail_end >>> VM101 [07/08] watcher/planner dry-run check __WATCHER_AND_PLANNER_READONLY__ watcher_json_begin { "schema": "router-egress-health-repair-watch-v2", "mode": "--dry-run", "run_mode": "once", "slots": [ {"slot":"egress1","iface":"vpn1","status_ok":true,"fail_count":0,"decision":"healthy","action":"none","required_confirm":""}, {"slot":"egress2","iface":"vpn2","status_ok":true,"fail_count":0,"decision":"healthy","action":"none","required_confirm":""}, {"slot":"egress3","iface":"vpn3","status_ok":true,"fail_count":0,"decision":"healthy","action":"none","required_confirm":""}, {"slot":"egress4","iface":"vpn4","status_ok":true,"fail_count":0,"decision":"healthy","action":"none","required_confirm":""}, {"slot":"egress5","iface":"vpn5","status_ok":true,"fail_count":0,"decision":"healthy","action":"none","required_confirm":""} ], "any_action": false } watcher_json_end planner_json_begin { "schema": "router-egress-hmn-plan-top5-v2", "decision": "plan_ok", "pool": "/root/hmn/cache/ok-awg1-strict-foreign-latest.tsv", "pool_mtime_epoch": 1783702742, "quarantine_enabled": true, "quarantine_excluded_count": 1, "duplicate_excluded_count": 0, "desired_count": 5, "changes_count": 1, "plan": [ {"slot":"egress1","iface":"vpn1","current":"178.215.227.13:44408","target":"178.215.227.13:44408","change":false,"target_rank":"4","target_avg_ms":"50.900"} , {"slot":"egress2","iface":"vpn2","current":"151.236.30.139:33998","target":"192.121.163.235:42530","change":true,"target_rank":"1","target_avg_ms":"39.008"} , {"slot":"egress3","iface":"vpn3","current":"95.211.68.119:45176","target":"95.211.68.119:45176","change":false,"target_rank":"2","target_avg_ms":"44.271"} , {"slot":"egress4","iface":"vpn4","current":"78.31.250.16:41729","target":"78.31.250.16:41729","change":false,"target_rank":"3","target_avg_ms":"50.697"} , {"slot":"egress5","iface":"vpn5","current":"157.173.27.69:41797","target":"157.173.27.69:41797","change":false,"target_rank":"5","target_avg_ms":"56.803"} ] } planner_json_end >>> VM101 [08/08] final safety state __POST_STATE__ endpoint_fingerprint_post=720e542d3d50d48894956385ba15d5e0573b4f45b7a00705b15c2ae7b9091a8a cron_fingerprint_post=d708ea7f7dfc73ad53172e27f08401321abc6beab0e7d86add033b808993bcea daily_counter_post=0 quarantine_lines_post=2 mode_post=UNKNOWN iface.vpn1.exists=true endpoint_post.vpn1=178.215.227.13:44408 strict.vpn1=true iface.vpn2.exists=true endpoint_post.vpn2=151.236.30.139:33998 strict.vpn2=true iface.vpn3.exists=true endpoint_post.vpn3=95.211.68.119:45176 strict.vpn3=true iface.vpn4.exists=true endpoint_post.vpn4=78.31.250.16:41729 strict.vpn4=true iface.vpn5.exists=true endpoint_post.vpn5=157.173.27.69:41797 strict.vpn5=true table201_has_route=true table202_has_route=true table203_has_route=true table204_has_route=true table205_has_route=true watcher_running=true watcher_enabled=true production_network_config_changed=false refresh_ran=false rebalance_apply_ran=false direct_failopen_enabled=false dryrun_hook_installed=true dryrun_hook_service_started=true