{"abstract":"A ticket issued on 29 February remains valid on 1 March of the next year.","category":"Airline fare rule evaluation","checks":11,"contract":"Input {'issue','first_travel' (ISO or None)}. One calendar year = same month/day next year (29 Feb -> 28 Feb). Unused -> ['UNUSED', issue+1y]. First travel later than issue+1y -> ['EXPIRED_UNUSED', issue+1y] (travel on that date is still valid). Otherwise ['TRAVEL', first travel+1y].","evaluation_group":"w2-airline-fare-rules-ticket-validity","failed_approach":"Jumping to the next 29 February extends validity by four years.","family":"w2-airline-fare-rules-ticket-validity-leap-day-anniversary","id":"FA-66651","implementations":{"attempt":{"sha256":"9b5b7499b4f15c6f6077ec0394a851b90f9e732bb727869e50097e229e0eda89","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime\nimport calendar\nN = 1\nobservations = []\ndef solve(x):\n    iss = datetime.date.fromisoformat(x['issue'])\n    def plus_year(d):\n        try:\n            return d.replace(year=d.year + 1)\n        except ValueError:\n            return datetime.date(d.year + 4, 2, 29)\n    if x['first_travel'] is None:\n        return ['UNUSED', plus_year(iss).isoformat()]\n    ft = datetime.date.fromisoformat(x['first_travel'])\n    if ft > plus_year(iss): return ['EXPIRED_UNUSED', plus_year(iss).isoformat()]\n    return ['TRAVEL', plus_year(ft).isoformat()]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['travel commenced mid-year', {'issue': '2027-03-10', 'first_travel': '2027-06-02'}, ['TRAVEL', '2028-06-02']], ['unused ticket', {'issue': '2027-01-15', 'first_travel': None}, ['UNUSED', '2028-01-15']], ['leap day issue', {'issue': '2028-02-29', 'first_travel': None}, ['UNUSED', '2029-02-28']], ['leap day first travel', {'issue': '2028-01-11', 'first_travel': '2028-02-29'}, ['TRAVEL', '2029-02-28']], ['travel exactly one year after issue', {'issue': '2027-05-11', 'first_travel': '2028-05-11'}, ['TRAVEL', '2029-05-11']], ['travel one day too late', {'issue': '2027-05-10', 'first_travel': '2028-05-11'}, ['EXPIRED_UNUSED', '2028-05-10']], ['span includes Feb 29', {'issue': '2027-06-01', 'first_travel': '2027-06-01'}, ['TRAVEL', '2028-06-01']], ['late leap-year start', {'issue': '2028-05-01', 'first_travel': '2028-06-11'}, ['TRAVEL', '2029-06-11']], ['sampled case 1', {'issue': '2028-11-11', 'first_travel': '2029-05-16'}, ['TRAVEL', '2030-05-16']], ['sampled case 2', {'issue': '2027-07-24', 'first_travel': '2027-07-26'}, ['TRAVEL', '2028-07-26']], ['sampled case 3', {'issue': '2029-01-16', 'first_travel': None}, ['UNUSED', '2030-01-16']]], [['travel commenced mid-year', {'issue': '2027-03-10', 'first_travel': '2027-06-03'}, ['TRAVEL', '2028-06-03']], ['unused ticket', {'issue': '2027-02-15', 'first_travel': None}, ['UNUSED', '2028-02-15']], ['leap day issue', {'issue': '2028-02-29', 'first_travel': None}, ['UNUSED', '2029-02-28']], ['leap day first travel', {'issue': '2028-01-12', 'first_travel': '2028-02-29'}, ['TRAVEL', '2029-02-28']], ['travel exactly one year after issue', {'issue': '2027-05-12', 'first_travel': '2028-05-12'}, ['TRAVEL', '2029-05-12']], ['travel one day too late', {'issue': '2027-05-10', 'first_travel': '2028-05-11'}, ['EXPIRED_UNUSED', '2028-05-10']], ['span includes Feb 29', {'issue': '2027-06-01', 'first_travel': '2027-06-02'}, ['TRAVEL', '2028-06-02']], ['late leap-year start', {'issue': '2028-05-01', 'first_travel': '2028-06-12'}, ['TRAVEL', '2029-06-12']], ['sampled case 1', {'issue': '2027-08-03', 'first_travel': '2028-08-03'}, ['TRAVEL', '2029-08-03']], ['sampled case 2', {'issue': '2028-03-31', 'first_travel': None}, ['UNUSED', '2029-03-31']], ['sampled case 3', {'issue': '2028-06-12', 'first_travel': '2029-06-12'}, ['TRAVEL', '2030-06-12']]], [['travel commenced mid-year', {'issue': '2027-03-10', 'first_travel': '2027-06-04'}, ['TRAVEL', '2028-06-04']], ['unused ticket', {'issue': '2027-03-15', 'first_travel': None}, ['UNUSED', '2028-03-15']], ['leap day issue', {'issue': '2028-02-29', 'first_travel': None}, ['UNUSED', '2029-02-28']], ['leap day first travel', {'issue': '2028-01-13', 'first_travel': '2028-02-29'}, ['TRAVEL', '2029-02-28']], ['travel exactly one year after issue', {'issue': '2027-05-13', 'first_travel': '2028-05-13'}, ['TRAVEL', '2029-05-13']], ['travel one day too late', {'issue': '2027-05-10', 'first_travel': '2028-05-11'}, ['EXPIRED_UNUSED', '2028-05-10']], ['span includes Feb 29', {'issue': '2027-06-01', 'first_travel': '2027-06-03'}, ['TRAVEL', '2028-06-03']], ['late leap-year start', {'issue': '2028-05-01', 'first_travel': '2028-06-13'}, ['TRAVEL', '2029-06-13']], ['sampled case 1', {'issue': '2028-10-17', 'first_travel': None}, ['UNUSED', '2029-10-17']], ['sampled case 2', {'issue': '2027-02-28', 'first_travel': '2028-02-28'}, ['TRAVEL', '2029-02-28']], ['sampled case 3', {'issue': '2029-06-17', 'first_travel': '2030-04-20'}, ['TRAVEL', '2031-04-20']]], [['travel commenced mid-year', {'issue': '2027-03-10', 'first_travel': '2027-06-05'}, ['TRAVEL', '2028-06-05']], ['unused ticket', {'issue': '2027-04-15', 'first_travel': None}, ['UNUSED', '2028-04-15']], ['leap day issue', {'issue': '2028-02-29', 'first_travel': None}, ['UNUSED', '2029-02-28']], ['leap day first travel', {'issue': '2028-01-14', 'first_travel': '2028-02-29'}, ['TRAVEL', '2029-02-28']], ['travel exactly one year after issue', {'issue': '2027-05-14', 'first_travel': '2028-05-14'}, ['TRAVEL', '2029-05-14']], ['travel one day too late', {'issue': '2027-05-10', 'first_travel': '2028-05-11'}, ['EXPIRED_UNUSED', '2028-05-10']], ['span includes Feb 29', {'issue': '2027-06-01', 'first_travel': '2027-06-04'}, ['TRAVEL', '2028-06-04']], ['late leap-year start', {'issue': '2028-05-01', 'first_travel': '2028-06-14'}, ['TRAVEL', '2029-06-14']], ['sampled case 1', {'issue': '2028-11-25', 'first_travel': '2029-11-26'}, ['EXPIRED_UNUSED', '2029-11-25']], ['sampled case 2', {'issue': '2029-06-03', 'first_travel': '2030-06-04'}, ['EXPIRED_UNUSED', '2030-06-03']], ['sampled case 3', {'issue': '2028-06-18', 'first_travel': None}, ['UNUSED', '2029-06-18']]], [['travel commenced mid-year', {'issue': '2027-03-10', 'first_travel': '2027-06-06'}, ['TRAVEL', '2028-06-06']], ['unused ticket', {'issue': '2027-05-15', 'first_travel': None}, ['UNUSED', '2028-05-15']], ['leap day issue', {'issue': '2028-02-29', 'first_travel': None}, ['UNUSED', '2029-02-28']], ['leap day first travel', {'issue': '2028-01-15', 'first_travel': '2028-02-29'}, ['TRAVEL', '2029-02-28']], ['travel exactly one year after issue', {'issue': '2027-05-15', 'first_travel': '2028-05-15'}, ['TRAVEL', '2029-05-15']], ['travel one day too late', {'issue': '2027-05-10', 'first_travel': '2028-05-11'}, ['EXPIRED_UNUSED', '2028-05-10']], ['span includes Feb 29', {'issue': '2027-06-01', 'first_travel': '2027-06-05'}, ['TRAVEL', '2028-06-05']], ['late leap-year start', {'issue': '2028-05-01', 'first_travel': '2028-06-15'}, ['TRAVEL', '2029-06-15']], ['sampled case 1', {'issue': '2028-07-20', 'first_travel': '2029-07-20'}, ['TRAVEL', '2030-07-20']], ['sampled case 2', {'issue': '2027-10-29', 'first_travel': '2027-12-02'}, ['TRAVEL', '2028-12-02']], ['sampled case 3', {'issue': '2029-03-08', 'first_travel': '2029-05-13'}, ['TRAVEL', '2030-05-13']]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"0e5db0cae32bdd1e901102c233cfe39c57d84b2a3a4816b2e1157ce198226f6f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime\nimport calendar\nN = 1\nobservations = []\ndef solve(x):\n    iss = datetime.date.fromisoformat(x['issue'])\n    def plus_year(d):\n        try:\n            return d.replace(year=d.year + 1)\n        except ValueError:\n            return datetime.date(d.year + 1, 3, 1)\n    if x['first_travel'] is None:\n        return ['UNUSED', plus_year(iss).isoformat()]\n    ft = datetime.date.fromisoformat(x['first_travel'])\n    if ft > plus_year(iss): return ['EXPIRED_UNUSED', plus_year(iss).isoformat()]\n    return ['TRAVEL', plus_year(ft).isoformat()]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['travel commenced mid-year', {'issue': '2027-03-10', 'first_travel': '2027-06-02'}, ['TRAVEL', '2028-06-02']], ['unused ticket', {'issue': '2027-01-15', 'first_travel': None}, ['UNUSED', '2028-01-15']], ['leap day issue', {'issue': '2028-02-29', 'first_travel': None}, ['UNUSED', '2029-02-28']], ['leap day first travel', {'issue': '2028-01-11', 'first_travel': '2028-02-29'}, ['TRAVEL', '2029-02-28']], ['travel exactly one year after issue', {'issue': '2027-05-11', 'first_travel': '2028-05-11'}, ['TRAVEL', '2029-05-11']], ['travel one day too late', {'issue': '2027-05-10', 'first_travel': '2028-05-11'}, ['EXPIRED_UNUSED', '2028-05-10']], ['span includes Feb 29', {'issue': '2027-06-01', 'first_travel': '2027-06-01'}, ['TRAVEL', '2028-06-01']], ['late leap-year start', {'issue': '2028-05-01', 'first_travel': '2028-06-11'}, ['TRAVEL', '2029-06-11']], ['sampled case 1', {'issue': '2028-11-11', 'first_travel': '2029-05-16'}, ['TRAVEL', '2030-05-16']], ['sampled case 2', {'issue': '2027-07-24', 'first_travel': '2027-07-26'}, ['TRAVEL', '2028-07-26']], ['sampled case 3', {'issue': '2029-01-16', 'first_travel': None}, ['UNUSED', '2030-01-16']]], [['travel commenced mid-year', {'issue': '2027-03-10', 'first_travel': '2027-06-03'}, ['TRAVEL', '2028-06-03']], ['unused ticket', {'issue': '2027-02-15', 'first_travel': None}, ['UNUSED', '2028-02-15']], ['leap day issue', {'issue': '2028-02-29', 'first_travel': None}, ['UNUSED', '2029-02-28']], ['leap day first travel', {'issue': '2028-01-12', 'first_travel': '2028-02-29'}, ['TRAVEL', '2029-02-28']], ['travel exactly one year after issue', {'issue': '2027-05-12', 'first_travel': '2028-05-12'}, ['TRAVEL', '2029-05-12']], ['travel one day too late', {'issue': '2027-05-10', 'first_travel': '2028-05-11'}, ['EXPIRED_UNUSED', '2028-05-10']], ['span includes Feb 29', {'issue': '2027-06-01', 'first_travel': '2027-06-02'}, ['TRAVEL', '2028-06-02']], ['late leap-year start', {'issue': '2028-05-01', 'first_travel': '2028-06-12'}, ['TRAVEL', '2029-06-12']], ['sampled case 1', {'issue': '2027-08-03', 'first_travel': '2028-08-03'}, ['TRAVEL', '2029-08-03']], ['sampled case 2', {'issue': '2028-03-31', 'first_travel': None}, ['UNUSED', '2029-03-31']], ['sampled case 3', {'issue': '2028-06-12', 'first_travel': '2029-06-12'}, ['TRAVEL', '2030-06-12']]], [['travel commenced mid-year', {'issue': '2027-03-10', 'first_travel': '2027-06-04'}, ['TRAVEL', '2028-06-04']], ['unused ticket', {'issue': '2027-03-15', 'first_travel': None}, ['UNUSED', '2028-03-15']], ['leap day issue', {'issue': '2028-02-29', 'first_travel': None}, ['UNUSED', '2029-02-28']], ['leap day first travel', {'issue': '2028-01-13', 'first_travel': '2028-02-29'}, ['TRAVEL', '2029-02-28']], ['travel exactly one year after issue', {'issue': '2027-05-13', 'first_travel': '2028-05-13'}, ['TRAVEL', '2029-05-13']], ['travel one day too late', {'issue': '2027-05-10', 'first_travel': '2028-05-11'}, ['EXPIRED_UNUSED', '2028-05-10']], ['span includes Feb 29', {'issue': '2027-06-01', 'first_travel': '2027-06-03'}, ['TRAVEL', '2028-06-03']], ['late leap-year start', {'issue': '2028-05-01', 'first_travel': '2028-06-13'}, ['TRAVEL', '2029-06-13']], ['sampled case 1', {'issue': '2028-10-17', 'first_travel': None}, ['UNUSED', '2029-10-17']], ['sampled case 2', {'issue': '2027-02-28', 'first_travel': '2028-02-28'}, ['TRAVEL', '2029-02-28']], ['sampled case 3', {'issue': '2029-06-17', 'first_travel': '2030-04-20'}, ['TRAVEL', '2031-04-20']]], [['travel commenced mid-year', {'issue': '2027-03-10', 'first_travel': '2027-06-05'}, ['TRAVEL', '2028-06-05']], ['unused ticket', {'issue': '2027-04-15', 'first_travel': None}, ['UNUSED', '2028-04-15']], ['leap day issue', {'issue': '2028-02-29', 'first_travel': None}, ['UNUSED', '2029-02-28']], ['leap day first travel', {'issue': '2028-01-14', 'first_travel': '2028-02-29'}, ['TRAVEL', '2029-02-28']], ['travel exactly one year after issue', {'issue': '2027-05-14', 'first_travel': '2028-05-14'}, ['TRAVEL', '2029-05-14']], ['travel one day too late', {'issue': '2027-05-10', 'first_travel': '2028-05-11'}, ['EXPIRED_UNUSED', '2028-05-10']], ['span includes Feb 29', {'issue': '2027-06-01', 'first_travel': '2027-06-04'}, ['TRAVEL', '2028-06-04']], ['late leap-year start', {'issue': '2028-05-01', 'first_travel': '2028-06-14'}, ['TRAVEL', '2029-06-14']], ['sampled case 1', {'issue': '2028-11-25', 'first_travel': '2029-11-26'}, ['EXPIRED_UNUSED', '2029-11-25']], ['sampled case 2', {'issue': '2029-06-03', 'first_travel': '2030-06-04'}, ['EXPIRED_UNUSED', '2030-06-03']], ['sampled case 3', {'issue': '2028-06-18', 'first_travel': None}, ['UNUSED', '2029-06-18']]], [['travel commenced mid-year', {'issue': '2027-03-10', 'first_travel': '2027-06-06'}, ['TRAVEL', '2028-06-06']], ['unused ticket', {'issue': '2027-05-15', 'first_travel': None}, ['UNUSED', '2028-05-15']], ['leap day issue', {'issue': '2028-02-29', 'first_travel': None}, ['UNUSED', '2029-02-28']], ['leap day first travel', {'issue': '2028-01-15', 'first_travel': '2028-02-29'}, ['TRAVEL', '2029-02-28']], ['travel exactly one year after issue', {'issue': '2027-05-15', 'first_travel': '2028-05-15'}, ['TRAVEL', '2029-05-15']], ['travel one day too late', {'issue': '2027-05-10', 'first_travel': '2028-05-11'}, ['EXPIRED_UNUSED', '2028-05-10']], ['span includes Feb 29', {'issue': '2027-06-01', 'first_travel': '2027-06-05'}, ['TRAVEL', '2028-06-05']], ['late leap-year start', {'issue': '2028-05-01', 'first_travel': '2028-06-15'}, ['TRAVEL', '2029-06-15']], ['sampled case 1', {'issue': '2028-07-20', 'first_travel': '2029-07-20'}, ['TRAVEL', '2030-07-20']], ['sampled case 2', {'issue': '2027-10-29', 'first_travel': '2027-12-02'}, ['TRAVEL', '2028-12-02']], ['sampled case 3', {'issue': '2029-03-08', 'first_travel': '2029-05-13'}, ['TRAVEL', '2030-05-13']]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"9ad052ebbaa76684faac17e8c0b861e155b27e67a4dc152b5a5bb33c435063cf","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime\nimport calendar\nN = 1\nobservations = []\ndef solve(x):\n    iss = datetime.date.fromisoformat(x['issue'])\n    def plus_year(d):\n        try:\n            return d.replace(year=d.year + 1)\n        except ValueError:\n            return datetime.date(d.year + 1, 2, 28)\n    if x['first_travel'] is None:\n        return ['UNUSED', plus_year(iss).isoformat()]\n    ft = datetime.date.fromisoformat(x['first_travel'])\n    if ft > plus_year(iss): return ['EXPIRED_UNUSED', plus_year(iss).isoformat()]\n    return ['TRAVEL', plus_year(ft).isoformat()]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['travel commenced mid-year', {'issue': '2027-03-10', 'first_travel': '2027-06-02'}, ['TRAVEL', '2028-06-02']], ['unused ticket', {'issue': '2027-01-15', 'first_travel': None}, ['UNUSED', '2028-01-15']], ['leap day issue', {'issue': '2028-02-29', 'first_travel': None}, ['UNUSED', '2029-02-28']], ['leap day first travel', {'issue': '2028-01-11', 'first_travel': '2028-02-29'}, ['TRAVEL', '2029-02-28']], ['travel exactly one year after issue', {'issue': '2027-05-11', 'first_travel': '2028-05-11'}, ['TRAVEL', '2029-05-11']], ['travel one day too late', {'issue': '2027-05-10', 'first_travel': '2028-05-11'}, ['EXPIRED_UNUSED', '2028-05-10']], ['span includes Feb 29', {'issue': '2027-06-01', 'first_travel': '2027-06-01'}, ['TRAVEL', '2028-06-01']], ['late leap-year start', {'issue': '2028-05-01', 'first_travel': '2028-06-11'}, ['TRAVEL', '2029-06-11']], ['sampled case 1', {'issue': '2028-11-11', 'first_travel': '2029-05-16'}, ['TRAVEL', '2030-05-16']], ['sampled case 2', {'issue': '2027-07-24', 'first_travel': '2027-07-26'}, ['TRAVEL', '2028-07-26']], ['sampled case 3', {'issue': '2029-01-16', 'first_travel': None}, ['UNUSED', '2030-01-16']]], [['travel commenced mid-year', {'issue': '2027-03-10', 'first_travel': '2027-06-03'}, ['TRAVEL', '2028-06-03']], ['unused ticket', {'issue': '2027-02-15', 'first_travel': None}, ['UNUSED', '2028-02-15']], ['leap day issue', {'issue': '2028-02-29', 'first_travel': None}, ['UNUSED', '2029-02-28']], ['leap day first travel', {'issue': '2028-01-12', 'first_travel': '2028-02-29'}, ['TRAVEL', '2029-02-28']], ['travel exactly one year after issue', {'issue': '2027-05-12', 'first_travel': '2028-05-12'}, ['TRAVEL', '2029-05-12']], ['travel one day too late', {'issue': '2027-05-10', 'first_travel': '2028-05-11'}, ['EXPIRED_UNUSED', '2028-05-10']], ['span includes Feb 29', {'issue': '2027-06-01', 'first_travel': '2027-06-02'}, ['TRAVEL', '2028-06-02']], ['late leap-year start', {'issue': '2028-05-01', 'first_travel': '2028-06-12'}, ['TRAVEL', '2029-06-12']], ['sampled case 1', {'issue': '2027-08-03', 'first_travel': '2028-08-03'}, ['TRAVEL', '2029-08-03']], ['sampled case 2', {'issue': '2028-03-31', 'first_travel': None}, ['UNUSED', '2029-03-31']], ['sampled case 3', {'issue': '2028-06-12', 'first_travel': '2029-06-12'}, ['TRAVEL', '2030-06-12']]], [['travel commenced mid-year', {'issue': '2027-03-10', 'first_travel': '2027-06-04'}, ['TRAVEL', '2028-06-04']], ['unused ticket', {'issue': '2027-03-15', 'first_travel': None}, ['UNUSED', '2028-03-15']], ['leap day issue', {'issue': '2028-02-29', 'first_travel': None}, ['UNUSED', '2029-02-28']], ['leap day first travel', {'issue': '2028-01-13', 'first_travel': '2028-02-29'}, ['TRAVEL', '2029-02-28']], ['travel exactly one year after issue', {'issue': '2027-05-13', 'first_travel': '2028-05-13'}, ['TRAVEL', '2029-05-13']], ['travel one day too late', {'issue': '2027-05-10', 'first_travel': '2028-05-11'}, ['EXPIRED_UNUSED', '2028-05-10']], ['span includes Feb 29', {'issue': '2027-06-01', 'first_travel': '2027-06-03'}, ['TRAVEL', '2028-06-03']], ['late leap-year start', {'issue': '2028-05-01', 'first_travel': '2028-06-13'}, ['TRAVEL', '2029-06-13']], ['sampled case 1', {'issue': '2028-10-17', 'first_travel': None}, ['UNUSED', '2029-10-17']], ['sampled case 2', {'issue': '2027-02-28', 'first_travel': '2028-02-28'}, ['TRAVEL', '2029-02-28']], ['sampled case 3', {'issue': '2029-06-17', 'first_travel': '2030-04-20'}, ['TRAVEL', '2031-04-20']]], [['travel commenced mid-year', {'issue': '2027-03-10', 'first_travel': '2027-06-05'}, ['TRAVEL', '2028-06-05']], ['unused ticket', {'issue': '2027-04-15', 'first_travel': None}, ['UNUSED', '2028-04-15']], ['leap day issue', {'issue': '2028-02-29', 'first_travel': None}, ['UNUSED', '2029-02-28']], ['leap day first travel', {'issue': '2028-01-14', 'first_travel': '2028-02-29'}, ['TRAVEL', '2029-02-28']], ['travel exactly one year after issue', {'issue': '2027-05-14', 'first_travel': '2028-05-14'}, ['TRAVEL', '2029-05-14']], ['travel one day too late', {'issue': '2027-05-10', 'first_travel': '2028-05-11'}, ['EXPIRED_UNUSED', '2028-05-10']], ['span includes Feb 29', {'issue': '2027-06-01', 'first_travel': '2027-06-04'}, ['TRAVEL', '2028-06-04']], ['late leap-year start', {'issue': '2028-05-01', 'first_travel': '2028-06-14'}, ['TRAVEL', '2029-06-14']], ['sampled case 1', {'issue': '2028-11-25', 'first_travel': '2029-11-26'}, ['EXPIRED_UNUSED', '2029-11-25']], ['sampled case 2', {'issue': '2029-06-03', 'first_travel': '2030-06-04'}, ['EXPIRED_UNUSED', '2030-06-03']], ['sampled case 3', {'issue': '2028-06-18', 'first_travel': None}, ['UNUSED', '2029-06-18']]], [['travel commenced mid-year', {'issue': '2027-03-10', 'first_travel': '2027-06-06'}, ['TRAVEL', '2028-06-06']], ['unused ticket', {'issue': '2027-05-15', 'first_travel': None}, ['UNUSED', '2028-05-15']], ['leap day issue', {'issue': '2028-02-29', 'first_travel': None}, ['UNUSED', '2029-02-28']], ['leap day first travel', {'issue': '2028-01-15', 'first_travel': '2028-02-29'}, ['TRAVEL', '2029-02-28']], ['travel exactly one year after issue', {'issue': '2027-05-15', 'first_travel': '2028-05-15'}, ['TRAVEL', '2029-05-15']], ['travel one day too late', {'issue': '2027-05-10', 'first_travel': '2028-05-11'}, ['EXPIRED_UNUSED', '2028-05-10']], ['span includes Feb 29', {'issue': '2027-06-01', 'first_travel': '2027-06-05'}, ['TRAVEL', '2028-06-05']], ['late leap-year start', {'issue': '2028-05-01', 'first_travel': '2028-06-15'}, ['TRAVEL', '2029-06-15']], ['sampled case 1', {'issue': '2028-07-20', 'first_travel': '2029-07-20'}, ['TRAVEL', '2030-07-20']], ['sampled case 2', {'issue': '2027-10-29', 'first_travel': '2027-12-02'}, ['TRAVEL', '2028-12-02']], ['sampled case 3', {'issue': '2029-03-08', 'first_travel': '2029-05-13'}, ['TRAVEL', '2030-05-13']]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"A stipulated toy fare-rule contract with invented constants; it is not an ATPCO or carrier tariff implementation and makes no claim of industry-standard conformance. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-airline-fare-rules-ticket-validity-leap-day-anniversary","generated_at":"2026-09-29T14:47:45.600984+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Normal ticket validity runs one year from issue until travel commences, then one year from first travel, with calendar-year and leap-day rules.","repair":"Map a 29 February anniversary to 28 February.","root_cause":"The fallback for a missing 29 February uses 1 March.","sha256":"03be885351f8bb9f4ca81481dcce8ea7cd6d0f4c97c89fb988cacce4a0ece0ab","title":"Leap-day validity extended to 1 March · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.631,"exit_code":1,"observations":[{"actual":["TRAVEL","2028-06-02"],"check":"travel commenced mid-year","expected":["TRAVEL","2028-06-02"],"passed":true},{"actual":["UNUSED","2028-01-15"],"check":"unused ticket","expected":["UNUSED","2028-01-15"],"passed":true},{"actual":["UNUSED","2032-02-29"],"check":"leap day issue","expected":["UNUSED","2029-02-28"],"passed":false},{"actual":["TRAVEL","2032-02-29"],"check":"leap day first travel","expected":["TRAVEL","2029-02-28"],"passed":false},{"actual":["TRAVEL","2029-05-11"],"check":"travel exactly one year after issue","expected":["TRAVEL","2029-05-11"],"passed":true},{"actual":["EXPIRED_UNUSED","2028-05-10"],"check":"travel one day too late","expected":["EXPIRED_UNUSED","2028-05-10"],"passed":true},{"actual":["TRAVEL","2028-06-01"],"check":"span includes Feb 29","expected":["TRAVEL","2028-06-01"],"passed":true},{"actual":["TRAVEL","2029-06-11"],"check":"late leap-year start","expected":["TRAVEL","2029-06-11"],"passed":true},{"actual":["TRAVEL","2030-05-16"],"check":"sampled case 1","expected":["TRAVEL","2030-05-16"],"passed":true},{"actual":["TRAVEL","2028-07-26"],"check":"sampled case 2","expected":["TRAVEL","2028-07-26"],"passed":true},{"actual":["UNUSED","2030-01-16"],"check":"sampled case 3","expected":["UNUSED","2030-01-16"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"travel commenced mid-year\", \"actual\": [\"TRAVEL\", \"2028-06-02\"], \"expected\": [\"TRAVEL\", \"2028-06-02\"], \"passed\": true}, {\"check\": \"unused ticket\", \"actual\": [\"UNUSED\", \"2028-01-15\"], \"expected\": [\"UNUSED\", \"2028-01-15\"], \"passed\": true}, {\"check\": \"leap day issue\", \"actual\": [\"UNUSED\", \"2032-02-29\"], \"expected\": [\"UNUSED\", \"2029-02-28\"], \"passed\": false}, {\"check\": \"leap day first travel\", \"actual\": [\"TRAVEL\", \"2032-02-29\"], \"expected\": [\"TRAVEL\", \"2029-02-28\"], \"passed\": false}, {\"check\": \"travel exactly one year after issue\", \"actual\": [\"TRAVEL\", \"2029-05-11\"], \"expected\": [\"TRAVEL\", \"2029-05-11\"], \"passed\": true}, {\"check\": \"travel one day too late\", \"actual\": [\"EXPIRED_UNUSED\", \"2028-05-10\"], \"expected\": [\"EXPIRED_UNUSED\", \"2028-05-10\"], \"passed\": true}, {\"check\": \"span includes Feb 29\", \"actual\": [\"TRAVEL\", \"2028-06-01\"], \"expected\": [\"TRAVEL\", \"2028-06-01\"], \"passed\": true}, {\"check\": \"late leap-year start\", \"actual\": [\"TRAVEL\", \"2029-06-11\"], \"expected\": [\"TRAVEL\", \"2029-06-11\"], \"passed\": true}, {\"check\": \"sampled case 1\", \"actual\": [\"TRAVEL\", \"2030-05-16\"], \"expected\": [\"TRAVEL\", \"2030-05-16\"], \"passed\": true}, {\"check\": \"sampled case 2\", \"actual\": [\"TRAVEL\", \"2028-07-26\"], \"expected\": [\"TRAVEL\", \"2028-07-26\"], \"passed\": true}, {\"check\": \"sampled case 3\", \"actual\": [\"UNUSED\", \"2030-01-16\"], \"expected\": [\"UNUSED\", \"2030-01-16\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.284,"exit_code":1,"observations":[{"actual":["TRAVEL","2028-06-02"],"check":"travel commenced mid-year","expected":["TRAVEL","2028-06-02"],"passed":true},{"actual":["UNUSED","2028-01-15"],"check":"unused ticket","expected":["UNUSED","2028-01-15"],"passed":true},{"actual":["UNUSED","2029-03-01"],"check":"leap day issue","expected":["UNUSED","2029-02-28"],"passed":false},{"actual":["TRAVEL","2029-03-01"],"check":"leap day first travel","expected":["TRAVEL","2029-02-28"],"passed":false},{"actual":["TRAVEL","2029-05-11"],"check":"travel exactly one year after issue","expected":["TRAVEL","2029-05-11"],"passed":true},{"actual":["EXPIRED_UNUSED","2028-05-10"],"check":"travel one day too late","expected":["EXPIRED_UNUSED","2028-05-10"],"passed":true},{"actual":["TRAVEL","2028-06-01"],"check":"span includes Feb 29","expected":["TRAVEL","2028-06-01"],"passed":true},{"actual":["TRAVEL","2029-06-11"],"check":"late leap-year start","expected":["TRAVEL","2029-06-11"],"passed":true},{"actual":["TRAVEL","2030-05-16"],"check":"sampled case 1","expected":["TRAVEL","2030-05-16"],"passed":true},{"actual":["TRAVEL","2028-07-26"],"check":"sampled case 2","expected":["TRAVEL","2028-07-26"],"passed":true},{"actual":["UNUSED","2030-01-16"],"check":"sampled case 3","expected":["UNUSED","2030-01-16"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"travel commenced mid-year\", \"actual\": [\"TRAVEL\", \"2028-06-02\"], \"expected\": [\"TRAVEL\", \"2028-06-02\"], \"passed\": true}, {\"check\": \"unused ticket\", \"actual\": [\"UNUSED\", \"2028-01-15\"], \"expected\": [\"UNUSED\", \"2028-01-15\"], \"passed\": true}, {\"check\": \"leap day issue\", \"actual\": [\"UNUSED\", \"2029-03-01\"], \"expected\": [\"UNUSED\", \"2029-02-28\"], \"passed\": false}, {\"check\": \"leap day first travel\", \"actual\": [\"TRAVEL\", \"2029-03-01\"], \"expected\": [\"TRAVEL\", \"2029-02-28\"], \"passed\": false}, {\"check\": \"travel exactly one year after issue\", \"actual\": [\"TRAVEL\", \"2029-05-11\"], \"expected\": [\"TRAVEL\", \"2029-05-11\"], \"passed\": true}, {\"check\": \"travel one day too late\", \"actual\": [\"EXPIRED_UNUSED\", \"2028-05-10\"], \"expected\": [\"EXPIRED_UNUSED\", \"2028-05-10\"], \"passed\": true}, {\"check\": \"span includes Feb 29\", \"actual\": [\"TRAVEL\", \"2028-06-01\"], \"expected\": [\"TRAVEL\", \"2028-06-01\"], \"passed\": true}, {\"check\": \"late leap-year start\", \"actual\": [\"TRAVEL\", \"2029-06-11\"], \"expected\": [\"TRAVEL\", \"2029-06-11\"], \"passed\": true}, {\"check\": \"sampled case 1\", \"actual\": [\"TRAVEL\", \"2030-05-16\"], \"expected\": [\"TRAVEL\", \"2030-05-16\"], \"passed\": true}, {\"check\": \"sampled case 2\", \"actual\": [\"TRAVEL\", \"2028-07-26\"], \"expected\": [\"TRAVEL\", \"2028-07-26\"], \"passed\": true}, {\"check\": \"sampled case 3\", \"actual\": [\"UNUSED\", \"2030-01-16\"], \"expected\": [\"UNUSED\", \"2030-01-16\"], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.669,"exit_code":0,"observations":[{"actual":["TRAVEL","2028-06-02"],"check":"travel commenced mid-year","expected":["TRAVEL","2028-06-02"],"passed":true},{"actual":["UNUSED","2028-01-15"],"check":"unused ticket","expected":["UNUSED","2028-01-15"],"passed":true},{"actual":["UNUSED","2029-02-28"],"check":"leap day issue","expected":["UNUSED","2029-02-28"],"passed":true},{"actual":["TRAVEL","2029-02-28"],"check":"leap day first travel","expected":["TRAVEL","2029-02-28"],"passed":true},{"actual":["TRAVEL","2029-05-11"],"check":"travel exactly one year after issue","expected":["TRAVEL","2029-05-11"],"passed":true},{"actual":["EXPIRED_UNUSED","2028-05-10"],"check":"travel one day too late","expected":["EXPIRED_UNUSED","2028-05-10"],"passed":true},{"actual":["TRAVEL","2028-06-01"],"check":"span includes Feb 29","expected":["TRAVEL","2028-06-01"],"passed":true},{"actual":["TRAVEL","2029-06-11"],"check":"late leap-year start","expected":["TRAVEL","2029-06-11"],"passed":true},{"actual":["TRAVEL","2030-05-16"],"check":"sampled case 1","expected":["TRAVEL","2030-05-16"],"passed":true},{"actual":["TRAVEL","2028-07-26"],"check":"sampled case 2","expected":["TRAVEL","2028-07-26"],"passed":true},{"actual":["UNUSED","2030-01-16"],"check":"sampled case 3","expected":["UNUSED","2030-01-16"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"travel commenced mid-year\", \"actual\": [\"TRAVEL\", \"2028-06-02\"], \"expected\": [\"TRAVEL\", \"2028-06-02\"], \"passed\": true}, {\"check\": \"unused ticket\", \"actual\": [\"UNUSED\", \"2028-01-15\"], \"expected\": [\"UNUSED\", \"2028-01-15\"], \"passed\": true}, {\"check\": \"leap day issue\", \"actual\": [\"UNUSED\", \"2029-02-28\"], \"expected\": [\"UNUSED\", \"2029-02-28\"], \"passed\": true}, {\"check\": \"leap day first travel\", \"actual\": [\"TRAVEL\", \"2029-02-28\"], \"expected\": [\"TRAVEL\", \"2029-02-28\"], \"passed\": true}, {\"check\": \"travel exactly one year after issue\", \"actual\": [\"TRAVEL\", \"2029-05-11\"], \"expected\": [\"TRAVEL\", \"2029-05-11\"], \"passed\": true}, {\"check\": \"travel one day too late\", \"actual\": [\"EXPIRED_UNUSED\", \"2028-05-10\"], \"expected\": [\"EXPIRED_UNUSED\", \"2028-05-10\"], \"passed\": true}, {\"check\": \"span includes Feb 29\", \"actual\": [\"TRAVEL\", \"2028-06-01\"], \"expected\": [\"TRAVEL\", \"2028-06-01\"], \"passed\": true}, {\"check\": \"late leap-year start\", \"actual\": [\"TRAVEL\", \"2029-06-11\"], \"expected\": [\"TRAVEL\", \"2029-06-11\"], \"passed\": true}, {\"check\": \"sampled case 1\", \"actual\": [\"TRAVEL\", \"2030-05-16\"], \"expected\": [\"TRAVEL\", \"2030-05-16\"], \"passed\": true}, {\"check\": \"sampled case 2\", \"actual\": [\"TRAVEL\", \"2028-07-26\"], \"expected\": [\"TRAVEL\", \"2028-07-26\"], \"passed\": true}, {\"check\": \"sampled case 3\", \"actual\": [\"UNUSED\", \"2030-01-16\"], \"expected\": [\"UNUSED\", \"2030-01-16\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}