{
  "schedule": {
    "expected_run_utc": "2026-07-12T04:20:00+00:00",
    "expected_run_amsterdam": "2026-07-12T06:20:00+02:00",
    "snapshot_epoch": 1783840226,
    "snapshot_after_schedule": true
  },
  "scheduled_refresh": {
    "observed": false,
    "pool_written_after_schedule": false,
    "refresh_log_evidence": [
      "2026-07-12T04:20:00+00:00 === hmn-refresh-pool-safe start ===",
      "2026-07-12T04:20:00+00:00 mode=fresh-download",
      "2026-07-12T04:20:00+00:00 log=/root/hmn/logs/refresh-pool-safe-20260712-042000-16148.log",
      "2026-07-12T04:20:00+00:00 backup=/root/hmn/backups/refresh-safe-before-20260712-042000-16148",
      "2026-07-12T04:20:00+00:00 trying fresh HMN download via: /root/hmn/hmn-download-all-awg.sh",
      "2026-07-12T04:20:00+00:00 fresh_download_rc=1",
      "2026-07-12T04:20:00+00:00 fresh download failed/unavailable rc=1",
      "2026-07-12T04:20:00+00:00 fallback: keep old configs/latest and validate current local pool through vpn_test",
      "2026-07-12T04:20:06+00:00 validate_current_pool_rc=1",
      "2026-07-12T04:20:06+00:00 rollback: restoring published pointers/tables from /root/hmn/backups/refresh-safe-before-20260712-042000-16148",
      "2026-07-12T04:20:06+00:00 retry-needed set: fresh_download_failed_and_old_pool_validation_failed_rc_1"
    ],
    "failure_log_evidence": [
      "2026-07-12T04:20:00+00:00 fresh download failed/unavailable rc=1",
      "2026-07-12T04:20:06+00:00 old/current pool validation failed; rolling back published tables",
      "2026-07-12T04:20:06+00:00 rollback: restoring published pointers/tables from /root/hmn/backups/refresh-safe-before-20260712-042000-16148",
      "2026-07-12T04:20:06+00:00 rollback WARN: no usable old latest target",
      "2026-07-12T04:20:06+00:00 retry-needed set: fresh_download_failed_and_old_pool_validation_failed_rc_1"
    ],
    "egress1_failure_evidence": []
  },
  "endpoints": {
    "changes": {
      "vpn1": {
        "before": "109.248.198.4:37129",
        "after": "109.248.198.4:37129",
        "changed": false
      },
      "vpn2": {
        "before": "151.236.30.139:33998",
        "after": "151.236.30.139:33998",
        "changed": false
      },
      "vpn3": {
        "before": "95.211.68.119:45176",
        "after": "95.211.68.119:45176",
        "changed": false
      },
      "vpn4": {
        "before": "178.215.227.13:44408",
        "after": "157.173.25.198:34340",
        "changed": true
      },
      "vpn5": {
        "before": "157.173.27.69:41797",
        "after": "157.173.27.69:41797",
        "changed": false
      }
    },
    "changed_interfaces": [
      "vpn4"
    ],
    "target_after": {
      "vpn1": "192.121.163.235:42530",
      "vpn2": "37.235.54.96:38971",
      "vpn3": "95.211.68.119:45176",
      "vpn4": "192.71.244.202:45735",
      "vpn5": "157.173.27.69:41797"
    }
  },
  "pool": {
    "before": {
      "sha256": "b9fd15bfe7aa2337048cbf7198c798e74e67e9b2f6e6040fb3c2138084378599",
      "rows": 15,
      "mtime_epoch": 1783702742,
      "latest_generation": "/root/hmn/configs/awg1/20260711-205609"
    },
    "after": {
      "sha256": "b9fd15bfe7aa2337048cbf7198c798e74e67e9b2f6e6040fb3c2138084378599",
      "rows": 15,
      "mtime_epoch": 1783702742,
      "latest_generation": "/root/hmn/configs/awg1/20260711-205609"
    },
    "changed": false,
    "generation_changed": false
  },
  "planner": {
    "before_changes_count": 3,
    "after_decision": "plan_ok",
    "after_changes_count": 3,
    "after_plan": [
      {
        "slot": "egress1",
        "iface": "vpn1",
        "current": "109.248.198.4:37129",
        "target": "192.121.163.235:42530",
        "change": true,
        "target_rank": "1",
        "target_avg_ms": "39.008"
      },
      {
        "slot": "egress2",
        "iface": "vpn2",
        "current": "151.236.30.139:33998",
        "target": "37.235.54.96:38971",
        "change": true,
        "target_rank": "7",
        "target_avg_ms": "62.926"
      },
      {
        "slot": "egress3",
        "iface": "vpn3",
        "current": "95.211.68.119:45176",
        "target": "95.211.68.119:45176",
        "change": false,
        "target_rank": "2",
        "target_avg_ms": "44.271"
      },
      {
        "slot": "egress4",
        "iface": "vpn4",
        "current": "157.173.25.198:34340",
        "target": "192.71.244.202:45735",
        "change": true,
        "target_rank": "8",
        "target_avg_ms": "66.349"
      },
      {
        "slot": "egress5",
        "iface": "vpn5",
        "current": "157.173.27.69:41797",
        "target": "157.173.27.69:41797",
        "change": false,
        "target_rank": "5",
        "target_avg_ms": "56.803"
      }
    ]
  },
  "state": {
    "before": {
      "mode": "NORMAL",
      "status": "refresh_ok_rebalance_ok",
      "epoch": 1783803369,
      "repair_counter": 16,
      "commit_raw": "true"
    },
    "after": {
      "mode": "NORMAL",
      "status": "refresh_ok_rebalance_ok",
      "epoch": 1783803369,
      "repair_counter": 0,
      "commit_raw": "true"
    },
    "changes": {
      "mode": {
        "before": "NORMAL",
        "after": "NORMAL",
        "changed": false
      },
      "status": {
        "before": "refresh_ok_rebalance_ok",
        "after": "refresh_ok_rebalance_ok",
        "changed": false
      },
      "epoch": {
        "before": 1783803369,
        "after": 1783803369,
        "changed": false
      },
      "repair_counter": {
        "before": 16,
        "after": 0,
        "changed": true
      },
      "commit_raw": {
        "before": "true",
        "after": "true",
        "changed": false
      }
    }
  },
  "health": {
    "checks": {
      "five_current_endpoints": true,
      "five_strict_slots": true,
      "routes_201_205": true,
      "services_running_enabled": true,
      "locks_absent": true,
      "cron_still_present": true,
      "read_only_snapshot": true
    },
    "all_ok": true,
    "strict_after": {
      "vpn1": true,
      "vpn2": true,
      "vpn3": true,
      "vpn4": true,
      "vpn5": true
    }
  },
  "classification": "SCHEDULED_REFRESH_STARTED_BUT_POOL_UPDATE_NOT_PROVEN"
}
