STEP_049E install planner and dispatcher no hook

=== STEP_049E RESULT ===
step=STEP_049E_INSTALL_REBALANCE_PLANNER_AND_REPAIR_DISPATCHER_NO_HOOK
decision=PASS_STEP_049E_INSTALL_REBALANCE_PLANNER_AND_REPAIR_DISPATCHER_NO_HOOK
all_ok=True

summary:
  backup_dir=/root/step049e-planner-dispatcher-20260711-081722
  rollback=/root/rollback-step049e-planner-dispatcher-20260711-081722.sh
  planner_decision=plan_ok
  planner_pool=/root/hmn/cache/ok-awg1-strict-foreign-latest.tsv
  planner_pool_age_sec=55101
  planner_changes_count=0
  planner_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': '192.121.163.235:42530', 'target': '192.121.163.235:42530', 'change': False, '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'}]
  dispatcher_decision=dry_run_ok
  dispatcher_candidate=109.248.198.4:37129
  dispatcher_required_confirm=DISPATCH_egress2_109.248.198.4:37129
  endpoint_fingerprint_unchanged=True
  cache_fingerprint_unchanged=True
  prod_strict_ok={'vpn1': 'true', 'vpn2': 'true', 'vpn3': 'true', 'vpn4': 'true', 'vpn5': 'true'}
  vm100_peer_count=5
  vm121_db_summary={'enabled_peers': 5, 'lease_rows': 5, 'pending_jobs': 0}
  next_step=install_daily_rebalance_apply_runner_or_health_hook_after_reviewing_planner_plan

success_checks:
  vm101_rc_zero=True
  planner_installed=True
  dispatcher_installed=True
  plan_script_exists=True
  dispatcher_exists=True
  plan_syntax_ok=True
  dispatcher_syntax_ok=True
  planner_dryrun_ok=True
  planner_has_five_top_targets=True
  dispatcher_dryrun_ok=True
  daily_hook_not_installed=True
  health_hook_not_installed=True
  refresh_not_executed=True
  apply_not_executed=True
  production_not_modified=True
  endpoint_fingerprint_unchanged=True
  cache_fingerprint_unchanged=True
  all_interfaces_exist=True
  all_tables_have_routes=True
  prod_strict_all_ok=True
  vm100_peer_count_five=True
  vm100_controller_running=True
  vm121_db_pending_zero=True

next_step=INSTALL_DAILY_REBALANCE_APPLY_RUNNER_OR_HEALTH_HOOK_AFTER_REVIEWING_PLANNER_PLAN
TRYCF_REPORT=https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260711-081722_step049e_install_rebalance_planner_and_repair_dispatcher_no_hook/
REPORT_TXT=https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260711-081722_step049e_install_rebalance_planner_and_repair_dispatcher_no_hook/report.txt
FACTS_JSON=https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260711-081722_step049e_install_rebalance_planner_and_repair_dispatcher_no_hook/facts.json