__PRE_STATE__ backup_dir=/root/step049g2-ifdown-sim-20260711-091216 rollback=/root/rollback-step049g2-ifdown-sim-20260711-091216.sh slot=egress2 iface=vpn2 original_endpoint=192.121.163.235:42530 endpoint_fingerprint_pre=31a8aab0c70b81cf8055c95c13f9f97cc4987e1cacddc89622c9e63518ab3b91 watcher_running_pre=true watcher_process_pre=31811 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_ifdown_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_IFDOWN__ endpoint_after_ifdown=192.121.163.235:42530 iface_after_ifdown_exists=false iface_after_ifdown_operstate=missing table202_after_ifdown_has_route=false ping.vpn2.1.1.1.1.rc=1 ping.vpn2.1.1.1.1.received=0 ping.vpn2.8.8.8.8.rc=1 ping.vpn2.8.8.8.8.received=0 ping.vpn2.strict_ok=false broken_vpn2_strict_ok=false __DISPATCHER_AFTER_IFDOWN_DRYRUN__ dispatcher_after_ifdown_json_begin { "schema": "router-egress-recovery-dispatcher-v1", "mode": "--dry-run", "slot": "egress2", "reason_input": "after_ifdown_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_ifdown_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":false,"fail_count":1,"decision":"fail_observed_below_threshold","action":"none","required_confirm":""} ], "any_action": false } watcher_cycle1_json_end fail_count_after_cycle1=1 endpoint_after_cycle1=192.121.163.235:42530 iface_after_cycle1_exists=false __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":false,"fail_count":2,"decision":"commit_ok","action":"commit_dispatch","required_confirm":"DISPATCH_egress2_109.248.198.4:37129"} ], "any_action": true } watcher_cycle2_json_end fail_count_after_cycle2=0 endpoint_after_cycle2=109.248.198.4:37129 iface_after_cycle2_exists=true __POST_REPAIR_VERIFY__ repaired_endpoint=109.248.198.4:37129 repaired_endpoint_equals_original=false iface_post_exists=true iface_post_operstate=unknown 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=false auto_rollback_performed=false __RESTART_BACKGROUND_WATCHER__ watcher_enabled_post=true watcher_running_post=true watcher_process_post=12008 root 1240 S {router-egress-h} /bin/sh /usr/local/sbin/router-egress-health-repair-watch.sh| __FINAL_STATE__ final_endpoint=109.248.198.4:37129 endpoint_fingerprint_post=7398c52bdd06da0d7e1a03769e49d0859fdf58b153278a5f8a63a4e9b50fa53b 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 __RECENT_REPAIR_LOG__ 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 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 __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= 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 __SUMMARY_KV__ simulation_performed=true slot_broken_intentionally=true break_method=ifdown repair_watcher_cycles_executed=true production_modified_by_this_step=true expected_modified_slot=egress2