{
  "assessment": {
    "all_ok": true,
    "decision": "PASS_STEP_048H_HMN_RECOVERY_ADAPTER_DRYRUN_STALE_POOL_GUARD",
    "success_checks": {
      "adapter_installed": true,
      "dryrun_only": true,
      "manual_adapter_hmn_pool_replace": true,
      "manual_apply_false": true,
      "manual_provider_hmn": true,
      "manual_rc_zero": true,
      "manual_refuses_stale_pool": true,
      "manual_schema_v1": true,
      "manual_slot_egress4": true,
      "prod_fingerprint_unchanged": true,
      "stale_pool_guard_present": true,
      "vm100_controller_v7_running": true,
      "vm100_crosscheck_rc_zero": true,
      "vm100_peers_five": true,
      "vm101_rc_zero": true,
      "vm121_agent_points_to_vm100": true,
      "vm121_crosscheck_rc_zero": true,
      "vm121_db_enabled_peers_five": true,
      "vm121_db_pending_zero": true
    },
    "warnings": [
      "Adapter is dry-run/status-only.",
      "It refuses stale pool and performs no recovery.",
      "No ifup/ifdown, no uci set, no wg set, no route changes, no VM100/VM121 changes.",
      "Actual recovery apply remains future work after fresh pool refresh is repaired."
    ]
  },
  "manual_run": {
    "adapter": "hmn_pool_replace",
    "apply_performed": false,
    "candidate_endpoint": "",
    "current_endpoint": "78.31.250.16:41729",
    "decision": "refuse",
    "epoch": 1783700975,
    "interface": "vpn4",
    "iso": "2026-07-10T16:29:35+00:00",
    "mark": "0x204",
    "max_pool_age_sec": 129600,
    "mode": "--dry-run",
    "pool_is_fresh": false,
    "provider": "hidemyname",
    "reason": "stale_pool",
    "safety": {
      "no_ifup_ifdown": true,
      "no_route_change": true,
      "no_uci_set": true,
      "no_vm100_change": true,
      "no_wg_set": true
    },
    "schema": "router-egress-recovery-hmn-pool-replace-v1",
    "selected_pool": "/root/hmn/cache/ok-awg1-strict-foreign-latest.tsv",
    "selected_pool_age_sec": 215856,
    "selected_pool_endpoint_count": 15,
    "slot": "egress4",
    "table": "204",
    "unused_candidate_count": 10
  },
  "mode": "INSTALL_HMN_RECOVERY_ADAPTER_DRYRUN_WITH_STALE_POOL_GUARD",
  "publish": {
    "facts_json": "https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260710-162934_step048h_hmn_recovery_adapter_dryrun_stale_pool_guard/facts.json",
    "report_txt": "https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260710-162934_step048h_hmn_recovery_adapter_dryrun_stale_pool_guard/report.txt",
    "trycf_report": "https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260710-162934_step048h_hmn_recovery_adapter_dryrun_stale_pool_guard/"
  },
  "schema": "router-step-facts-v1",
  "step": "STEP_048H_HMN_RECOVERY_ADAPTER_DRYRUN_STALE_POOL_GUARD",
  "summary": {
    "adapter_sha256": "6b035c0938ec38c336ee395990f1568446b0679d506744d6624b4460c2f31b48",
    "conf_sha256": "06edf5229337c02f732dda33f301aaf14b94e1c22c6856c9b18537882a17f6e9",
    "manual_apply_performed": false,
    "manual_candidate_endpoint": "",
    "manual_current_endpoint": "78.31.250.16:41729",
    "manual_decision": "refuse",
    "manual_interface": "vpn4",
    "manual_max_pool_age_sec": 129600,
    "manual_pool_is_fresh": false,
    "manual_reason": "stale_pool",
    "manual_selected_pool": "/root/hmn/cache/ok-awg1-strict-foreign-latest.tsv",
    "manual_selected_pool_age_sec": 215856,
    "manual_slot": "egress4",
    "next_step": "controlled_fresh_pool_refresh_window_or_checkpoint_before_refresh",
    "prod_fingerprint_unchanged": true,
    "rollback": "/root/rollback-step048h-hmn-recovery-adapter-20260710-162934.sh",
    "vm100_peer_count": "5",
    "vm121_db_summary": {
      "enabled_peers": 5,
      "lease_rows": 5,
      "pending_jobs": 0
    }
  }
}
