{
  "$schema": "./schema.json",
  "corpus": "tz-edge-cases",
  "version": "1.1.0",
  "tzdataVersion": "2026c",
  "generatedAt": "2026-08-23T12:53:23+00:00",
  "notes": "Expected values are computed against IANA tzdata 2026c. Cases with stability=frozen concern past instants and will not change. Cases with stability=volatile concern future instants and must be re-verified on each tzdata release. volatileReason=future_rules: subject to government decree. volatileReason=pre_1970_build_variance: tzdb gives no stability guarantee for pre-1970 data, and answers differ between upstream and backzone builds of the same release.",
  "counts": {
    "total": 68,
    "frozen": 64,
    "volatile": 4,
    "volatileByReason": {
      "future_rules": 2,
      "pre_1970_build_variance": 2
    }
  },
  "cases": [
    {
      "id": "gap-us-eastern-2024",
      "category": "gap",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Northern-hemisphere 60-minute spring forward; 02:30 never occurs.",
      "input": {
        "localDateTime": "2024-03-10T02:30:00",
        "zone": "America/New_York"
      },
      "expected": {
        "exists": false,
        "gapStart": "2024-03-10T02:00:00",
        "gapEnd": "2024-03-10T03:00:00",
        "gapMinutes": 60.0,
        "resolutions": {
          "shiftBackward": "2024-03-10T01:30:00-05:00",
          "shiftForward": "2024-03-10T03:30:00-04:00"
        }
      }
    },
    {
      "id": "gap-uk-2024",
      "category": "gap",
      "stability": "frozen",
      "volatileReason": null,
      "description": "UK transitions at 01:00 local, not 02:00 — off-by-one-hour trap.",
      "input": {
        "localDateTime": "2024-03-31T01:30:00",
        "zone": "Europe/London"
      },
      "expected": {
        "exists": false,
        "gapStart": "2024-03-31T01:00:00",
        "gapEnd": "2024-03-31T02:00:00",
        "gapMinutes": 60.0,
        "resolutions": {
          "shiftBackward": "2024-03-31T00:30:00+00:00",
          "shiftForward": "2024-03-31T02:30:00+01:00"
        }
      }
    },
    {
      "id": "gap-lordhowe-30min-2024",
      "category": "gap",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Lord Howe Island shifts by 30 minutes, not 60.",
      "input": {
        "localDateTime": "2024-10-06T02:15:00",
        "zone": "Australia/Lord_Howe"
      },
      "expected": {
        "exists": false,
        "gapStart": "2024-10-06T02:00:00",
        "gapEnd": "2024-10-06T02:30:00",
        "gapMinutes": 30.0,
        "resolutions": {
          "shiftBackward": "2024-10-06T01:45:00+10:30",
          "shiftForward": "2024-10-06T02:45:00+11:00"
        }
      }
    },
    {
      "id": "gap-chatham-2024",
      "category": "gap",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Chatham transitions at 02:45 from a :45 base offset.",
      "input": {
        "localDateTime": "2024-09-29T03:00:00",
        "zone": "Pacific/Chatham"
      },
      "expected": {
        "exists": false,
        "gapStart": "2024-09-29T02:45:00",
        "gapEnd": "2024-09-29T03:45:00",
        "gapMinutes": 60.0,
        "resolutions": {
          "shiftBackward": "2024-09-29T02:00:00+12:45",
          "shiftForward": "2024-09-29T04:00:00+13:45"
        }
      }
    },
    {
      "id": "gap-troll-2hr-2024",
      "category": "gap",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Troll station shifts by 2 hours, producing a 2-hour gap.",
      "input": {
        "localDateTime": "2024-03-31T01:30:00",
        "zone": "Antarctica/Troll"
      },
      "expected": {
        "exists": false,
        "gapStart": "2024-03-31T01:00:00",
        "gapEnd": "2024-03-31T03:00:00",
        "gapMinutes": 120.0,
        "resolutions": {
          "shiftBackward": "2024-03-30T23:30:00+00:00",
          "shiftForward": "2024-03-31T03:30:00+02:00"
        }
      }
    },
    {
      "id": "gap-santiago-southern-2024",
      "category": "gap",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Southern hemisphere: spring forward occurs in September.",
      "input": {
        "localDateTime": "2024-09-08T00:30:00",
        "zone": "America/Santiago"
      },
      "expected": {
        "exists": false,
        "gapStart": "2024-09-08T00:00:00",
        "gapEnd": "2024-09-08T01:00:00",
        "gapMinutes": 60.0,
        "resolutions": {
          "shiftBackward": "2024-09-07T23:30:00-04:00",
          "shiftForward": "2024-09-08T01:30:00-03:00"
        }
      }
    },
    {
      "id": "gap-casablanca-ramadan-end-2024",
      "category": "gap",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Morocco returns to +01:00 after Ramadan, creating a gap.",
      "input": {
        "localDateTime": "2024-04-14T02:30:00",
        "zone": "Africa/Casablanca"
      },
      "expected": {
        "exists": false,
        "gapStart": "2024-04-14T02:00:00",
        "gapEnd": "2024-04-14T03:00:00",
        "gapMinutes": 60.0,
        "resolutions": {
          "shiftBackward": "2024-04-14T01:30:00+00:00",
          "shiftForward": "2024-04-14T03:30:00+01:00"
        }
      }
    },
    {
      "id": "ambiguous-us-eastern-2024",
      "category": "ambiguous",
      "stability": "frozen",
      "volatileReason": null,
      "description": "01:30 occurs twice; EDT then EST.",
      "input": {
        "localDateTime": "2024-11-03T01:30:00",
        "zone": "America/New_York"
      },
      "expected": {
        "exists": true,
        "occurrences": 2,
        "ambiguityStart": "2024-11-03T01:00:00",
        "ambiguityEnd": "2024-11-03T02:00:00",
        "first": {
          "instantUtc": "2024-11-03T05:30:00+00:00",
          "utcOffset": "-04:00",
          "abbreviation": "EDT",
          "isDst": true
        },
        "second": {
          "instantUtc": "2024-11-03T06:30:00+00:00",
          "utcOffset": "-05:00",
          "abbreviation": "EST",
          "isDst": false
        }
      }
    },
    {
      "id": "ambiguous-berlin-2024",
      "category": "ambiguous",
      "stability": "frozen",
      "volatileReason": null,
      "description": "EU-wide transition at 03:00 local; 02:30 occurs twice.",
      "input": {
        "localDateTime": "2024-10-27T02:30:00",
        "zone": "Europe/Berlin"
      },
      "expected": {
        "exists": true,
        "occurrences": 2,
        "ambiguityStart": "2024-10-27T02:00:00",
        "ambiguityEnd": "2024-10-27T03:00:00",
        "first": {
          "instantUtc": "2024-10-27T00:30:00+00:00",
          "utcOffset": "+02:00",
          "abbreviation": "CEST",
          "isDst": true
        },
        "second": {
          "instantUtc": "2024-10-27T01:30:00+00:00",
          "utcOffset": "+01:00",
          "abbreviation": "CET",
          "isDst": false
        }
      }
    },
    {
      "id": "ambiguous-lordhowe-30min-2024",
      "category": "ambiguous",
      "stability": "frozen",
      "volatileReason": null,
      "description": "30-minute ambiguity window rather than the usual 60.",
      "input": {
        "localDateTime": "2024-04-07T01:45:00",
        "zone": "Australia/Lord_Howe"
      },
      "expected": {
        "exists": true,
        "occurrences": 2,
        "ambiguityStart": "2024-04-07T01:30:00",
        "ambiguityEnd": "2024-04-07T02:00:00",
        "first": {
          "instantUtc": "2024-04-06T14:45:00+00:00",
          "utcOffset": "+11:00",
          "abbreviation": "+11",
          "isDst": true
        },
        "second": {
          "instantUtc": "2024-04-06T15:15:00+00:00",
          "utcOffset": "+10:30",
          "abbreviation": "+1030",
          "isDst": false
        }
      }
    },
    {
      "id": "ambiguous-auckland-2024",
      "category": "ambiguous",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Southern hemisphere: fall back occurs in April.",
      "input": {
        "localDateTime": "2024-04-07T02:30:00",
        "zone": "Pacific/Auckland"
      },
      "expected": {
        "exists": true,
        "occurrences": 2,
        "ambiguityStart": "2024-04-07T02:00:00",
        "ambiguityEnd": "2024-04-07T03:00:00",
        "first": {
          "instantUtc": "2024-04-06T13:30:00+00:00",
          "utcOffset": "+13:00",
          "abbreviation": "NZDT",
          "isDst": true
        },
        "second": {
          "instantUtc": "2024-04-06T14:30:00+00:00",
          "utcOffset": "+12:00",
          "abbreviation": "NZST",
          "isDst": false
        }
      }
    },
    {
      "id": "ambiguous-santiago-2024",
      "category": "ambiguous",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Chile transitions at 24:00, so the ambiguous window is late evening.",
      "input": {
        "localDateTime": "2024-04-06T23:30:00",
        "zone": "America/Santiago"
      },
      "expected": {
        "exists": true,
        "occurrences": 2,
        "ambiguityStart": "2024-04-06T23:00:00",
        "ambiguityEnd": "2024-04-07T00:00:00",
        "first": {
          "instantUtc": "2024-04-07T02:30:00+00:00",
          "utcOffset": "-03:00",
          "abbreviation": "-03",
          "isDst": true
        },
        "second": {
          "instantUtc": "2024-04-07T03:30:00+00:00",
          "utcOffset": "-04:00",
          "abbreviation": "-04",
          "isDst": false
        }
      }
    },
    {
      "id": "ambiguous-casablanca-ramadan-start-2024",
      "category": "ambiguous",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Morocco drops to +00:00 for Ramadan — an inverted DST fall-back.",
      "input": {
        "localDateTime": "2024-03-10T02:30:00",
        "zone": "Africa/Casablanca"
      },
      "expected": {
        "exists": true,
        "occurrences": 2,
        "ambiguityStart": "2024-03-10T02:00:00",
        "ambiguityEnd": "2024-03-10T03:00:00",
        "first": {
          "instantUtc": "2024-03-10T01:30:00+00:00",
          "utcOffset": "+01:00",
          "abbreviation": "+01",
          "isDst": false
        },
        "second": {
          "instantUtc": "2024-03-10T02:30:00+00:00",
          "utcOffset": "+00:00",
          "abbreviation": "+00",
          "isDst": true
        }
      }
    },
    {
      "id": "offset-kathmandu-0545",
      "category": "sub_hour_offset",
      "stability": "frozen",
      "volatileReason": null,
      "description": "+05:45 base offset; breaks integer-hour offset models.",
      "input": {
        "localDateTime": "2024-06-15T09:00:00",
        "zone": "Asia/Kathmandu"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2024-06-15T03:15:00+00:00",
        "utcOffset": "+05:45",
        "utcOffsetMinutes": 345.0,
        "abbreviation": "+0545",
        "isDst": false
      }
    },
    {
      "id": "offset-kolkata-0530",
      "category": "sub_hour_offset",
      "stability": "frozen",
      "volatileReason": null,
      "description": "+05:30 base offset, no DST.",
      "input": {
        "localDateTime": "2024-06-15T09:00:00",
        "zone": "Asia/Kolkata"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2024-06-15T03:30:00+00:00",
        "utcOffset": "+05:30",
        "utcOffsetMinutes": 330.0,
        "abbreviation": "IST",
        "isDst": false
      }
    },
    {
      "id": "offset-eucla-0845",
      "category": "sub_hour_offset",
      "stability": "frozen",
      "volatileReason": null,
      "description": "+08:45, one of the rarest offsets in use.",
      "input": {
        "localDateTime": "2024-06-15T09:00:00",
        "zone": "Australia/Eucla"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2024-06-15T00:15:00+00:00",
        "utcOffset": "+08:45",
        "utcOffsetMinutes": 525.0,
        "abbreviation": "+0845",
        "isDst": false
      }
    },
    {
      "id": "offset-marquesas-neg0930",
      "category": "sub_hour_offset",
      "stability": "frozen",
      "volatileReason": null,
      "description": "-09:30; negative sub-hour offset, a common sign-handling bug.",
      "input": {
        "localDateTime": "2024-06-15T09:00:00",
        "zone": "Pacific/Marquesas"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2024-06-15T18:30:00+00:00",
        "utcOffset": "-09:30",
        "utcOffsetMinutes": -570.0,
        "abbreviation": "-0930",
        "isDst": false
      }
    },
    {
      "id": "offset-monrovia-1971-neg004430",
      "category": "sub_hour_offset",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Liberia kept -00:44:30 by law until January 1972: a legal offset with a seconds component. Unlike the pre-1970 LMT cases it is frozen, so a mismatch here is a real bug.",
      "input": {
        "localDateTime": "1971-06-15T12:00:00",
        "zone": "Africa/Monrovia"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "1971-06-15T12:44:30+00:00",
        "utcOffset": "-00:44:30",
        "utcOffsetMinutes": -44.5,
        "abbreviation": "MMT",
        "isDst": false
      }
    },
    {
      "id": "inverted-casablanca-before-ramadan-2024",
      "category": "inverted_dst",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Morocco at its normal +01:00 before Ramadan.",
      "input": {
        "localDateTime": "2024-03-01T12:00:00",
        "zone": "Africa/Casablanca"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2024-03-01T11:00:00+00:00",
        "utcOffset": "+01:00",
        "utcOffsetMinutes": 60.0,
        "abbreviation": "+01",
        "isDst": false
      }
    },
    {
      "id": "inverted-casablanca-during-ramadan-2024",
      "category": "inverted_dst",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Morocco at +00:00 during Ramadan — offset DROPS, on a lunar date.",
      "input": {
        "localDateTime": "2024-03-15T12:00:00",
        "zone": "Africa/Casablanca"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2024-03-15T12:00:00+00:00",
        "utcOffset": "+00:00",
        "utcOffsetMinutes": 0.0,
        "abbreviation": "+00",
        "isDst": true
      }
    },
    {
      "id": "inverted-casablanca-after-ramadan-2024",
      "category": "inverted_dst",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Morocco back at +01:00 after Ramadan.",
      "input": {
        "localDateTime": "2024-04-20T12:00:00",
        "zone": "Africa/Casablanca"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2024-04-20T11:00:00+00:00",
        "utcOffset": "+01:00",
        "utcOffsetMinutes": 60.0,
        "abbreviation": "+01",
        "isDst": false
      }
    },
    {
      "id": "rulechange-tehran-2021-dst",
      "category": "rule_change",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Iran observed DST (+04:30) in 2021.",
      "input": {
        "localDateTime": "2021-06-15T12:00:00",
        "zone": "Asia/Tehran"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2021-06-15T07:30:00+00:00",
        "utcOffset": "+04:30",
        "utcOffsetMinutes": 270.0,
        "abbreviation": "+0430",
        "isDst": true
      }
    },
    {
      "id": "rulechange-tehran-2023-no-dst",
      "category": "rule_change",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Iran abolished DST in 2022; same date is now +03:30.",
      "input": {
        "localDateTime": "2023-06-15T12:00:00",
        "zone": "Asia/Tehran"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2023-06-15T08:30:00+00:00",
        "utcOffset": "+03:30",
        "utcOffsetMinutes": 210.0,
        "abbreviation": "+0330",
        "isDst": false
      }
    },
    {
      "id": "rulechange-mazatlan-2021-dst",
      "category": "rule_change",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Mexico observed DST in 2021.",
      "input": {
        "localDateTime": "2021-06-15T12:00:00",
        "zone": "America/Mazatlan"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2021-06-15T18:00:00+00:00",
        "utcOffset": "-06:00",
        "utcOffsetMinutes": -360.0,
        "abbreviation": "MDT",
        "isDst": true
      }
    },
    {
      "id": "rulechange-mazatlan-2023-no-dst",
      "category": "rule_change",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Mexico abolished DST for most of the country in 2022.",
      "input": {
        "localDateTime": "2023-06-15T12:00:00",
        "zone": "America/Mazatlan"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2023-06-15T19:00:00+00:00",
        "utcOffset": "-07:00",
        "utcOffsetMinutes": -420.0,
        "abbreviation": "MST",
        "isDst": false
      }
    },
    {
      "id": "rulechange-juarez-2023-still-dst",
      "category": "rule_change",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Mexican border municipalities kept US DST rules after 2022.",
      "input": {
        "localDateTime": "2023-06-15T12:00:00",
        "zone": "America/Ciudad_Juarez"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2023-06-15T18:00:00+00:00",
        "utcOffset": "-06:00",
        "utcOffsetMinutes": -360.0,
        "abbreviation": "MDT",
        "isDst": true
      }
    },
    {
      "id": "rulechange-istanbul-2015-winter",
      "category": "rule_change",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Istanbul in January 2015, still alternating: EET +02:00.",
      "input": {
        "localDateTime": "2015-01-15T12:00:00",
        "zone": "Europe/Istanbul"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2015-01-15T10:00:00+00:00",
        "utcOffset": "+02:00",
        "utcOffsetMinutes": 120.0,
        "abbreviation": "EET",
        "isDst": false
      }
    },
    {
      "id": "rulechange-istanbul-2017-winter",
      "category": "rule_change",
      "stability": "frozen",
      "volatileReason": null,
      "description": "January 2017: +03:00. Abolishing DST left the clocks an hour forward of where they used to be in winter — the opposite of Iran and Mexico, which settled on their standard offset.",
      "input": {
        "localDateTime": "2017-01-15T12:00:00",
        "zone": "Europe/Istanbul"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2017-01-15T09:00:00+00:00",
        "utcOffset": "+03:00",
        "utcOffsetMinutes": 180.0,
        "abbreviation": "+03",
        "isDst": false
      }
    },
    {
      "id": "skipped-apia-2011-12-30",
      "category": "skipped_date",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Samoa skipped 30 Dec 2011 entirely when crossing the date line.",
      "input": {
        "localDateTime": "2011-12-30T12:00:00",
        "zone": "Pacific/Apia"
      },
      "expected": {
        "exists": false,
        "gapStart": "2011-12-30T00:00:00",
        "gapEnd": "2011-12-31T00:00:00",
        "gapMinutes": 1440.0,
        "resolutions": {
          "shiftBackward": "2011-12-29T12:00:00-10:00",
          "shiftForward": "2011-12-31T12:00:00+14:00"
        }
      }
    },
    {
      "id": "skipped-apia-before",
      "category": "skipped_date",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Day before the skip: -10:00.",
      "input": {
        "localDateTime": "2011-12-29T12:00:00",
        "zone": "Pacific/Apia"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2011-12-29T22:00:00+00:00",
        "utcOffset": "-10:00",
        "utcOffsetMinutes": -600.0,
        "abbreviation": "-10",
        "isDst": true
      }
    },
    {
      "id": "skipped-apia-after",
      "category": "skipped_date",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Day after the skip: +14:00, a 24-hour jump.",
      "input": {
        "localDateTime": "2011-12-31T12:00:00",
        "zone": "Pacific/Apia"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2011-12-30T22:00:00+00:00",
        "utcOffset": "+14:00",
        "utcOffsetMinutes": 840.0,
        "abbreviation": "+14",
        "isDst": true
      }
    },
    {
      "id": "intracountry-sydney-january",
      "category": "intra_country",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Sydney observes DST in January (+11:00).",
      "input": {
        "localDateTime": "2024-01-15T12:00:00",
        "zone": "Australia/Sydney"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2024-01-15T01:00:00+00:00",
        "utcOffset": "+11:00",
        "utcOffsetMinutes": 660.0,
        "abbreviation": "AEDT",
        "isDst": true
      }
    },
    {
      "id": "intracountry-brisbane-january",
      "category": "intra_country",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Brisbane does not observe DST (+10:00) — same country, same instant.",
      "input": {
        "localDateTime": "2024-01-15T12:00:00",
        "zone": "Australia/Brisbane"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2024-01-15T02:00:00+00:00",
        "utcOffset": "+10:00",
        "utcOffsetMinutes": 600.0,
        "abbreviation": "AEST",
        "isDst": false
      }
    },
    {
      "id": "intracountry-phoenix-july",
      "category": "intra_country",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Arizona does not observe DST (-07:00).",
      "input": {
        "localDateTime": "2024-07-01T12:00:00",
        "zone": "America/Phoenix"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2024-07-01T19:00:00+00:00",
        "utcOffset": "-07:00",
        "utcOffsetMinutes": -420.0,
        "abbreviation": "MST",
        "isDst": false
      }
    },
    {
      "id": "intracountry-denver-july",
      "category": "intra_country",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Denver does (-06:00), despite sharing a nominal zone name.",
      "input": {
        "localDateTime": "2024-07-01T12:00:00",
        "zone": "America/Denver"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2024-07-01T18:00:00+00:00",
        "utcOffset": "-06:00",
        "utcOffsetMinutes": -360.0,
        "abbreviation": "MDT",
        "isDst": true
      }
    },
    {
      "id": "lmt-amsterdam-1890",
      "category": "lmt",
      "stability": "volatile",
      "volatileReason": "pre_1970_build_variance",
      "description": "Offset is not a whole number of minutes. Also build-dependent: upstream merges pre-1970 Amsterdam into Brussels (+00:17:30 BMT), while backzone builds keep +00:19:32 AMT.",
      "input": {
        "localDateTime": "1890-06-15T12:00:00",
        "zone": "Europe/Amsterdam"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "1890-06-15T11:42:30+00:00",
        "utcOffset": "+00:17:30",
        "utcOffsetMinutes": 17.5,
        "abbreviation": "BMT",
        "isDst": false
      }
    },
    {
      "id": "lmt-kolkata-1880",
      "category": "lmt",
      "stability": "volatile",
      "volatileReason": "pre_1970_build_variance",
      "description": "Madras Mean Time, +05:21:10. Agrees across common builds today, but pre-1970 data carries no stability guarantee.",
      "input": {
        "localDateTime": "1880-06-15T12:00:00",
        "zone": "Asia/Kolkata"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "1880-06-15T06:38:50+00:00",
        "utcOffset": "+05:21:10",
        "utcOffsetMinutes": 321.1666666666667,
        "abbreviation": "MMT",
        "isDst": false
      }
    },
    {
      "id": "zerooffset-istanbul-2016-dst",
      "category": "zero_offset_transition",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Türkiye's last summer of daylight saving: +03:00, DST flag set.",
      "input": {
        "localDateTime": "2016-07-15T12:00:00",
        "zone": "Europe/Istanbul"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2016-07-15T09:00:00+00:00",
        "utcOffset": "+03:00",
        "utcOffsetMinutes": 180.0,
        "abbreviation": "EEST",
        "isDst": true
      }
    },
    {
      "id": "zerooffset-istanbul-2017-permanent",
      "category": "zero_offset_transition",
      "stability": "frozen",
      "volatileReason": null,
      "description": "The same +03:00 a year later, DST flag now clear and the abbreviation changed EEST to +03. The September 2016 transition moved no clocks at all.",
      "input": {
        "localDateTime": "2017-07-15T12:00:00",
        "zone": "Europe/Istanbul"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2017-07-15T09:00:00+00:00",
        "utcOffset": "+03:00",
        "utcOffsetMinutes": 180.0,
        "abbreviation": "+03",
        "isDst": false
      }
    },
    {
      "id": "zerooffset-asuncion-2024-dst",
      "category": "zero_offset_transition",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Paraguay began daylight saving as usual in October 2024: -03:00, DST set.",
      "input": {
        "localDateTime": "2024-10-10T12:00:00",
        "zone": "America/Asuncion"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2024-10-10T15:00:00+00:00",
        "utcOffset": "-03:00",
        "utcOffsetMinutes": -180.0,
        "abbreviation": "-03",
        "isDst": true
      }
    },
    {
      "id": "zerooffset-asuncion-2024-permanent",
      "category": "zero_offset_transition",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Nine days later Paraguay made that offset permanent. Same -03:00, DST flag clear, no clock movement.",
      "input": {
        "localDateTime": "2024-10-20T12:00:00",
        "zone": "America/Asuncion"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2024-10-20T15:00:00+00:00",
        "utcOffset": "-03:00",
        "utcOffsetMinutes": -180.0,
        "abbreviation": "-03",
        "isDst": false
      }
    },
    {
      "id": "zerooffset-guam-2000-gst",
      "category": "zero_offset_transition",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Guam as GST, +10:00, no DST.",
      "input": {
        "localDateTime": "2000-12-01T12:00:00",
        "zone": "Pacific/Guam"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2000-12-01T02:00:00+00:00",
        "utcOffset": "+10:00",
        "utcOffsetMinutes": 600.0,
        "abbreviation": "GST",
        "isDst": false
      }
    },
    {
      "id": "zerooffset-guam-2001-chst",
      "category": "zero_offset_transition",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Renamed to ChST. Offset and DST flag both unchanged — the abbreviation is the only thing that moved.",
      "input": {
        "localDateTime": "2001-01-15T12:00:00",
        "zone": "Pacific/Guam"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2001-01-15T02:00:00+00:00",
        "utcOffset": "+10:00",
        "utcOffsetMinutes": 600.0,
        "abbreviation": "ChST",
        "isDst": false
      }
    },
    {
      "id": "negativedst-dublin-january",
      "category": "negative_dst",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Irish Standard Time is the SUMMER offset. Winter GMT is modelled as negative daylight saving, so isDst is true in January at +00:00.",
      "input": {
        "localDateTime": "2024-01-15T12:00:00",
        "zone": "Europe/Dublin"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2024-01-15T12:00:00+00:00",
        "utcOffset": "+00:00",
        "utcOffsetMinutes": 0.0,
        "abbreviation": "GMT",
        "isDst": true
      }
    },
    {
      "id": "negativedst-dublin-july",
      "category": "negative_dst",
      "stability": "frozen",
      "volatileReason": null,
      "description": "July is +01:00 IST with isDst false — inverted relative to every other EU zone, which flag their summer offset as DST.",
      "input": {
        "localDateTime": "2024-07-15T12:00:00",
        "zone": "Europe/Dublin"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2024-07-15T11:00:00+00:00",
        "utcOffset": "+01:00",
        "utcOffsetMinutes": 60.0,
        "abbreviation": "IST",
        "isDst": false
      }
    },
    {
      "id": "negativedst-windhoek-2016-january",
      "category": "negative_dst",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Namibia before 2017: January is CAT +02:00 with isDst false.",
      "input": {
        "localDateTime": "2016-01-15T12:00:00",
        "zone": "Africa/Windhoek"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2016-01-15T10:00:00+00:00",
        "utcOffset": "+02:00",
        "utcOffsetMinutes": 120.0,
        "abbreviation": "CAT",
        "isDst": false
      }
    },
    {
      "id": "negativedst-windhoek-2016-june",
      "category": "negative_dst",
      "stability": "frozen",
      "volatileReason": null,
      "description": "June is WAT +01:00 with isDst TRUE. The winter offset carries the DST flag, and 'West Africa Time' is the daylight-saving name.",
      "input": {
        "localDateTime": "2016-06-15T12:00:00",
        "zone": "Africa/Windhoek"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2016-06-15T11:00:00+00:00",
        "utcOffset": "+01:00",
        "utcOffsetMinutes": 60.0,
        "abbreviation": "WAT",
        "isDst": true
      }
    },
    {
      "id": "offsetmove-almaty-2024-before",
      "category": "offset_move",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Kazakhstan at +06:00 before unifying its two zones.",
      "input": {
        "localDateTime": "2024-02-15T12:00:00",
        "zone": "Asia/Almaty"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2024-02-15T06:00:00+00:00",
        "utcOffset": "+06:00",
        "utcOffsetMinutes": 360.0,
        "abbreviation": "+06",
        "isDst": false
      }
    },
    {
      "id": "offsetmove-almaty-2024-after",
      "category": "offset_move",
      "stability": "frozen",
      "volatileReason": null,
      "description": "+05:00 afterwards. The transition fell on 29 February — a standard-offset change, no DST anywhere near it, on a leap day.",
      "input": {
        "localDateTime": "2024-03-15T12:00:00",
        "zone": "Asia/Almaty"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2024-03-15T07:00:00+00:00",
        "utcOffset": "+05:00",
        "utcOffsetMinutes": 300.0,
        "abbreviation": "+05",
        "isDst": false
      }
    },
    {
      "id": "offsetmove-caracas-2016-before",
      "category": "offset_move",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Venezuela at -04:30, a sub-hour STANDARD offset.",
      "input": {
        "localDateTime": "2016-04-15T12:00:00",
        "zone": "America/Caracas"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2016-04-15T16:30:00+00:00",
        "utcOffset": "-04:30",
        "utcOffsetMinutes": -270.0,
        "abbreviation": "-0430",
        "isDst": false
      }
    },
    {
      "id": "offsetmove-caracas-2016-after",
      "category": "offset_move",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Retired to -04:00 in May 2016. A hardcoded offset table written before then is still wrong today.",
      "input": {
        "localDateTime": "2016-06-15T12:00:00",
        "zone": "America/Caracas"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2016-06-15T16:00:00+00:00",
        "utcOffset": "-04:00",
        "utcOffsetMinutes": -240.0,
        "abbreviation": "-04",
        "isDst": false
      }
    },
    {
      "id": "offsetmove-famagusta-2017-plus03",
      "category": "offset_move",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Northern Cyprus followed Türkiye to permanent +03:00 in 2016.",
      "input": {
        "localDateTime": "2017-01-15T12:00:00",
        "zone": "Asia/Famagusta"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2017-01-15T09:00:00+00:00",
        "utcOffset": "+03:00",
        "utcOffsetMinutes": 180.0,
        "abbreviation": "+03",
        "isDst": false
      }
    },
    {
      "id": "offsetmove-famagusta-2018-reverted",
      "category": "offset_move",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Then reverted to EET +02:00 in October 2017 — the same decision taken and untaken thirteen months apart, while Istanbul kept +03:00.",
      "input": {
        "localDateTime": "2018-01-15T12:00:00",
        "zone": "Asia/Famagusta"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2018-01-15T10:00:00+00:00",
        "utcOffset": "+02:00",
        "utcOffsetMinutes": 120.0,
        "abbreviation": "EET",
        "isDst": false
      }
    },
    {
      "id": "gap-cairo-midnight-2023",
      "category": "gap",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Egypt re-adopted DST in 2023 and transitions at midnight, so 28 April has no 00:xx hour: the local day starts at 01:00.",
      "input": {
        "localDateTime": "2023-04-28T00:30:00",
        "zone": "Africa/Cairo"
      },
      "expected": {
        "exists": false,
        "gapStart": "2023-04-28T00:00:00",
        "gapEnd": "2023-04-28T01:00:00",
        "gapMinutes": 60.0,
        "resolutions": {
          "shiftBackward": "2023-04-27T23:30:00+02:00",
          "shiftForward": "2023-04-28T01:30:00+03:00"
        }
      }
    },
    {
      "id": "gap-casey-3hour-2020",
      "category": "gap",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Casey shifts by three hours, the largest routine jump in the database — larger than Troll's two.",
      "input": {
        "localDateTime": "2020-10-04T01:30:00",
        "zone": "Antarctica/Casey"
      },
      "expected": {
        "exists": false,
        "gapStart": "2020-10-04T00:01:00.644531",
        "gapEnd": "2020-10-04T03:01:00.644531",
        "gapMinutes": 180.0,
        "resolutions": {
          "shiftBackward": "2020-10-03T22:30:00+08:00",
          "shiftForward": "2020-10-04T04:30:00+11:00"
        }
      }
    },
    {
      "id": "volatile-us-eastern-2027-gap",
      "category": "gap",
      "stability": "volatile",
      "volatileReason": "future_rules",
      "description": "Correct under current US rules; would change if permanent DST passes.",
      "input": {
        "localDateTime": "2027-03-14T02:30:00",
        "zone": "America/New_York"
      },
      "expected": {
        "exists": false,
        "gapStart": "2027-03-14T02:00:00",
        "gapEnd": "2027-03-14T03:00:00",
        "gapMinutes": 60.0,
        "resolutions": {
          "shiftBackward": "2027-03-14T01:30:00-05:00",
          "shiftForward": "2027-03-14T03:30:00-04:00"
        }
      }
    },
    {
      "id": "volatile-casablanca-2027",
      "category": "inverted_dst",
      "stability": "volatile",
      "volatileReason": "future_rules",
      "description": "Depends on the projected lunar Ramadan window for 2027.",
      "input": {
        "localDateTime": "2027-06-15T12:00:00",
        "zone": "Africa/Casablanca"
      },
      "expected": {
        "exists": true,
        "occurrences": 1,
        "instantUtc": "2027-06-15T12:00:00+00:00",
        "utcOffset": "+00:00",
        "utcOffsetMinutes": 0.0,
        "abbreviation": "+00",
        "isDst": false
      }
    },
    {
      "id": "conv-ny-london-desync-march",
      "category": "conversion",
      "stability": "frozen",
      "volatileReason": null,
      "description": "US has sprung forward, UK has not: the gap is 4 hours, not the usual 5.",
      "input": {
        "localDateTime": "2024-03-10T09:00:00",
        "fromZone": "America/New_York",
        "toZone": "Europe/London",
        "fold": 0
      },
      "expected": {
        "instantUtc": "2024-03-10T13:00:00+00:00",
        "fromUtcOffset": "-04:00",
        "toUtcOffset": "+00:00",
        "toLocalDateTime": "2024-03-10T13:00:00",
        "offsetDeltaMinutes": 240.0,
        "dayShift": 0
      }
    },
    {
      "id": "conv-ny-london-desync-october",
      "category": "conversion",
      "stability": "frozen",
      "volatileReason": null,
      "description": "UK has fallen back, US has not: again 4 hours, in the other direction.",
      "input": {
        "localDateTime": "2024-10-27T09:00:00",
        "fromZone": "America/New_York",
        "toZone": "Europe/London",
        "fold": 0
      },
      "expected": {
        "instantUtc": "2024-10-27T13:00:00+00:00",
        "fromUtcOffset": "-04:00",
        "toUtcOffset": "+00:00",
        "toLocalDateTime": "2024-10-27T13:00:00",
        "offsetDeltaMinutes": 240.0,
        "dayShift": 0
      }
    },
    {
      "id": "conv-ny-london-normal",
      "category": "conversion",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Baseline: the usual 5-hour gap, for contrast with the two above.",
      "input": {
        "localDateTime": "2024-06-15T09:00:00",
        "fromZone": "America/New_York",
        "toZone": "Europe/London",
        "fold": 0
      },
      "expected": {
        "instantUtc": "2024-06-15T13:00:00+00:00",
        "fromUtcOffset": "-04:00",
        "toUtcOffset": "+01:00",
        "toLocalDateTime": "2024-06-15T14:00:00",
        "offsetDeltaMinutes": 300.0,
        "dayShift": 0
      }
    },
    {
      "id": "conv-ambiguous-source-fold0",
      "category": "conversion",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Ambiguous source time, first occurrence (EDT).",
      "input": {
        "localDateTime": "2024-11-03T01:30:00",
        "fromZone": "America/New_York",
        "toZone": "UTC",
        "fold": 0
      },
      "expected": {
        "instantUtc": "2024-11-03T05:30:00+00:00",
        "fromUtcOffset": "-04:00",
        "toUtcOffset": "+00:00",
        "toLocalDateTime": "2024-11-03T05:30:00",
        "offsetDeltaMinutes": 240.0,
        "dayShift": 0
      }
    },
    {
      "id": "conv-ambiguous-source-fold1",
      "category": "conversion",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Same wall clock, second occurrence (EST) — one hour later in UTC.",
      "input": {
        "localDateTime": "2024-11-03T01:30:00",
        "fromZone": "America/New_York",
        "toZone": "UTC",
        "fold": 1
      },
      "expected": {
        "instantUtc": "2024-11-03T06:30:00+00:00",
        "fromUtcOffset": "-05:00",
        "toUtcOffset": "+00:00",
        "toLocalDateTime": "2024-11-03T06:30:00",
        "offsetDeltaMinutes": 300.0,
        "dayShift": 0
      }
    },
    {
      "id": "conv-kathmandu-kolkata-15min",
      "category": "conversion",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Neighbouring zones 15 minutes apart (+05:45 to +05:30).",
      "input": {
        "localDateTime": "2024-06-15T09:00:00",
        "fromZone": "Asia/Kathmandu",
        "toZone": "Asia/Kolkata",
        "fold": 0
      },
      "expected": {
        "instantUtc": "2024-06-15T03:15:00+00:00",
        "fromUtcOffset": "+05:45",
        "toUtcOffset": "+05:30",
        "toLocalDateTime": "2024-06-15T08:45:00",
        "offsetDeltaMinutes": -15.0,
        "dayShift": 0
      }
    },
    {
      "id": "conv-kolkata-eucla-315",
      "category": "conversion",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Delta of 3h15m: neither endpoint nor the difference is a whole hour.",
      "input": {
        "localDateTime": "2024-06-15T09:00:00",
        "fromZone": "Asia/Kolkata",
        "toZone": "Australia/Eucla",
        "fold": 0
      },
      "expected": {
        "instantUtc": "2024-06-15T03:30:00+00:00",
        "fromUtcOffset": "+05:30",
        "toUtcOffset": "+08:45",
        "toLocalDateTime": "2024-06-15T12:15:00",
        "offsetDeltaMinutes": 195.0,
        "dayShift": 0
      }
    },
    {
      "id": "conv-kolkata-newyork-dayshift",
      "category": "conversion",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Conversion moves backwards across the date boundary.",
      "input": {
        "localDateTime": "2024-06-15T02:00:00",
        "fromZone": "Asia/Kolkata",
        "toZone": "America/New_York",
        "fold": 0
      },
      "expected": {
        "instantUtc": "2024-06-14T20:30:00+00:00",
        "fromUtcOffset": "+05:30",
        "toUtcOffset": "-04:00",
        "toLocalDateTime": "2024-06-14T16:30:00",
        "offsetDeltaMinutes": -570.0,
        "dayShift": -1
      }
    },
    {
      "id": "conv-apia-la-datechange",
      "category": "conversion",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Near the date line: same instant, previous calendar day at the target.",
      "input": {
        "localDateTime": "2024-06-15T10:00:00",
        "fromZone": "Pacific/Apia",
        "toZone": "America/Los_Angeles",
        "fold": 0
      },
      "expected": {
        "instantUtc": "2024-06-14T21:00:00+00:00",
        "fromUtcOffset": "+13:00",
        "toUtcOffset": "-07:00",
        "toLocalDateTime": "2024-06-14T14:00:00",
        "offsetDeltaMinutes": -1200.0,
        "dayShift": -1
      }
    },
    {
      "id": "conv-kiritimati-midway-25h",
      "category": "conversion",
      "stability": "frozen",
      "volatileReason": null,
      "description": "+14:00 to -11:00: the widest spread in use, 25 hours, landing on the previous calendar day.",
      "input": {
        "localDateTime": "2024-06-15T10:00:00",
        "fromZone": "Pacific/Kiritimati",
        "toZone": "Pacific/Midway",
        "fold": 0
      },
      "expected": {
        "instantUtc": "2024-06-14T20:00:00+00:00",
        "fromUtcOffset": "+14:00",
        "toUtcOffset": "-11:00",
        "toLocalDateTime": "2024-06-14T09:00:00",
        "offsetDeltaMinutes": -1500.0,
        "dayShift": -1
      }
    },
    {
      "id": "conv-istanbul-athens-divergence",
      "category": "conversion",
      "stability": "frozen",
      "volatileReason": null,
      "description": "Istanbul and Athens shared EET/EEST until September 2016. Afterwards they differ by an hour in winter and not at all in summer.",
      "input": {
        "localDateTime": "2017-01-15T12:00:00",
        "fromZone": "Europe/Istanbul",
        "toZone": "Europe/Athens",
        "fold": 0
      },
      "expected": {
        "instantUtc": "2017-01-15T09:00:00+00:00",
        "fromUtcOffset": "+03:00",
        "toUtcOffset": "+02:00",
        "toLocalDateTime": "2017-01-15T11:00:00",
        "offsetDeltaMinutes": -60.0,
        "dayShift": 0
      }
    }
  ]
}
