{
  "assessment": {
    "all_ok": true,
    "decision": "PASS_STEP_048D_ARCH_GENERIC_SLOT_HEALTH_RECOVERY_DESIGN",
    "success_checks": {
      "all_current_health_ok": true,
      "all_current_interfaces_exist": true,
      "current_slot_model_has_five_slots": true,
      "generic_slot_model_ready": true,
      "health_layer_generic": true,
      "hmn_adapter_candidate_present": true,
      "hmn_has_pool_list": true,
      "hmn_has_refresh": true,
      "hmn_has_slot_replace": true,
      "hmn_has_speed_rank": true,
      "mapper_rules_present": true,
      "recovery_layer_separate": true,
      "vm100_controller_v7_running": true,
      "vm100_crosscheck_rc_zero": true,
      "vm100_peers_five": true,
      "vm101_inventory_rc_zero": true,
      "vm121_agent_points_to_vm100": true,
      "vm121_crosscheck_rc_zero": true,
      "vm121_db_pending_zero": true
    },
    "warnings": [
      "Read-only architecture/inventory step only.",
      "No monitor installed, no services changed, no routes changed, no provider configs changed.",
      "Health monitor must remain generic; recovery must be provider-specific."
    ]
  },
  "mode": "READONLY_ARCHITECTURE_GENERIC_SLOT_HEALTH_PROVIDER_RECOVERY",
  "proposed_contracts": {
    "generic_health_monitor": {
      "does": [
        "strict health probes",
        "status good/bad/degraded",
        "write status/log"
      ],
      "does_not": [
        "replace tunnels",
        "restart provider",
        "modify routes",
        "modify VM100 selector"
      ]
    },
    "hmn_pool_replace_adapter": {
      "does": [
        "choose unused alive/ranked HMN tunnel",
        "replace failed slot interface",
        "keep table/mark/slot stable",
        "strict-test replacement"
      ]
    },
    "recovery_dispatcher": {
      "does": [
        "read bad slot status",
        "apply cooldown",
        "call provider adapter"
      ],
      "does_not": [
        "implement provider-specific config logic"
      ]
    }
  },
  "publish": {
    "facts_json": "https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260710-134352_step048d_arch_generic_slot_health_recovery_design/facts.json",
    "report_txt": "https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260710-134352_step048d_arch_generic_slot_health_recovery_design/report.txt",
    "trycf_report": "https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260710-134352_step048d_arch_generic_slot_health_recovery_design/"
  },
  "schema": "router-step-facts-v1",
  "step": "STEP_048D_ARCH_GENERIC_SLOT_HEALTH_RECOVERY_DESIGN",
  "summary": {
    "architecture_decision": "generic_health_monitor_over_egress_slots_with_provider_specific_recovery_adapters",
    "current_provider": "hidemyname",
    "current_repair_adapter": "hmn_pool_replace",
    "health_monitor_scope": "any_interface_or_slot_vpn_openvpn_wireguard_wan_future_provider",
    "health_ok": {
      "vpn1": "true",
      "vpn2": "true",
      "vpn3": "true",
      "vpn4": "true",
      "vpn5": "true"
    },
    "hmn_adapter_candidate_present": "true",
    "next_step": "install_generic_slot_health_monitor_dryrun_using_slot_config_not_vpn1_vpn5_hardcode",
    "old_primary_hot_model_refs_present": "true",
    "recovery_scope": "dispatcher_plus_provider_adapter_not_health_monitor",
    "slot_summary": {
      "egress1": {
        "dscp": "cs4",
        "iface": "vpn1",
        "iface_exists": "true",
        "mark": "0x201",
        "operstate": "unknown",
        "provider": "hidemyname",
        "repair_adapter": "hmn_pool_replace",
        "route_count": "1",
        "table": "201"
      },
      "egress2": {
        "dscp": "cs5",
        "iface": "vpn2",
        "iface_exists": "true",
        "mark": "0x202",
        "operstate": "unknown",
        "provider": "hidemyname",
        "repair_adapter": "hmn_pool_replace",
        "route_count": "1",
        "table": "202"
      },
      "egress3": {
        "dscp": "cs1",
        "iface": "vpn3",
        "iface_exists": "true",
        "mark": "0x203",
        "operstate": "unknown",
        "provider": "hidemyname",
        "repair_adapter": "hmn_pool_replace",
        "route_count": "1",
        "table": "203"
      },
      "egress4": {
        "dscp": "cs2",
        "iface": "vpn4",
        "iface_exists": "true",
        "mark": "0x204",
        "operstate": "unknown",
        "provider": "hidemyname",
        "repair_adapter": "hmn_pool_replace",
        "route_count": "1",
        "table": "204"
      },
      "egress5": {
        "dscp": "cs3",
        "iface": "vpn5",
        "iface_exists": "true",
        "mark": "0x205",
        "operstate": "unknown",
        "provider": "hidemyname",
        "repair_adapter": "hmn_pool_replace",
        "route_count": "1",
        "table": "205"
      }
    }
  }
}
