{
  "version": "1.0.0",
  "canonicalOwner": "https://sunsettoday.app",
  "year": 2026,
  "scope": "Six existing US city-centre coordinates; all 365 local sunset dates in 2026; no additional locations.",
  "engine": "SunCalc 1.9.0",
  "thresholdDegrees": {
    "sunset": -0.833,
    "civilEnd": -6,
    "nauticalEnd": -12,
    "astronomicalEnd": -18
  },
  "heightMetres": 0,
  "dateSelection": "20:00 UTC on each calendar date identifies the intended solar cycle for all six US city centres. Every sunset's local calendar date is checked against its input date. All twilight events remain attached to that sunset even if an event crosses local midnight.",
  "timeZones": "Existing IANA identifiers. Each UTC instant is converted separately, preserving the full local calendar date; no fixed UTC offsets. Durations are UTC elapsed intervals and do not change when the display time zone changes.",
  "rounding": "CSV event instants retain milliseconds; interval columns round to 0.001 minute only for reproducibility. Reader tables round to whole minutes. The precision is not a claim of observational accuracy.",
  "aggregation": "Annual and monthly ranges are extrema over every included date, calculated from unrounded events. Seasonal samples are the four stated calendar dates, not a claim of exact equinox/solstice instants.",
  "reproduction": "Python standard-library translation reproduces all 2190 rows/8760 event instants to within 0.002 seconds. It shares SunCalc's equations and is not an independent ephemeris. A separately implemented NOAA/Meeus geometric-altitude root solver checks 24 disclosed city/date samples.",
  "validationBoundary": "The 24-row model comparison is neither a confidence interval nor a universal accuracy guarantee; NOAA's calculator is no longer actively maintained. None of these calculations measure sky brightness, terrain, weather, moonlight or observing safety.",
  "formula": "elapsedMinutes = (twilightEndUtc - sunsetUtc) / 60000; all three durations are cumulative from sunset, not successive stages."
}
