__PRE_STATE__ backup_dir=/root/step049g-failure-sim-20260711-084842 rollback=/root/rollback-step049g-failure-sim-20260711-084842.sh slot=egress2 iface=vpn2 original_endpoint=192.121.163.235:42530 bad_endpoint=192.0.2.1:1 endpoint_fingerprint_pre=31a8aab0c70b81cf8055c95c13f9f97cc4987e1cacddc89622c9e63518ab3b91 watcher_running_pre=true watcher_process_pre=21474 root 1244 S {router-egress-h} /bin/sh /usr/local/sbin/router-egress-health-repair-watch.sh| __STOP_BACKGROUND_WATCHER_FOR_DETERMINISTIC_SIM__ watcher_running_after_stop=false watcher_process_after_stop= __CLEAR_TEST_STATE__ state_cleared=true __BASELINE_HEALTH__ 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 baseline_vpn2_strict_ok=true __DISPATCHER_BASELINE_DRYRUN__ dispatcher_baseline_json_begin { "schema": "router-egress-recovery-dispatcher-v1", "mode": "--dry-run", "slot": "egress2", "reason_input": "pre_failure_baseline", "iface": "vpn2", "candidate_endpoint": "109.248.198.4:37129", "adapter_dryrun_decision": "dry_run_ok", "decision": "dry_run_ok", "reason": "dispatcher_ready", "apply_performed": false, "required_dispatch_confirm": "DISPATCH_egress2_109.248.198.4:37129", "safety": { "dry_run_no_uci_set": true, "dry_run_no_ifup_ifdown": true, "commit_requires_dispatch_confirm": true } } dispatcher_baseline_json_end __BREAK_SLOT_WITH_BAD_ENDPOINT__ uci_bad_endpoint_set=true endpoint_after_break=192.0.2.1:1 iface_after_break_exists=true table202_after_break_has_route=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 broken_vpn2_strict_ok=true __DISPATCHER_AFTER_BREAK_DRYRUN__ dispatcher_after_break_json_begin { "schema": "router-egress-recovery-dispatcher-v1", "mode": "--dry-run", "slot": "egress2", "reason_input": "after_bad_endpoint_break", "iface": "vpn2", "candidate_endpoint": "109.248.198.4:37129", "adapter_dryrun_decision": "dry_run_ok", "decision": "dry_run_ok", "reason": "dispatcher_ready", "apply_performed": false, "required_dispatch_confirm": "DISPATCH_egress2_109.248.198.4:37129", "safety": { "dry_run_no_uci_set": true, "dry_run_no_ifup_ifdown": true, "commit_requires_dispatch_confirm": true } } dispatcher_after_break_json_end __WATCHER_CYCLE_1_EXPECT_FAIL_BELOW_THRESHOLD__ watcher_cycle1_json_begin { "schema": "router-egress-health-repair-watch-v2", "mode": "--commit", "run_mode": "once", "slots": [ {"slot":"egress2","iface":"vpn2","status_ok":true,"fail_count":0,"decision":"healthy","action":"none","required_confirm":""} ], "any_action": false } watcher_cycle1_json_end fail_count_after_cycle1=0 endpoint_after_cycle1=192.0.2.1:1 __WATCHER_CYCLE_2_EXPECT_REPAIR_COMMIT__ watcher_cycle2_json_begin { "schema": "router-egress-health-repair-watch-v2", "mode": "--commit", "run_mode": "once", "slots": [ {"slot":"egress2","iface":"vpn2","status_ok":true,"fail_count":0,"decision":"healthy","action":"none","required_confirm":""} ], "any_action": false } watcher_cycle2_json_end fail_count_after_cycle2=0 endpoint_after_cycle2=192.0.2.1:1 __POST_REPAIR_VERIFY__ repaired_endpoint=192.0.2.1:1 repaired_endpoint_is_bad=true repaired_endpoint_equals_original=false iface_post_exists=true table202_post_has_route=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 post_vpn2_strict_ok=true __ALL_SLOTS_STRICT_POST__ 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 __AUTO_ROLLBACK_IF_NEEDED__ repair_failed_detected=true rollback_done=true auto_rollback_performed=true __RESTART_BACKGROUND_WATCHER__ watcher_enabled_post=true watcher_running_post=true watcher_process_post=31811 root 1240 S {router-egress-h} /bin/sh /usr/local/sbin/router-egress-health-repair-watch.sh| __FINAL_STATE__ final_endpoint=192.121.163.235:42530 endpoint_fingerprint_post=31a8aab0c70b81cf8055c95c13f9f97cc4987e1cacddc89622c9e63518ab3b91 iface.vpn1.exists=true endpoint.vpn1.current=178.215.227.13:44408 iface.vpn2.exists=true endpoint.vpn2.current=192.121.163.235:42530 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 __RECENT_REPAIR_LOG__ health_repair ts=2026-07-11T08:22:09+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:22:10+00:00 slot=egress1 iface=vpn1 status_ok=false fail_count=1 decision=fail_observed_below_threshold action=none health_repair ts=2026-07-11T08:22:11+00:00 slot=egress2 iface=vpn2 status_ok=false fail_count=1 decision=fail_observed_below_threshold action=none health_repair ts=2026-07-11T08:22:12+00:00 slot=egress2 iface=vpn2 status_ok=false fail_count=2 decision=dry_run_ok action=dry_run_dispatch health_repair ts=2026-07-11T08:22:13+00:00 slot=egress3 iface=vpn3 status_ok=false fail_count=1 decision=fail_observed_below_threshold action=none health_repair ts=2026-07-11T08:22:14+00:00 slot=egress3 iface=vpn3 status_ok=false fail_count=2 decision=dry_run_ok action=dry_run_dispatch health_repair ts=2026-07-11T08:22:15+00:00 slot=egress4 iface=vpn4 status_ok=false fail_count=1 decision=fail_observed_below_threshold action=none health_repair ts=2026-07-11T08:22:17+00:00 slot=egress4 iface=vpn4 status_ok=false fail_count=2 decision=dry_run_ok action=dry_run_dispatch health_repair ts=2026-07-11T08:22:17+00:00 slot=egress5 iface=vpn5 status_ok=false fail_count=1 decision=fail_observed_below_threshold action=none health_repair ts=2026-07-11T08:22:19+00:00 slot=egress5 iface=vpn5 status_ok=false fail_count=2 decision=dry_run_ok action=dry_run_dispatch health_repair ts=2026-07-11T08:23:22+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:23:26+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:23:30+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:23:34+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:23:38+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:24:42+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:24:46+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:24:50+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:24:54+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:24:58+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:26:03+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:26:07+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:26:11+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:26:15+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:26:19+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:27:23+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:27:27+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:27:31+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:27:35+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:27:40+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:28:44+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:28:48+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:28:52+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:28:56+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:29:00+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:30:04+00:00 slot=egress1 iface=vpn1 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:30:08+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:30:12+00:00 slot=egress3 iface=vpn3 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:30:17+00:00 slot=egress4 iface=vpn4 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:30:21+00:00 slot=egress5 iface=vpn5 status_ok=true fail_count=0 decision=healthy action=none health_repair ts=2026-07-11T08:30:22+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-11T08:30:26+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-11T08:30:30+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-11T08:30:34+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-11T08:30:39+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-11T08:31: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-11T08:31: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-11T08:31: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-11T08:31:16+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:31:20+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:32:24+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:32:28+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:32: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-11T08:32: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-11T08:32: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-11T08:33: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-11T08:33: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-11T08:33:53+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:33:57+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:34:01+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:35:05+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:35: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-11T08:35: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-11T08:35: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-11T08:35: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-11T08:36: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-11T08:36:30+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:36:34+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:36:38+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:36:42+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:37: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-11T08:37: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-11T08:37: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-11T08:37: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-11T08:38: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-11T08:39:07+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:39:11+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:39:15+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:39:19+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:39: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-11T08:40: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-11T08:40: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-11T08:40: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-11T08:40: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-11T08:40:44+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:41:48+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:41:52+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:41:56+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:42: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-11T08:42: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-11T08:43:08+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:43:12+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:43:16+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:43:20+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:43:25+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:44:29+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:44:33+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:44:37+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:44:41+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:44:45+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:45:49+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:45:53+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:45:58+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:46:02+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:46:06+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:47:10+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:47:14+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:47:18+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:47:22+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:47:26+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:48:30+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:48:35+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:48:39+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:48:43+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:49:17+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=once health_repair ts=2026-07-11T08:49:21+00:00 slot=egress2 iface=vpn2 status_ok=true fail_count=0 decision=healthy action=none mode=--commit run_mode=once __RECENT_ADAPTER_LOG__ 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= __SUMMARY_KV__ simulation_performed=true slot_broken_intentionally=true repair_watcher_cycles_executed=true production_modified_by_this_step=true expected_modified_slot=egress2