FA-66651 / Airline fare rule evaluation / Open access
Leap-day validity extended to 1 March · case 01
A ticket issued on 29 February remains valid on 1 March of the next year.
ROOT CAUSE
The fallback for a missing 29 February uses 1 March.
VERIFIED REPAIR
Map a 29 February anniversary to 28 February.
Unsuccessful approach: Jumping to the next 29 February extends validity by four years.
Case 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].
Why this case matters
Normal ticket validity runs one year from issue until travel commences, then one year from first travel, with calendar-year and leap-day rules.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import datetime
import calendar
N = 1
observations = []
def solve(x):
iss = datetime.date.fromisoformat(x['issue'])
def plus_year(d):
try:
return d.replace(year=d.year + 1)
except ValueError:
return datetime.date(d.year + 1, 3, 1)
if x['first_travel'] is None:
return ['UNUSED', plus_year(iss).isoformat()]
ft = datetime.date.fromisoformat(x['first_travel'])
if ft > plus_year(iss): return ['EXPIRED_UNUSED', plus_year(iss).isoformat()]
return ['TRAVEL', plus_year(ft).isoformat()]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['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']]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| travel commenced mid-year | ['TRAVEL', '2028-06-02'] | ['TRAVEL', '2028-06-02'] | Passed |
| unused ticket | ['UNUSED', '2028-01-15'] | ['UNUSED', '2028-01-15'] | Passed |
| leap day issue | ['UNUSED', '2029-03-01'] | ['UNUSED', '2029-02-28'] | Failed |
| leap day first travel | ['TRAVEL', '2029-03-01'] | ['TRAVEL', '2029-02-28'] | Failed |
| travel exactly one year after issue | ['TRAVEL', '2029-05-11'] | ['TRAVEL', '2029-05-11'] | Passed |
| travel one day too late | ['EXPIRED_UNUSED', '2028-05-10'] | ['EXPIRED_UNUSED', '2028-05-10'] | Passed |
| span includes Feb 29 | ['TRAVEL', '2028-06-01'] | ['TRAVEL', '2028-06-01'] | Passed |
| late leap-year start | ['TRAVEL', '2029-06-11'] | ['TRAVEL', '2029-06-11'] | Passed |
| sampled case 1 | ['TRAVEL', '2030-05-16'] | ['TRAVEL', '2030-05-16'] | Passed |
| sampled case 2 | ['TRAVEL', '2028-07-26'] | ['TRAVEL', '2028-07-26'] | Passed |
| sampled case 3 | ['UNUSED', '2030-01-16'] | ['UNUSED', '2030-01-16'] | Passed |
SHA-256 / 0e5db0cae32bdd1e901102c233cfe39c57d84b2a3a4816b2e1157ce198226f6f
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import datetime
import calendar
N = 1
observations = []
def solve(x):
iss = datetime.date.fromisoformat(x['issue'])
def plus_year(d):
try:
return d.replace(year=d.year + 1)
except ValueError:
return datetime.date(d.year + 4, 2, 29)
if x['first_travel'] is None:
return ['UNUSED', plus_year(iss).isoformat()]
ft = datetime.date.fromisoformat(x['first_travel'])
if ft > plus_year(iss): return ['EXPIRED_UNUSED', plus_year(iss).isoformat()]
return ['TRAVEL', plus_year(ft).isoformat()]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['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']]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| travel commenced mid-year | ['TRAVEL', '2028-06-02'] | ['TRAVEL', '2028-06-02'] | Passed |
| unused ticket | ['UNUSED', '2028-01-15'] | ['UNUSED', '2028-01-15'] | Passed |
| leap day issue | ['UNUSED', '2032-02-29'] | ['UNUSED', '2029-02-28'] | Failed |
| leap day first travel | ['TRAVEL', '2032-02-29'] | ['TRAVEL', '2029-02-28'] | Failed |
| travel exactly one year after issue | ['TRAVEL', '2029-05-11'] | ['TRAVEL', '2029-05-11'] | Passed |
| travel one day too late | ['EXPIRED_UNUSED', '2028-05-10'] | ['EXPIRED_UNUSED', '2028-05-10'] | Passed |
| span includes Feb 29 | ['TRAVEL', '2028-06-01'] | ['TRAVEL', '2028-06-01'] | Passed |
| late leap-year start | ['TRAVEL', '2029-06-11'] | ['TRAVEL', '2029-06-11'] | Passed |
| sampled case 1 | ['TRAVEL', '2030-05-16'] | ['TRAVEL', '2030-05-16'] | Passed |
| sampled case 2 | ['TRAVEL', '2028-07-26'] | ['TRAVEL', '2028-07-26'] | Passed |
| sampled case 3 | ['UNUSED', '2030-01-16'] | ['UNUSED', '2030-01-16'] | Passed |
SHA-256 / 9b5b7499b4f15c6f6077ec0394a851b90f9e732bb727869e50097e229e0eda89
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import datetime
import calendar
N = 1
observations = []
def solve(x):
iss = datetime.date.fromisoformat(x['issue'])
def plus_year(d):
try:
return d.replace(year=d.year + 1)
except ValueError:
return datetime.date(d.year + 1, 2, 28)
if x['first_travel'] is None:
return ['UNUSED', plus_year(iss).isoformat()]
ft = datetime.date.fromisoformat(x['first_travel'])
if ft > plus_year(iss): return ['EXPIRED_UNUSED', plus_year(iss).isoformat()]
return ['TRAVEL', plus_year(ft).isoformat()]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['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']]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| travel commenced mid-year | ['TRAVEL', '2028-06-02'] | ['TRAVEL', '2028-06-02'] | Passed |
| unused ticket | ['UNUSED', '2028-01-15'] | ['UNUSED', '2028-01-15'] | Passed |
| leap day issue | ['UNUSED', '2029-02-28'] | ['UNUSED', '2029-02-28'] | Passed |
| leap day first travel | ['TRAVEL', '2029-02-28'] | ['TRAVEL', '2029-02-28'] | Passed |
| travel exactly one year after issue | ['TRAVEL', '2029-05-11'] | ['TRAVEL', '2029-05-11'] | Passed |
| travel one day too late | ['EXPIRED_UNUSED', '2028-05-10'] | ['EXPIRED_UNUSED', '2028-05-10'] | Passed |
| span includes Feb 29 | ['TRAVEL', '2028-06-01'] | ['TRAVEL', '2028-06-01'] | Passed |
| late leap-year start | ['TRAVEL', '2029-06-11'] | ['TRAVEL', '2029-06-11'] | Passed |
| sampled case 1 | ['TRAVEL', '2030-05-16'] | ['TRAVEL', '2030-05-16'] | Passed |
| sampled case 2 | ['TRAVEL', '2028-07-26'] | ['TRAVEL', '2028-07-26'] | Passed |
| sampled case 3 | ['UNUSED', '2030-01-16'] | ['UNUSED', '2030-01-16'] | Passed |
SHA-256 / 9ad052ebbaa76684faac17e8c0b861e155b27e67a4dc152b5a5bb33c435063cf
Verification & scope
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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:47:45.600984+00:00.
Case digest / 03be885351f8bb9f4ca81481dcce8ea7cd6d0f4c97c89fb988cacce4a0ece0ab