__HOST__ date_local=2026-07-11T09:19:48+00:00 date_utc=2026-07-11T09:19:48+00:00 __CRON_LINES__ cron_running=true hmn_refresh_0420_count=1 daily_rebalance_0440_count=1 __WATCHER_SERVICE__ watcher_enabled=true watcher_running=true watcher_process=12008 root 1244 S {router-egress-h} /bin/sh /usr/local/sbin/router-egress-health-repair-watch.sh| watcher_state_files=drwxr-xr-x 2 root root 200 Jul 11 09:19 .|drwxr-xr-x 4 root root 100 Jul 11 09:12 ..|-rw-r--r-- 1 root root 11 Jul 11 09:12 cooldown-egress2|-rw-r--r-- 1 root root 2 Jul 11 09:18 fail-egress1|-rw-r--r-- 1 root root 2 Jul 11 09:19 fail-egress2|-rw-r--r-- 1 root root 2 Jul 11 09:19 fail-egress3|-rw-r--r-- 1 root root 2 Jul 11 09:19 fail-egress4|-rw-r--r-- 1 root root 2 Jul 11 09:19 fail-egress5|-rw-r--r-- 1 root root 0 Jul 11 09:18 last.err|-rw-r--r-- 1 root root 789 Jul 11 09:19 last.json| __WATCHER_ONCE_DRYRUN_OBSERVE__ watcher_once_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_once_json_end __REBALANCE_DRYRUN_OBSERVE__ rebalance_json_begin { "schema": "router-egress-hmn-rebalance-top5-v1", "mode": "--dry-run", "decision": "plan_ok", "reason": "top5_pool_ready", "pool": "/root/hmn/cache/ok-awg1-strict-foreign-latest.tsv", "pool_age_sec": 58866, "pool_endpoint_count": 15, "top_count": 5, "changes_count": 1, "apply_performed": false, "apply_ok": true, "plan": [ {"slot":"egress1","iface":"vpn1","table":"201","mark":"0x201","dscp":"cs4","provider":"hidemyname","adapter":"hmn_pool_replace","current":"178.215.227.13:44408","target":"178.215.227.13:44408","change":false,"target_rank":"4","target_avg_ms":"50.900","target_file":"150-NL-Netherlands-Amsterdam-R5-178.215.227.13-awg1.conf"}, {"slot":"egress2","iface":"vpn2","table":"202","mark":"0x202","dscp":"cs5","provider":"hidemyname","adapter":"hmn_pool_replace","current":"109.248.198.4:37129","target":"192.121.163.235:42530","change":true,"target_rank":"1","target_avg_ms":"39.008","target_file":"128-LV-Latvia-Riga-S1-192.121.163.235-awg1.conf"}, {"slot":"egress3","iface":"vpn3","table":"203","mark":"0x203","dscp":"cs1","provider":"hidemyname","adapter":"hmn_pool_replace","current":"95.211.68.119:45176","target":"95.211.68.119:45176","change":false,"target_rank":"2","target_avg_ms":"44.271","target_file":"075-NL-Netherlands-Amsterdam-H13-95.211.68.119-awg1.conf"}, {"slot":"egress4","iface":"vpn4","table":"204","mark":"0x204","dscp":"cs2","provider":"hidemyname","adapter":"hmn_pool_replace","current":"78.31.250.16:41729","target":"78.31.250.16:41729","change":false,"target_rank":"3","target_avg_ms":"50.697","target_file":"072-NL-Netherlands-Amsterdam-S8-78.31.250.16-awg1.conf"}, {"slot":"egress5","iface":"vpn5","table":"205","mark":"0x205","dscp":"cs3","provider":"hidemyname","adapter":"hmn_pool_replace","current":"157.173.27.69:41797","target":"157.173.27.69:41797","change":false,"target_rank":"5","target_avg_ms":"56.803","target_file":"049-DE-Germany-Berlin-S7-157.173.27.69-awg1.conf"} ], "safety": {"commit_requires_confirm": true, "per_slot_strict_check": true, "per_slot_rollback": true} } rebalance_json_end __DISPATCHER_DRYRUN_EGRESS2_AFTER_REPAIR__ dispatcher_json_begin { "schema": "router-egress-recovery-dispatcher-v1", "mode": "--dry-run", "slot": "egress2", "reason_input": "post_repair_observe", "iface": "vpn2", "candidate_endpoint": "151.236.30.139:33998", "adapter_dryrun_decision": "dry_run_ok", "decision": "dry_run_ok", "reason": "dispatcher_ready", "apply_performed": false, "required_dispatch_confirm": "DISPATCH_egress2_151.236.30.139:33998", "safety": { "dry_run_no_uci_set": true, "dry_run_no_ifup_ifdown": true, "commit_requires_dispatch_confirm": true } } dispatcher_json_end __ENDPOINTS_AND_ROUTES__ iface.vpn1.exists=true endpoint.vpn1.current=178.215.227.13:44408 iface.vpn2.exists=true endpoint.vpn2.current=109.248.198.4:37129 iface.vpn3.exists=true endpoint.vpn3.current=95.211.68.119:45176 iface.vpn4.exists=true endpoint.vpn4.current=78.31.250.16:41729 iface.vpn5.exists=true endpoint.vpn5.current=157.173.27.69:41797 table201_has_route=true table202_has_route=true table203_has_route=true table204_has_route=true table205_has_route=true __STRICT_PINGS__ ping.vpn1.1.1.1.1.rc=0 ping.vpn1.1.1.1.1.received=3 ping.vpn1.8.8.8.8.rc=0 ping.vpn1.8.8.8.8.received=3 ping.vpn1.strict_ok=true ping.vpn2.1.1.1.1.rc=0 ping.vpn2.1.1.1.1.received=3 ping.vpn2.8.8.8.8.rc=0 ping.vpn2.8.8.8.8.received=3 ping.vpn2.strict_ok=true ping.vpn3.1.1.1.1.rc=0 ping.vpn3.1.1.1.1.received=3 ping.vpn3.8.8.8.8.rc=0 ping.vpn3.8.8.8.8.received=3 ping.vpn3.strict_ok=true ping.vpn4.1.1.1.1.rc=0 ping.vpn4.1.1.1.1.received=3 ping.vpn4.8.8.8.8.rc=0 ping.vpn4.8.8.8.8.received=3 ping.vpn4.strict_ok=true ping.vpn5.1.1.1.1.rc=0 ping.vpn5.1.1.1.1.received=3 ping.vpn5.8.8.8.8.rc=0 ping.vpn5.8.8.8.8.received=3 ping.vpn5.strict_ok=true __HEALTH_MONITOR__ health_service_enabled=true health_service_running=true health_overall_ok=true schema=router-egress-slot-health-v1 epoch=1783761575 iso=2026-07-11T09:19:35+00:00 mode=--dry-run slots_conf=/etc/router-egress-slots.d/slots.conf overall_ok=true enabled_count=5 good_count=5 bad_count=0 missing_count=0 slot.egress1.interface=vpn1 slot.egress1.table=201 slot.egress1.mark=0x201 slot.egress1.dscp=cs4 slot.egress1.provider=hidemyname slot.egress1.repair_adapter=hmn_pool_replace slot.egress1.iface_exists=true slot.egress1.route_ok=true slot.egress1.status=good slot.egress1.target_results=1.1.1.1,rc=0,recv=3,avg=53.564|8.8.8.8,rc=0,recv=3,avg=50.213| slot.egress1.fail_reasons= slot.egress2.interface=vpn2 slot.egress2.table=202 slot.egress2.mark=0x202 slot.egress2.dscp=cs5 slot.egress2.provider=hidemyname slot.egress2.repair_adapter=hmn_pool_replace slot.egress2.iface_exists=true slot.egress2.route_ok=true slot.egress2.status=good slot.egress2.target_results=1.1.1.1,rc=0,recv=3,avg=39.276|8.8.8.8,rc=0,recv=3,avg=39.240| slot.egress2.fail_reasons= slot.egress3.interface=vpn3 slot.egress3.table=203 slot.egress3.mark=0x203 slot.egress3.dscp=cs1 slot.egress3.provider=hidemyname slot.egress3.repair_adapter=hmn_pool_replace slot.egress3.iface_exists=true slot.egress3.route_ok=true slot.egress3.status=good slot.egress3.target_results=1.1.1.1,rc=0,recv=3,avg=50.681|8.8.8.8,rc=0,recv=3,avg=44.145| slot.egress3.fail_reasons= slot.egress4.interface=vpn4 slot.egress4.table=204 slot.egress4.mark=0x204 slot.egress4.dscp=cs2 slot.egress4.provider=hidemyname slot.egress4.repair_adapter=hmn_pool_replace slot.egress4.iface_exists=true slot.egress4.route_ok=true slot.egress4.status=good slot.egress4.target_results=1.1.1.1,rc=0,recv=3,avg=50.376|8.8.8.8,rc=0,recv=3,avg=49.996| slot.egress4.fail_reasons= slot.egress5.interface=vpn5 slot.egress5.table=205 slot.egress5.mark=0x205 slot.egress5.dscp=cs3 slot.egress5.provider=hidemyname slot.egress5.repair_adapter=hmn_pool_replace slot.egress5.iface_exists=true slot.egress5.route_ok=true slot.egress5.status=good slot.egress5.target_results=1.1.1.1,rc=0,recv=3,avg=59.129|8.8.8.8,rc=0,recv=3,avg=73.461| slot.egress5.fail_reasons= __RECENT_LOGS__ repair_log_tail_begin health_repair ts=2026-07-11T08:50:18+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:50:22+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:50:27+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:50:31+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:50:35+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:51:39+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:51:43+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:51:47+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:51:51+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:51:55+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:52:59+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:53:04+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:53:08+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:53:12+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:53:16+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:54:20+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:54:24+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:54:28+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:54:32+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:54:36+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:55:41+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:55:45+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:55:49+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:55:53+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:55:57+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:57:01+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:57:05+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:57:09+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:57:13+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:57:18+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:58:22+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:58:26+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:58:30+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:58:34+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:58:38+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:59:42+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:59:46+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:59:50+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:59:55+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T08:59:59+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:01:03+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:01:07+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:01:11+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:01:15+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:01:19+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:02:23+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:02:27+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:02:32+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:02:36+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:02:40+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:03:44+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:03:48+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:03:52+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:03:56+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:04:00+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:05:04+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:05:09+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:05:13+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:05:17+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:05:21+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:06:25+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:06:29+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:06:33+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:06:37+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:06:41+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:07:46+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:07:50+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:07:54+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:07:58+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:08:02+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:09:06+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:09:10+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:09:14+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:09:18+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:09:23+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:10:27+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:10:31+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:10:35+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:10:39+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:10:43+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:11:47+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:11:51+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:11:55+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:12:00+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:12:04+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:12:32+00:00 slot=egress2 iface=vpn2 status_ok=false fail_count=1 decision=fail_observed_below_threshold action=none mode=--commit run_mode=once health_repair ts=2026-07-11T09:12:48+00:00 slot=egress2 iface=vpn2 status_ok=false fail_count=2 decision=commit_ok action=commit_dispatch mode=--commit run_mode=once health_repair ts=2026-07-11T09:13:37+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:13:41+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:13:45+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:13:49+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:13:53+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:14:58+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:15:02+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:15:06+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:15:10+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:15:14+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:16:18+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:16:22+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:16:26+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:16:30+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:16:35+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:17:39+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:17:43+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:17:47+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:17:51+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:17:55+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:18:59+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:19:03+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:19:07+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:19:12+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:19:16+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:19:52+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--dry-run run_mode=once health_repair ts=2026-07-11T09:19:56+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--dry-run run_mode=once health_repair ts=2026-07-11T09:20:00+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--dry-run run_mode=once health_repair ts=2026-07-11T09:20:04+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none mode=--dry-run run_mode=once health_repair ts=2026-07-11T09:20:08+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none mode=--dry-run run_mode=once health_repair ts=2026-07-11T09:20:20+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:20:24+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop health_repair ts=2026-07-11T09:20:28+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=loop repair_log_tail_end rebalance_log_tail_begin rebalance_top5 ts=2026-07-11T08:22:08+00:00 mode=--dry-run decision=plan_ok reason=top5_pool_ready changes=0 apply=false rebalance_top5 ts=2026-07-11T08:22:08+00:00 mode=--commit decision=noop reason=already_top5 changes=0 apply=false rebalance_top5 ts=2026-07-11T08:30:59+00:00 mode=--dry-run decision=plan_ok reason=top5_pool_ready changes=0 apply=false rebalance_top5 ts=2026-07-11T09:20:08+00:00 mode=--dry-run decision=plan_ok reason=top5_pool_ready changes=1 apply=false rebalance_log_tail_end adapter_log_tail_begin router-egress-recovery-hmn ts=2026-07-10T16:29:35+00:00 slot=egress4 decision=refuse reason=stale_pool pool=/root/hmn/cache/ok-awg1-strict-foreign-latest.tsv age=215856 candidate= apply=false router-egress-recovery-hmn ts=2026-07-10T16:59:27+00:00 slot=egress4 decision=dry_run_ok reason=dry_run_candidate_selected pool=/root/hmn/cache/ok-awg1-strict-foreign-latest.tsv age=25 candidate=109.248.198.4:37129 apply=false router-egress-recovery-hmn ts=2026-07-10T17:27:14+00:00 slot=egress4 decision=dry_run_ok reason=dry_run_candidate_selected pool=/root/hmn/cache/ok-awg1-strict-foreign-latest.tsv age=1692 candidate=109.248.198.4:37129 apply=false router-egress-recovery-hmn ts=2026-07-10T17:36:08+00:00 slot=egress2 decision=dry_run_ok reason=dry_run_candidate_selected pool=/root/hmn/cache/ok-awg1-strict-foreign-latest.tsv age=2226 candidate=109.248.198.4:37129 apply=false router-egress-recovery-hmn ts=2026-07-10T17:42:28+00:00 slot=egress2 decision=dry_run_ok reason=dry_run_candidate_selected pool=/root/hmn/cache/ok-awg1-strict-foreign-latest.tsv age=2606 candidate=109.248.198.4:37129 apply=false router-egress-recovery-hmn ts=2026-07-10T17:48:04+00:00 slot=egress2 decision=dry_run_ok reason=dry_run_candidate_selected pool=/root/hmn/cache/ok-awg1-strict-foreign-latest.tsv age=2942 candidate=109.248.198.4:37129 apply=false router-egress-recovery-hmn ts=2026-07-10T17:54:24+00:00 slot=egress2 decision=dry_run_ok reason=dry_run_candidate_selected pool=/root/hmn/cache/ok-awg1-strict-foreign-latest.tsv age=3322 candidate=109.248.198.4:37129 apply=false router-egress-recovery-hmn ts=2026-07-10T18:00:07+00:00 slot=egress2 decision=dry_run_ok reason=dry_run_candidate_selected pool=/root/hmn/cache/ok-awg1-strict-foreign-latest.tsv age=3665 candidate=109.248.198.4:37129 apply=false router-egress-recovery-hmn ts=2026-07-10T18:07:13+00:00 slot=egress2 decision=dry_run_ok reason=dry_run_candidate_selected pool=/root/hmn/cache/ok-awg1-strict-foreign-latest.tsv age=4091 candidate=109.248.198.4:37129 apply=false router-egress-recovery-hmn ts=2026-07-10T18:12:27+00:00 slot=egress2 decision=dry_run_ok reason=dry_run_candidate_selected pool=/root/hmn/cache/ok-awg1-strict-foreign-latest.tsv age=4405 candidate=109.248.198.4:37129 apply=false router-egress-recovery-hmn ts=2026-07-10T18:16:55+00:00 slot=egress2 decision=dry_run_ok reason=dry_run_candidate_selected pool=/root/hmn/cache/ok-awg1-strict-foreign-latest.tsv age=4673 candidate=109.248.198.4:37129 apply=false router-egress-recovery-hmn ts=2026-07-10T18:24:07+00:00 slot=egress2 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-10T18:24:07+00:00 slot=egress2 mode=--commit decision=refuse reason=missing_or_wrong_confirm_token candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T07:22:56+00:00 slot=egress2 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T07:46:11+00:00 slot=egress2 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T07:49:38+00:00 slot=egress2 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T07:54:33+00:00 slot=egress1 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T07:54:33+00:00 slot=egress2 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T07:54:33+00:00 slot=egress3 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T07:54:33+00:00 slot=egress4 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T07:54:33+00:00 slot=egress5 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T08:13:39+00:00 slot=egress2 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T08:17:23+00:00 slot=egress2 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T08:22:12+00:00 slot=egress2 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T08:22:14+00:00 slot=egress3 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T08:22:16+00:00 slot=egress4 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T08:22:19+00:00 slot=egress5 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T08:48:53+00:00 slot=egress2 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T08:49:13+00:00 slot=egress2 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T09:12:27+00:00 slot=egress2 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T09:12:32+00:00 slot=egress2 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T09:12:32+00:00 slot=egress2 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T09:12:32+00:00 slot=egress2 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=109.248.198.4:37129 apply=false rollback= router-egress-recovery-hmn ts=2026-07-11T09:12:32+00:00 slot=egress2 mode=--commit decision=commit_ok reason=candidate_applied_and_strict_ok candidate=109.248.198.4:37129 apply=true KEYMASK-egress-recovery/backup-egress2-20260711-091232/rollback-egress2.sh router-egress-recovery-hmn ts=2026-07-11T09:20:08+00:00 slot=egress2 mode=--dry-run decision=dry_run_ok reason=dry_run_candidate_selected candidate=151.236.30.139:33998 apply=false rollback= adapter_log_tail_end __SUMMARY_KV__ observe_only=true production_modified_by_this_step=false checkpoint_requested=true