{
  "changes": {
    "backend_restart_done": "NO",
    "db_changed": "NO",
    "firewall_reload_done": "NO",
    "manager_invoked": "NO",
    "mapper_changed": "NO",
    "network_reload_done": "NO",
    "new_peer_created": "NO",
    "policy_changed": "NO",
    "private_material_published": "NO",
    "selector_changed": "NO",
    "wg_reload_done": "NO"
  },
  "jobs": {
    "bad_conflict": {
      "rc": 2,
      "result": {
        "action": "error",
        "apply_performed": false,
        "contract_valid": false,
        "error_count": 1,
        "errors": [
          "same_ip_conflict"
        ],
        "flattened_payload": {
          "dry_run": true,
          "fwmark": "0x202",
          "interface_name": "vpn2",
          "job_type": "create_peer",
          "manager_id": "hmn_pool",
          "peer_id": "DRY_RUN_BAD_PEER_ID",
          "provider_type": "hmn_amneziawg",
          "selector_class": "cs5",
          "selector_label": "canary_vpn2",
          "slot_code": "vpn2",
          "subscription_id": "DRY_RUN_BAD_SUBSCRIPTION_ID",
          "table_id": 202,
          "tunnel_ip": "10.253.1.13"
        },
        "idempotent_noop": false,
        "job": {
          "dry_run": true,
          "job_id": "DRY_RUN_BAD_CONFLICT_JOB",
          "job_type": "create_peer",
          "schema": "wg-access-agent-job-v1"
        },
        "mode": "dry-run",
        "schema": "wg-access-agent-job-selector-plan-v1",
        "selector_entry_count_after_planned": 4,
        "selector_entry_count_before": 4,
        "selector_helper": "/usr/local/sbin/wg-access-agent-selector-apply.py",
        "selector_plan": {
          "action": "error",
          "apply_performed": false,
          "contract_valid": false,
          "errors": [
            "same_ip_conflict"
          ],
          "exact_line": "10.253.1.13 cs5 canary_vpn2",
          "exact_present": false,
          "idempotent_noop": false,
          "mode": "dry-run",
          "payload_summary": {
            "fwmark": "0x202",
            "interface_name": "vpn2",
            "manager_id": "hmn_pool",
            "peer_id": "DRY_RUN_BAD_PEER_ID",
            "provider_type": "hmn_amneziawg",
            "selector_class": "cs5",
            "selector_label": "canary_vpn2",
            "slot_code": "vpn2",
            "subscription_id": "DRY_RUN_BAD_SUBSCRIPTION_ID",
            "table_id": 202,
            "tunnel_ip": "10.253.1.13"
          },
          "same_ip_conflict_count": 1,
          "same_selector_class_conflict_count": 0,
          "same_selector_label_conflict_count": 0,
          "schema": "wg-access-agent-selector-apply-plan-v1",
          "selector_entry_count_after_planned": 4,
          "selector_entry_count_before": 4,
          "slot_status": "healthy",
          "warnings": [],
          "would_append": false
        },
        "selector_plan_rc": 2,
        "selector_plan_stderr": "",
        "selector_plan_stdout": "{\n  \"action\": \"error\",\n  \"apply_performed\": false,\n  \"contract_valid\": false,\n  \"errors\": [\n    \"same_ip_conflict\"\n  ],\n  \"exact_line\": \"10.253.1.13 cs5 canary_vpn2\",\n  \"exact_present\": false,\n  \"idempotent_noop\": false,\n  \"mode\": \"dry-run\",\n  \"payload_summary\": {\n    \"fwmark\": \"0x202\",\n    \"interface_name\": \"vpn2\",\n    \"manager_id\": \"hmn_pool\",\n    \"peer_id\": \"DRY_RUN_BAD_PEER_ID\",\n    \"provider_type\": \"hmn_amneziawg\",\n    \"selector_class\": \"cs5\",\n    \"selector_label\": \"canary_vpn2\",\n    \"slot_code\": \"vpn2\",\n    \"subscription_id\": \"DRY_RUN_BAD_SUBSCRIPTION_ID\",\n    \"table_id\": 202,\n    \"tunnel_ip\": \"10.253.1.13\"\n  },\n  \"same_ip_conflict_count\": 1,\n  \"same_selector_class_conflict_count\": 0,\n  \"same_selector_label_conflict_count\": 0,\n  \"schema\": \"wg-access-agent-selector-apply-plan-v1\",\n  \"selector_entry_count_after_planned\": 4,\n  \"selector_entry_count_before\": 4,\n  \"slot_status\": \"healthy\",\n  \"warnings\": [],\n  \"would_append\": false\n}\n",
        "would_append": false
      }
    },
    "existing_cs4": {
      "rc": 0,
      "result": {
        "action": "noop",
        "apply_performed": false,
        "contract_valid": true,
        "error_count": 0,
        "errors": [],
        "flattened_payload": {
          "dry_run": true,
          "fwmark": "0x201",
          "interface_name": "vpn1",
          "job_type": "create_peer",
          "manager_id": "hmn_pool",
          "peer_id": "219a1f63-ec47-4f72-9663-c1a17d82301e",
          "provider_type": "hmn_amneziawg",
          "selector_class": "cs4",
          "selector_label": "canary_vpn1",
          "slot_code": "vpn1",
          "subscription_id": "b782fb4e-b43c-4b76-966e-28a145b80485",
          "table_id": 201,
          "tunnel_ip": "10.253.1.13"
        },
        "idempotent_noop": true,
        "job": {
          "dry_run": true,
          "job_id": "DRY_RUN_EXISTING_CS4_JOB",
          "job_type": "create_peer",
          "schema": "wg-access-agent-job-v1"
        },
        "mode": "dry-run",
        "schema": "wg-access-agent-job-selector-plan-v1",
        "selector_entry_count_after_planned": 4,
        "selector_entry_count_before": 4,
        "selector_helper": "/usr/local/sbin/wg-access-agent-selector-apply.py",
        "selector_plan": {
          "action": "noop",
          "apply_performed": false,
          "contract_valid": true,
          "errors": [],
          "exact_line": "10.253.1.13 cs4 canary_vpn1",
          "exact_present": true,
          "idempotent_noop": true,
          "mode": "dry-run",
          "payload_summary": {
            "fwmark": "0x201",
            "interface_name": "vpn1",
            "manager_id": "hmn_pool",
            "peer_id": "219a1f63-ec47-4f72-9663-c1a17d82301e",
            "provider_type": "hmn_amneziawg",
            "selector_class": "cs4",
            "selector_label": "canary_vpn1",
            "slot_code": "vpn1",
            "subscription_id": "b782fb4e-b43c-4b76-966e-28a145b80485",
            "table_id": 201,
            "tunnel_ip": "10.253.1.13"
          },
          "same_ip_conflict_count": 0,
          "same_selector_class_conflict_count": 0,
          "same_selector_label_conflict_count": 0,
          "schema": "wg-access-agent-selector-apply-plan-v1",
          "selector_entry_count_after_planned": 4,
          "selector_entry_count_before": 4,
          "slot_status": "healthy",
          "warnings": [],
          "would_append": false
        },
        "selector_plan_rc": 0,
        "selector_plan_stderr": "",
        "selector_plan_stdout": "{\n  \"action\": \"noop\",\n  \"apply_performed\": false,\n  \"contract_valid\": true,\n  \"errors\": [],\n  \"exact_line\": \"10.253.1.13 cs4 canary_vpn1\",\n  \"exact_present\": true,\n  \"idempotent_noop\": true,\n  \"mode\": \"dry-run\",\n  \"payload_summary\": {\n    \"fwmark\": \"0x201\",\n    \"interface_name\": \"vpn1\",\n    \"manager_id\": \"hmn_pool\",\n    \"peer_id\": \"219a1f63-ec47-4f72-9663-c1a17d82301e\",\n    \"provider_type\": \"hmn_amneziawg\",\n    \"selector_class\": \"cs4\",\n    \"selector_label\": \"canary_vpn1\",\n    \"slot_code\": \"vpn1\",\n    \"subscription_id\": \"b782fb4e-b43c-4b76-966e-28a145b80485\",\n    \"table_id\": 201,\n    \"tunnel_ip\": \"10.253.1.13\"\n  },\n  \"same_ip_conflict_count\": 0,\n  \"same_selector_class_conflict_count\": 0,\n  \"same_selector_label_conflict_count\": 0,\n  \"schema\": \"wg-access-agent-selector-apply-plan-v1\",\n  \"selector_entry_count_after_planned\": 4,\n  \"selector_entry_count_before\": 4,\n  \"slot_status\": \"healthy\",\n  \"warnings\": [],\n  \"would_append\": false\n}\n",
        "would_append": false
      }
    },
    "future_cs5": {
      "rc": 0,
      "result": {
        "action": "append",
        "apply_performed": false,
        "contract_valid": true,
        "error_count": 0,
        "errors": [],
        "flattened_payload": {
          "dry_run": true,
          "fwmark": "0x202",
          "interface_name": "vpn2",
          "job_type": "create_peer",
          "manager_id": "hmn_pool",
          "peer_id": "DRY_RUN_FUTURE_PEER_ID",
          "provider_type": "hmn_amneziawg",
          "selector_class": "cs5",
          "selector_label": "canary_vpn2",
          "slot_code": "vpn2",
          "subscription_id": "DRY_RUN_FUTURE_SUBSCRIPTION_ID",
          "table_id": 202,
          "tunnel_ip": "10.253.1.14"
        },
        "idempotent_noop": false,
        "job": {
          "dry_run": true,
          "job_id": "DRY_RUN_FUTURE_CS5_JOB",
          "job_type": "create_peer",
          "schema": "wg-access-agent-job-v1"
        },
        "mode": "dry-run",
        "schema": "wg-access-agent-job-selector-plan-v1",
        "selector_entry_count_after_planned": 5,
        "selector_entry_count_before": 4,
        "selector_helper": "/usr/local/sbin/wg-access-agent-selector-apply.py",
        "selector_plan": {
          "action": "append",
          "apply_performed": false,
          "contract_valid": true,
          "errors": [],
          "exact_line": "10.253.1.14 cs5 canary_vpn2",
          "exact_present": false,
          "idempotent_noop": false,
          "mode": "dry-run",
          "payload_summary": {
            "fwmark": "0x202",
            "interface_name": "vpn2",
            "manager_id": "hmn_pool",
            "peer_id": "DRY_RUN_FUTURE_PEER_ID",
            "provider_type": "hmn_amneziawg",
            "selector_class": "cs5",
            "selector_label": "canary_vpn2",
            "slot_code": "vpn2",
            "subscription_id": "DRY_RUN_FUTURE_SUBSCRIPTION_ID",
            "table_id": 202,
            "tunnel_ip": "10.253.1.14"
          },
          "same_ip_conflict_count": 0,
          "same_selector_class_conflict_count": 0,
          "same_selector_label_conflict_count": 0,
          "schema": "wg-access-agent-selector-apply-plan-v1",
          "selector_entry_count_after_planned": 5,
          "selector_entry_count_before": 4,
          "slot_status": "healthy",
          "warnings": [],
          "would_append": true
        },
        "selector_plan_rc": 0,
        "selector_plan_stderr": "",
        "selector_plan_stdout": "{\n  \"action\": \"append\",\n  \"apply_performed\": false,\n  \"contract_valid\": true,\n  \"errors\": [],\n  \"exact_line\": \"10.253.1.14 cs5 canary_vpn2\",\n  \"exact_present\": false,\n  \"idempotent_noop\": false,\n  \"mode\": \"dry-run\",\n  \"payload_summary\": {\n    \"fwmark\": \"0x202\",\n    \"interface_name\": \"vpn2\",\n    \"manager_id\": \"hmn_pool\",\n    \"peer_id\": \"DRY_RUN_FUTURE_PEER_ID\",\n    \"provider_type\": \"hmn_amneziawg\",\n    \"selector_class\": \"cs5\",\n    \"selector_label\": \"canary_vpn2\",\n    \"slot_code\": \"vpn2\",\n    \"subscription_id\": \"DRY_RUN_FUTURE_SUBSCRIPTION_ID\",\n    \"table_id\": 202,\n    \"tunnel_ip\": \"10.253.1.14\"\n  },\n  \"same_ip_conflict_count\": 0,\n  \"same_selector_class_conflict_count\": 0,\n  \"same_selector_label_conflict_count\": 0,\n  \"schema\": \"wg-access-agent-selector-apply-plan-v1\",\n  \"selector_entry_count_after_planned\": 5,\n  \"selector_entry_count_before\": 4,\n  \"slot_status\": \"healthy\",\n  \"warnings\": [],\n  \"would_append\": true\n}\n",
        "would_append": true
      }
    }
  },
  "mode": "AGENT_JOB_SELECTOR_PLAN_DRY_RUN",
  "previous": {
    "check_tool_exists_rc": 0,
    "prev040d2_check_rc": 1,
    "prev040d2_facts_rc": 0
  },
  "publish": {
    "local_index": "http://192.168.30.84:8099/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/",
    "published_dir": "/opt/router-ops/public/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260708-164313_step040e_agent_job_selector_plan_dry_run",
    "trycf_index": "https://maple-movie-urls-cigarettes.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/",
    "trycf_report": "https://maple-movie-urls-cigarettes.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260708-164313_step040e_agent_job_selector_plan_dry_run/"
  },
  "schema": "router-step-facts-v1",
  "step": "STEP_040E_AGENT_JOB_SELECTOR_PLAN_DRY_RUN",
  "vm100": {
    "selector_active_lines": [
      "10.253.1.10 cs1 canary_vpn3",
      "10.253.1.11 cs2 canary_vpn4",
      "10.253.1.12 cs3 canary_vpn5",
      "10.253.1.13 cs4 canary_vpn1"
    ],
    "vm100_cs4_peer_visible_rc": 0,
    "vm100_selector_active_entry_count": 4,
    "vm100_selector_conf_exists_rc": 0,
    "vm100_selector_cs4_present_rc": 0,
    "vm100_selector_cs5_present_rc": 1,
    "vm100_wg_paid_peer_count": 4
  },
  "vm101": {
    "slots": {
      "vpn1": {
        "fwmark": "0x201",
        "interface_name": "vpn1",
        "label": "canary_vpn1",
        "selector_class": "cs4",
        "status": "healthy",
        "table_id": 201
      },
      "vpn2": {
        "fwmark": "0x202",
        "interface_name": "vpn2",
        "label": "canary_vpn2",
        "selector_class": "cs5",
        "status": "healthy",
        "table_id": 202
      },
      "vpn3": {
        "fwmark": "0x203",
        "interface_name": "vpn3",
        "label": "canary_vpn3",
        "selector_class": "cs1",
        "status": "healthy",
        "table_id": 203
      },
      "vpn4": {
        "fwmark": "0x204",
        "interface_name": "vpn4",
        "label": "canary_vpn4",
        "selector_class": "cs2",
        "status": "healthy",
        "table_id": 204
      },
      "vpn5": {
        "fwmark": "0x205",
        "interface_name": "vpn5",
        "label": "canary_vpn5",
        "selector_class": "cs3",
        "status": "healthy",
        "table_id": 205
      }
    },
    "vm101_slot_registry_exists_rc": 0,
    "vm101_status_json_parse_rc": 0,
    "vm101_status_run_rc": 0,
    "vm101_status_schema": "router-egress-slots-status-v1",
    "vm101_status_slot_count": 5,
    "vm101_status_tool_exists_rc": 0
  },
  "vm121": {
    "install": {
      "vm121_backup_dir": "/root/router-ops-backups/STEP_040E_AGENT_JOB_SELECTOR_PLAN_20260708-164316",
      "vm121_rollback_create_rc": 0,
      "vm121_rollback_path": "/root/rollback-step040e-agent-job-selector-plan.sh",
      "vm121_selector_helper_exists_rc": 0,
      "vm121_wrapper_backup_rc": 0,
      "vm121_wrapper_exists_rc": 0,
      "vm121_wrapper_install_rc": 0,
      "vm121_wrapper_path": "/usr/local/sbin/wg-access-agent-job-selector-plan.py"
    }
  }
}
