{
  "$schema": "https://ontarionightsky.com/schemas/near-snapshot.v1.json",
  "version": "1.0",
  "generatedAt": "2026-08-15T02:05:10.472Z",
  "snapshotMeta": {
    "schemaVersion": "1.0",
    "tieBreakVersion": "2.0.0",
    "metricsVersion": "1.2.0",
    "ladder": [
      "verdictRank (desc)",
      "windowHours (desc)",
      "windowMeanCloudPct (asc)",
      "tonightMinCloudPct (asc)",
      "tonightMeanCloudPct (asc)",
      "bortle (asc — darker wins)",
      "distanceKm (asc)"
    ],
    "changelog": [
      {
        "version": "1.2.0",
        "date": "2026-04-26",
        "type": "metrics",
        "summary": "Added `tieBreakComparisons[]` to each item: per-step a/b values, equality flag, winner, and `decidedBy` marker for the rule that broke the tie."
      },
      {
        "version": "2.0.0",
        "date": "2026-04-26",
        "type": "tieBreak",
        "summary": "Replaced verdict+distance-only ranking with 7-level ladder (verdict, window length, window cloud, min/mean cloud, bortle, distance)."
      },
      {
        "version": "1.1.0",
        "date": "2026-04-26",
        "type": "metrics",
        "summary": "Added per-site `tieBreak` block (windowHours, windowMeanCloudPct, tonightMinCloudPct, tonightMeanCloudPct, bortle) for transparency."
      },
      {
        "version": "1.0.0",
        "date": "2026-04-25",
        "type": "schema",
        "summary": "Initial near-snapshot.v1 schema with bestTonight + closestSites[]."
      }
    ],
    "docs": "https://ontarionightsky.com/llms.txt"
  },
  "city": {
    "id": "atlanta",
    "name": "Atlanta",
    "region": "Northern GA",
    "lat": 33.749,
    "lon": -84.388,
    "population": 6100000
  },
  "page": {
    "url": "https://ontarionightsky.com/near/atlanta/",
    "html": "https://ontarionightsky.com/near/atlanta/",
    "json": "https://ontarionightsky.com/near/atlanta/snapshot.json"
  },
  "tieBreakLadder": [
    "verdictRank (desc)",
    "windowHours (desc)",
    "windowMeanCloudPct (asc)",
    "tonightMinCloudPct (asc)",
    "tonightMeanCloudPct (asc)",
    "bortle (asc — darker wins)",
    "distanceKm (asc)"
  ],
  "bestTonight": {
    "siteId": "stephen-foster-sp",
    "name": "Stephen Foster SP",
    "distanceKm": 376.6,
    "bortle": 2,
    "url": "https://ontarionightsky.com/site/stephen-foster-sp/",
    "forecastUrl": "https://ontarionightsky.com/?site=stephen-foster-sp",
    "tonight": {
      "date": "2026-08-14T20:12",
      "nightStartIso": "2026-08-14T20:12",
      "nightEndIso": "2026-08-15T06:55",
      "moonPhase": "New moon",
      "moonIlluminationPct": 2,
      "verdict": "Excellent",
      "verdictReason": "7h of clear sky (≤30% cloud) during tonight's astronomical night, mean cloud 23%.",
      "confidence": "High",
      "meanCloudPct": 23,
      "minCloudPct": 1,
      "bestWindow": {
        "startIso": "2026-08-15T00:00:00.000Z",
        "endIso": "2026-08-15T06:00:00.000Z",
        "hours": 7,
        "meanCloudPct": 5
      }
    },
    "tieBreak": {
      "verdict": "Excellent",
      "verdictRank": 5,
      "windowHours": 7,
      "windowMeanCloudPct": 5,
      "tonightMinCloudPct": 1,
      "tonightMeanCloudPct": 23,
      "bortle": 2,
      "distanceKm": 376.6
    },
    "tieBreakComparisons": [
      {
        "vsSiteId": "pisgah-astronomical-research-institute",
        "vsName": "PARI",
        "steps": [
          {
            "field": "verdictRank",
            "direction": "desc",
            "a": 5,
            "b": 4,
            "equal": false,
            "winner": "a",
            "decidedBy": true
          },
          {
            "field": "windowHours",
            "direction": "desc",
            "a": 7,
            "b": 3,
            "equal": false,
            "winner": "a",
            "decidedBy": false
          },
          {
            "field": "windowMeanCloudPct",
            "direction": "asc",
            "a": 5,
            "b": 6,
            "equal": false,
            "winner": "a",
            "decidedBy": false
          },
          {
            "field": "tonightMinCloudPct",
            "direction": "asc",
            "a": 1,
            "b": 1,
            "equal": true,
            "winner": null,
            "decidedBy": false
          },
          {
            "field": "tonightMeanCloudPct",
            "direction": "asc",
            "a": 23,
            "b": 39,
            "equal": false,
            "winner": "a",
            "decidedBy": false
          },
          {
            "field": "bortle",
            "direction": "asc",
            "a": 2,
            "b": 3,
            "equal": false,
            "winner": "a",
            "decidedBy": false
          },
          {
            "field": "distanceKm",
            "direction": "asc",
            "a": 376.6,
            "b": 213.3,
            "equal": false,
            "winner": "b",
            "decidedBy": false
          }
        ]
      },
      {
        "vsSiteId": "mayland-earth-sky",
        "vsName": "Mayland Earth to Sky",
        "steps": [
          {
            "field": "verdictRank",
            "direction": "desc",
            "a": 5,
            "b": 3,
            "equal": false,
            "winner": "a",
            "decidedBy": true
          },
          {
            "field": "windowHours",
            "direction": "desc",
            "a": 7,
            "b": 2,
            "equal": false,
            "winner": "a",
            "decidedBy": false
          },
          {
            "field": "windowMeanCloudPct",
            "direction": "asc",
            "a": 5,
            "b": 0,
            "equal": false,
            "winner": "b",
            "decidedBy": false
          },
          {
            "field": "tonightMinCloudPct",
            "direction": "asc",
            "a": 1,
            "b": 0,
            "equal": false,
            "winner": "b",
            "decidedBy": false
          },
          {
            "field": "tonightMeanCloudPct",
            "direction": "asc",
            "a": 23,
            "b": 48,
            "equal": false,
            "winner": "a",
            "decidedBy": false
          },
          {
            "field": "bortle",
            "direction": "asc",
            "a": 2,
            "b": 3,
            "equal": false,
            "winner": "a",
            "decidedBy": false
          },
          {
            "field": "distanceKm",
            "direction": "asc",
            "a": 376.6,
            "b": 311.5,
            "equal": false,
            "winner": "b",
            "decidedBy": false
          }
        ]
      },
      {
        "vsSiteId": "staunton-river-sp",
        "vsName": "Staunton River",
        "steps": [
          {
            "field": "verdictRank",
            "direction": "desc",
            "a": 5,
            "b": 3,
            "equal": false,
            "winner": "a",
            "decidedBy": true
          },
          {
            "field": "windowHours",
            "direction": "desc",
            "a": 7,
            "b": 2,
            "equal": false,
            "winner": "a",
            "decidedBy": false
          },
          {
            "field": "windowMeanCloudPct",
            "direction": "asc",
            "a": 5,
            "b": 9,
            "equal": false,
            "winner": "a",
            "decidedBy": false
          },
          {
            "field": "tonightMinCloudPct",
            "direction": "asc",
            "a": 1,
            "b": 6,
            "equal": false,
            "winner": "a",
            "decidedBy": false
          },
          {
            "field": "tonightMeanCloudPct",
            "direction": "asc",
            "a": 23,
            "b": 72,
            "equal": false,
            "winner": "a",
            "decidedBy": false
          },
          {
            "field": "bortle",
            "direction": "asc",
            "a": 2,
            "b": 3,
            "equal": false,
            "winner": "a",
            "decidedBy": false
          },
          {
            "field": "distanceKm",
            "direction": "asc",
            "a": 376.6,
            "b": 613.5,
            "equal": false,
            "winner": "a",
            "decidedBy": false
          }
        ]
      }
    ]
  },
  "closestSites": [
    {
      "rank": 1,
      "siteId": "pisgah-astronomical-research-institute",
      "name": "PARI",
      "region": "Western NC",
      "bortle": 3,
      "lat": 35.2,
      "lon": -82.8667,
      "distanceKm": 213.3,
      "url": "https://ontarionightsky.com/site/pisgah-astronomical-research-institute/",
      "forecastUrl": "https://ontarionightsky.com/?site=pisgah-astronomical-research-institute",
      "snapshotUrl": "https://ontarionightsky.com/sites/pisgah-astronomical-research-institute.snapshot.json",
      "tonight": {
        "date": "2026-08-14T20:21",
        "nightStartIso": "2026-08-14T20:21",
        "nightEndIso": "2026-08-15T06:51",
        "moonPhase": "New moon",
        "moonIlluminationPct": 2,
        "verdict": "Good",
        "verdictReason": "3h clear window during astronomical night, mean cloud 39%.",
        "confidence": "High",
        "meanCloudPct": 39,
        "minCloudPct": 1,
        "bestWindow": {
          "startIso": "2026-08-14T22:00:00.000Z",
          "endIso": "2026-08-15T00:00:00.000Z",
          "hours": 3,
          "meanCloudPct": 6
        }
      },
      "tieBreak": {
        "verdict": "Good",
        "verdictRank": 4,
        "windowHours": 3,
        "windowMeanCloudPct": 6,
        "tonightMinCloudPct": 1,
        "tonightMeanCloudPct": 39,
        "bortle": 3,
        "distanceKm": 213.3
      },
      "tieBreakComparisons": [
        {
          "vsSiteId": "mayland-earth-sky",
          "vsName": "Mayland Earth to Sky",
          "steps": [
            {
              "field": "verdictRank",
              "direction": "desc",
              "a": 4,
              "b": 3,
              "equal": false,
              "winner": "a",
              "decidedBy": true
            },
            {
              "field": "windowHours",
              "direction": "desc",
              "a": 3,
              "b": 2,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "windowMeanCloudPct",
              "direction": "asc",
              "a": 6,
              "b": 0,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "tonightMinCloudPct",
              "direction": "asc",
              "a": 1,
              "b": 0,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "tonightMeanCloudPct",
              "direction": "asc",
              "a": 39,
              "b": 48,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "bortle",
              "direction": "asc",
              "a": 3,
              "b": 3,
              "equal": true,
              "winner": null,
              "decidedBy": false
            },
            {
              "field": "distanceKm",
              "direction": "asc",
              "a": 213.3,
              "b": 311.5,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            }
          ]
        },
        {
          "vsSiteId": "stephen-foster-sp",
          "vsName": "Stephen Foster SP",
          "steps": [
            {
              "field": "verdictRank",
              "direction": "desc",
              "a": 4,
              "b": 5,
              "equal": false,
              "winner": "b",
              "decidedBy": true
            },
            {
              "field": "windowHours",
              "direction": "desc",
              "a": 3,
              "b": 7,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "windowMeanCloudPct",
              "direction": "asc",
              "a": 6,
              "b": 5,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "tonightMinCloudPct",
              "direction": "asc",
              "a": 1,
              "b": 1,
              "equal": true,
              "winner": null,
              "decidedBy": false
            },
            {
              "field": "tonightMeanCloudPct",
              "direction": "asc",
              "a": 39,
              "b": 23,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "bortle",
              "direction": "asc",
              "a": 3,
              "b": 2,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "distanceKm",
              "direction": "asc",
              "a": 213.3,
              "b": 376.6,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            }
          ]
        },
        {
          "vsSiteId": "staunton-river-sp",
          "vsName": "Staunton River",
          "steps": [
            {
              "field": "verdictRank",
              "direction": "desc",
              "a": 4,
              "b": 3,
              "equal": false,
              "winner": "a",
              "decidedBy": true
            },
            {
              "field": "windowHours",
              "direction": "desc",
              "a": 3,
              "b": 2,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "windowMeanCloudPct",
              "direction": "asc",
              "a": 6,
              "b": 9,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "tonightMinCloudPct",
              "direction": "asc",
              "a": 1,
              "b": 6,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "tonightMeanCloudPct",
              "direction": "asc",
              "a": 39,
              "b": 72,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "bortle",
              "direction": "asc",
              "a": 3,
              "b": 3,
              "equal": true,
              "winner": null,
              "decidedBy": false
            },
            {
              "field": "distanceKm",
              "direction": "asc",
              "a": 213.3,
              "b": 613.5,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            }
          ]
        }
      ]
    },
    {
      "rank": 2,
      "siteId": "mayland-earth-sky",
      "name": "Mayland Earth to Sky",
      "region": "Western NC",
      "bortle": 3,
      "lat": 35.9333,
      "lon": -82.25,
      "distanceKm": 311.5,
      "url": "https://ontarionightsky.com/site/mayland-earth-sky/",
      "forecastUrl": "https://ontarionightsky.com/?site=mayland-earth-sky",
      "snapshotUrl": "https://ontarionightsky.com/sites/mayland-earth-sky.snapshot.json",
      "tonight": {
        "date": "2026-08-14T20:20",
        "nightStartIso": "2026-08-14T20:20",
        "nightEndIso": "2026-08-15T06:47",
        "moonPhase": "New moon",
        "moonIlluminationPct": 2,
        "verdict": "Fair",
        "verdictReason": "Short 2h window, otherwise mean cloud 48%. Worth a look if you're nearby.",
        "confidence": "Medium",
        "meanCloudPct": 48,
        "minCloudPct": 0,
        "bestWindow": {
          "startIso": "2026-08-15T03:00:00.000Z",
          "endIso": "2026-08-15T04:00:00.000Z",
          "hours": 2,
          "meanCloudPct": 0
        }
      },
      "tieBreak": {
        "verdict": "Fair",
        "verdictRank": 3,
        "windowHours": 2,
        "windowMeanCloudPct": 0,
        "tonightMinCloudPct": 0,
        "tonightMeanCloudPct": 48,
        "bortle": 3,
        "distanceKm": 311.5
      },
      "tieBreakComparisons": [
        {
          "vsSiteId": "pisgah-astronomical-research-institute",
          "vsName": "PARI",
          "steps": [
            {
              "field": "verdictRank",
              "direction": "desc",
              "a": 3,
              "b": 4,
              "equal": false,
              "winner": "b",
              "decidedBy": true
            },
            {
              "field": "windowHours",
              "direction": "desc",
              "a": 2,
              "b": 3,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "windowMeanCloudPct",
              "direction": "asc",
              "a": 0,
              "b": 6,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "tonightMinCloudPct",
              "direction": "asc",
              "a": 0,
              "b": 1,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "tonightMeanCloudPct",
              "direction": "asc",
              "a": 48,
              "b": 39,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "bortle",
              "direction": "asc",
              "a": 3,
              "b": 3,
              "equal": true,
              "winner": null,
              "decidedBy": false
            },
            {
              "field": "distanceKm",
              "direction": "asc",
              "a": 311.5,
              "b": 213.3,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            }
          ]
        },
        {
          "vsSiteId": "stephen-foster-sp",
          "vsName": "Stephen Foster SP",
          "steps": [
            {
              "field": "verdictRank",
              "direction": "desc",
              "a": 3,
              "b": 5,
              "equal": false,
              "winner": "b",
              "decidedBy": true
            },
            {
              "field": "windowHours",
              "direction": "desc",
              "a": 2,
              "b": 7,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "windowMeanCloudPct",
              "direction": "asc",
              "a": 0,
              "b": 5,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "tonightMinCloudPct",
              "direction": "asc",
              "a": 0,
              "b": 1,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "tonightMeanCloudPct",
              "direction": "asc",
              "a": 48,
              "b": 23,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "bortle",
              "direction": "asc",
              "a": 3,
              "b": 2,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "distanceKm",
              "direction": "asc",
              "a": 311.5,
              "b": 376.6,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            }
          ]
        },
        {
          "vsSiteId": "staunton-river-sp",
          "vsName": "Staunton River",
          "steps": [
            {
              "field": "verdictRank",
              "direction": "desc",
              "a": 3,
              "b": 3,
              "equal": true,
              "winner": null,
              "decidedBy": false
            },
            {
              "field": "windowHours",
              "direction": "desc",
              "a": 2,
              "b": 2,
              "equal": true,
              "winner": null,
              "decidedBy": false
            },
            {
              "field": "windowMeanCloudPct",
              "direction": "asc",
              "a": 0,
              "b": 9,
              "equal": false,
              "winner": "a",
              "decidedBy": true
            },
            {
              "field": "tonightMinCloudPct",
              "direction": "asc",
              "a": 0,
              "b": 6,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "tonightMeanCloudPct",
              "direction": "asc",
              "a": 48,
              "b": 72,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "bortle",
              "direction": "asc",
              "a": 3,
              "b": 3,
              "equal": true,
              "winner": null,
              "decidedBy": false
            },
            {
              "field": "distanceKm",
              "direction": "asc",
              "a": 311.5,
              "b": 613.5,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            }
          ]
        }
      ]
    },
    {
      "rank": 3,
      "siteId": "stephen-foster-sp",
      "name": "Stephen Foster SP",
      "region": "Okefenokee, GA",
      "bortle": 2,
      "lat": 30.8333,
      "lon": -82.35,
      "distanceKm": 376.6,
      "url": "https://ontarionightsky.com/site/stephen-foster-sp/",
      "forecastUrl": "https://ontarionightsky.com/?site=stephen-foster-sp",
      "snapshotUrl": "https://ontarionightsky.com/sites/stephen-foster-sp.snapshot.json",
      "tonight": {
        "date": "2026-08-14T20:12",
        "nightStartIso": "2026-08-14T20:12",
        "nightEndIso": "2026-08-15T06:55",
        "moonPhase": "New moon",
        "moonIlluminationPct": 2,
        "verdict": "Excellent",
        "verdictReason": "7h of clear sky (≤30% cloud) during tonight's astronomical night, mean cloud 23%.",
        "confidence": "High",
        "meanCloudPct": 23,
        "minCloudPct": 1,
        "bestWindow": {
          "startIso": "2026-08-15T00:00:00.000Z",
          "endIso": "2026-08-15T06:00:00.000Z",
          "hours": 7,
          "meanCloudPct": 5
        }
      },
      "tieBreak": {
        "verdict": "Excellent",
        "verdictRank": 5,
        "windowHours": 7,
        "windowMeanCloudPct": 5,
        "tonightMinCloudPct": 1,
        "tonightMeanCloudPct": 23,
        "bortle": 2,
        "distanceKm": 376.6
      },
      "tieBreakComparisons": [
        {
          "vsSiteId": "pisgah-astronomical-research-institute",
          "vsName": "PARI",
          "steps": [
            {
              "field": "verdictRank",
              "direction": "desc",
              "a": 5,
              "b": 4,
              "equal": false,
              "winner": "a",
              "decidedBy": true
            },
            {
              "field": "windowHours",
              "direction": "desc",
              "a": 7,
              "b": 3,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "windowMeanCloudPct",
              "direction": "asc",
              "a": 5,
              "b": 6,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "tonightMinCloudPct",
              "direction": "asc",
              "a": 1,
              "b": 1,
              "equal": true,
              "winner": null,
              "decidedBy": false
            },
            {
              "field": "tonightMeanCloudPct",
              "direction": "asc",
              "a": 23,
              "b": 39,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "bortle",
              "direction": "asc",
              "a": 2,
              "b": 3,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "distanceKm",
              "direction": "asc",
              "a": 376.6,
              "b": 213.3,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            }
          ]
        },
        {
          "vsSiteId": "mayland-earth-sky",
          "vsName": "Mayland Earth to Sky",
          "steps": [
            {
              "field": "verdictRank",
              "direction": "desc",
              "a": 5,
              "b": 3,
              "equal": false,
              "winner": "a",
              "decidedBy": true
            },
            {
              "field": "windowHours",
              "direction": "desc",
              "a": 7,
              "b": 2,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "windowMeanCloudPct",
              "direction": "asc",
              "a": 5,
              "b": 0,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "tonightMinCloudPct",
              "direction": "asc",
              "a": 1,
              "b": 0,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "tonightMeanCloudPct",
              "direction": "asc",
              "a": 23,
              "b": 48,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "bortle",
              "direction": "asc",
              "a": 2,
              "b": 3,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "distanceKm",
              "direction": "asc",
              "a": 376.6,
              "b": 311.5,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            }
          ]
        },
        {
          "vsSiteId": "staunton-river-sp",
          "vsName": "Staunton River",
          "steps": [
            {
              "field": "verdictRank",
              "direction": "desc",
              "a": 5,
              "b": 3,
              "equal": false,
              "winner": "a",
              "decidedBy": true
            },
            {
              "field": "windowHours",
              "direction": "desc",
              "a": 7,
              "b": 2,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "windowMeanCloudPct",
              "direction": "asc",
              "a": 5,
              "b": 9,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "tonightMinCloudPct",
              "direction": "asc",
              "a": 1,
              "b": 6,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "tonightMeanCloudPct",
              "direction": "asc",
              "a": 23,
              "b": 72,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "bortle",
              "direction": "asc",
              "a": 2,
              "b": 3,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            },
            {
              "field": "distanceKm",
              "direction": "asc",
              "a": 376.6,
              "b": 613.5,
              "equal": false,
              "winner": "a",
              "decidedBy": false
            }
          ]
        }
      ]
    },
    {
      "rank": 4,
      "siteId": "staunton-river-sp",
      "name": "Staunton River",
      "region": "Southern VA",
      "bortle": 3,
      "lat": 36.6833,
      "lon": -78.6667,
      "distanceKm": 613.5,
      "url": "https://ontarionightsky.com/site/staunton-river-sp/",
      "forecastUrl": "https://ontarionightsky.com/?site=staunton-river-sp",
      "snapshotUrl": "https://ontarionightsky.com/sites/staunton-river-sp.snapshot.json",
      "tonight": {
        "date": "2026-08-14T20:07",
        "nightStartIso": "2026-08-14T20:07",
        "nightEndIso": "2026-08-15T06:32",
        "moonPhase": "New moon",
        "moonIlluminationPct": 2,
        "verdict": "Fair",
        "verdictReason": "Short 2h window, otherwise mean cloud 72%. Worth a look if you're nearby.",
        "confidence": "Medium",
        "meanCloudPct": 72,
        "minCloudPct": 6,
        "bestWindow": {
          "startIso": "2026-08-14T23:00:00.000Z",
          "endIso": "2026-08-15T00:00:00.000Z",
          "hours": 2,
          "meanCloudPct": 9
        }
      },
      "tieBreak": {
        "verdict": "Fair",
        "verdictRank": 3,
        "windowHours": 2,
        "windowMeanCloudPct": 9,
        "tonightMinCloudPct": 6,
        "tonightMeanCloudPct": 72,
        "bortle": 3,
        "distanceKm": 613.5
      },
      "tieBreakComparisons": [
        {
          "vsSiteId": "pisgah-astronomical-research-institute",
          "vsName": "PARI",
          "steps": [
            {
              "field": "verdictRank",
              "direction": "desc",
              "a": 3,
              "b": 4,
              "equal": false,
              "winner": "b",
              "decidedBy": true
            },
            {
              "field": "windowHours",
              "direction": "desc",
              "a": 2,
              "b": 3,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "windowMeanCloudPct",
              "direction": "asc",
              "a": 9,
              "b": 6,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "tonightMinCloudPct",
              "direction": "asc",
              "a": 6,
              "b": 1,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "tonightMeanCloudPct",
              "direction": "asc",
              "a": 72,
              "b": 39,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "bortle",
              "direction": "asc",
              "a": 3,
              "b": 3,
              "equal": true,
              "winner": null,
              "decidedBy": false
            },
            {
              "field": "distanceKm",
              "direction": "asc",
              "a": 613.5,
              "b": 213.3,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            }
          ]
        },
        {
          "vsSiteId": "mayland-earth-sky",
          "vsName": "Mayland Earth to Sky",
          "steps": [
            {
              "field": "verdictRank",
              "direction": "desc",
              "a": 3,
              "b": 3,
              "equal": true,
              "winner": null,
              "decidedBy": false
            },
            {
              "field": "windowHours",
              "direction": "desc",
              "a": 2,
              "b": 2,
              "equal": true,
              "winner": null,
              "decidedBy": false
            },
            {
              "field": "windowMeanCloudPct",
              "direction": "asc",
              "a": 9,
              "b": 0,
              "equal": false,
              "winner": "b",
              "decidedBy": true
            },
            {
              "field": "tonightMinCloudPct",
              "direction": "asc",
              "a": 6,
              "b": 0,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "tonightMeanCloudPct",
              "direction": "asc",
              "a": 72,
              "b": 48,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "bortle",
              "direction": "asc",
              "a": 3,
              "b": 3,
              "equal": true,
              "winner": null,
              "decidedBy": false
            },
            {
              "field": "distanceKm",
              "direction": "asc",
              "a": 613.5,
              "b": 311.5,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            }
          ]
        },
        {
          "vsSiteId": "stephen-foster-sp",
          "vsName": "Stephen Foster SP",
          "steps": [
            {
              "field": "verdictRank",
              "direction": "desc",
              "a": 3,
              "b": 5,
              "equal": false,
              "winner": "b",
              "decidedBy": true
            },
            {
              "field": "windowHours",
              "direction": "desc",
              "a": 2,
              "b": 7,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "windowMeanCloudPct",
              "direction": "asc",
              "a": 9,
              "b": 5,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "tonightMinCloudPct",
              "direction": "asc",
              "a": 6,
              "b": 1,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "tonightMeanCloudPct",
              "direction": "asc",
              "a": 72,
              "b": 23,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "bortle",
              "direction": "asc",
              "a": 3,
              "b": 2,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            },
            {
              "field": "distanceKm",
              "direction": "asc",
              "a": 613.5,
              "b": 376.6,
              "equal": false,
              "winner": "b",
              "decidedBy": false
            }
          ]
        }
      ]
    }
  ],
  "attribution": {
    "source": "Ontario Night Sky",
    "license": "CC-BY-4.0 — please link back to https://ontarionightsky.com",
    "data": {
      "weather": "Open-Meteo (cloud, smoke, moon, AQI)",
      "aurora": "NOAA SWPC"
    }
  }
}