FA-77711 / Legal deadline computation / Open access
Docket countdown: court days remaining and urgency status: due today · case 01
A Monday deadline viewed on Saturday is reported as due today.
ROOT CAUSE
Due today is inferred from zero court days remaining.
VERIFIED REPAIR
At the due today decision use `cal == 0`, leaving the other decision sites of the model unchanged.
Unsuccessful approach: The partial repair `cal <= 1` also marks tomorrow as due today.
Case contract
For today and a deadline, return [calendar days remaining, court days remaining, status]. Court days remaining counts open days (not Saturday, Sunday or a listed holiday) after today up to and including the deadline; it is None when the deadline has passed. Status is "overdue" if the deadline is before today, "due today" if equal, "due soon" if at most 3 court days remain, else "open".
Why this case matters
Docketing systems compute filing and response deadlines from trigger events; a wrong date can forfeit a right.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import datetime as dt
import calendar
N = 1
observations = []
def solve(today, deadline, holidays):
t = dt.date.fromisoformat(today)
dl = dt.date.fromisoformat(deadline)
hol = {dt.date.fromisoformat(x) for x in holidays}
cal = (dl - t).days
if cal < 0:
court = None
else:
court = sum(1 for i in range(1, cal + 1) if (t + dt.timedelta(days=i)).weekday() < 5 and t + dt.timedelta(days=i) not in hol)
if cal < 0:
status = 'overdue'
elif court == 0:
status = 'due today'
elif court <= 3:
status = 'due soon'
else:
status = 'open'
return [cal, court, status]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: saturday before monday deadline',
['2024-03-09',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[2, 1, 'due soon']),
('deadline today',
['2024-03-11',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[0, 0, 'due today']),
('yesterday',
['2024-03-12',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-1, None, 'overdue']),
('three court days',
['2024-03-11',
'2024-03-14',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[3, 3, 'due soon']),
('long weekend',
['2024-05-24',
'2024-05-30',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[6, 3, 'due soon']),
('five calendar four court',
['2024-05-23',
'2024-05-28',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[5, 2, 'due soon']),
('far off',
['2024-01-02',
'2024-02-15',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[44, 31, 'open']),
('saturday before sunday deadline',
['2024-03-09',
'2024-03-10',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 0, 'due soon'])],
[('yesterday',
['2024-03-12',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-1, None, 'overdue']),
('three court days',
['2024-03-11',
'2024-03-14',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[3, 3, 'due soon']),
('long weekend',
['2024-05-24',
'2024-05-30',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[6, 3, 'due soon']),
('five calendar four court',
['2024-05-23',
'2024-05-28',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[5, 2, 'due soon']),
('far off',
['2024-01-02',
'2024-02-15',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[44, 31, 'open']),
('tomorrow',
['2024-04-01',
'2024-04-02',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 1, 'due soon']),
('two weeks ago',
['2024-04-15',
'2024-04-01',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-14, None, 'overdue']),
('saturday before sunday deadline',
['2024-03-09',
'2024-03-10',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 0, 'due soon'])],
[('long weekend',
['2024-05-24',
'2024-05-30',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[6, 3, 'due soon']),
('five calendar four court',
['2024-05-23',
'2024-05-28',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[5, 2, 'due soon']),
('far off',
['2024-01-02',
'2024-02-15',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[44, 31, 'open']),
('tomorrow',
['2024-04-01',
'2024-04-02',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 1, 'due soon']),
('two weeks ago',
['2024-04-15',
'2024-04-01',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-14, None, 'overdue']),
('friday to wednesday',
['2024-06-14',
'2024-06-19',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[5, 2, 'due soon']),
('thanksgiving week',
['2024-11-26',
'2024-12-02',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[6, 3, 'due soon']),
('saturday before sunday deadline',
['2024-03-09',
'2024-03-10',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 0, 'due soon'])],
[('far off',
['2024-01-02',
'2024-02-15',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[44, 31, 'open']),
('tomorrow',
['2024-04-01',
'2024-04-02',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 1, 'due soon']),
('two weeks ago',
['2024-04-15',
'2024-04-01',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-14, None, 'overdue']),
('friday to wednesday',
['2024-06-14',
'2024-06-19',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[5, 2, 'due soon']),
('thanksgiving week',
['2024-11-26',
'2024-12-02',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[6, 3, 'due soon']),
('saturday before sunday deadline',
['2024-03-09',
'2024-03-10',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 0, 'due soon']),
('regression: saturday before monday deadline',
['2024-03-09',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[2, 1, 'due soon'])],
[('two weeks ago',
['2024-04-15',
'2024-04-01',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-14, None, 'overdue']),
('friday to wednesday',
['2024-06-14',
'2024-06-19',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[5, 2, 'due soon']),
('thanksgiving week',
['2024-11-26',
'2024-12-02',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[6, 3, 'due soon']),
('saturday before sunday deadline',
['2024-03-09',
'2024-03-10',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 0, 'due soon']),
('regression: saturday before monday deadline',
['2024-03-09',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[2, 1, 'due soon']),
('deadline today',
['2024-03-11',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[0, 0, 'due today']),
('yesterday',
['2024-03-12',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-1, None, 'overdue'])]]
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 |
|---|---|---|---|
| regression: saturday before monday deadline | [2, 1, 'due soon'] | [2, 1, 'due soon'] | Passed |
| deadline today | [0, 0, 'due today'] | [0, 0, 'due today'] | Passed |
| yesterday | [-1, None, 'overdue'] | [-1, None, 'overdue'] | Passed |
| three court days | [3, 3, 'due soon'] | [3, 3, 'due soon'] | Passed |
| long weekend | [6, 3, 'due soon'] | [6, 3, 'due soon'] | Passed |
| five calendar four court | [5, 2, 'due soon'] | [5, 2, 'due soon'] | Passed |
| far off | [44, 31, 'open'] | [44, 31, 'open'] | Passed |
| saturday before sunday deadline | [1, 0, 'due today'] | [1, 0, 'due soon'] | Failed |
SHA-256 / 7e0062a8ea686cfb9976e904c3a6f482e1f9d6af6c2a1ada3ac82631d9a2d6e8
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import datetime as dt
import calendar
N = 1
observations = []
def solve(today, deadline, holidays):
t = dt.date.fromisoformat(today)
dl = dt.date.fromisoformat(deadline)
hol = {dt.date.fromisoformat(x) for x in holidays}
cal = (dl - t).days
if cal < 0:
court = None
else:
court = sum(1 for i in range(1, cal + 1) if (t + dt.timedelta(days=i)).weekday() < 5 and t + dt.timedelta(days=i) not in hol)
if cal < 0:
status = 'overdue'
elif cal <= 1:
status = 'due today'
elif court <= 3:
status = 'due soon'
else:
status = 'open'
return [cal, court, status]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: saturday before monday deadline',
['2024-03-09',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[2, 1, 'due soon']),
('deadline today',
['2024-03-11',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[0, 0, 'due today']),
('yesterday',
['2024-03-12',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-1, None, 'overdue']),
('three court days',
['2024-03-11',
'2024-03-14',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[3, 3, 'due soon']),
('long weekend',
['2024-05-24',
'2024-05-30',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[6, 3, 'due soon']),
('five calendar four court',
['2024-05-23',
'2024-05-28',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[5, 2, 'due soon']),
('far off',
['2024-01-02',
'2024-02-15',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[44, 31, 'open']),
('saturday before sunday deadline',
['2024-03-09',
'2024-03-10',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 0, 'due soon'])],
[('yesterday',
['2024-03-12',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-1, None, 'overdue']),
('three court days',
['2024-03-11',
'2024-03-14',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[3, 3, 'due soon']),
('long weekend',
['2024-05-24',
'2024-05-30',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[6, 3, 'due soon']),
('five calendar four court',
['2024-05-23',
'2024-05-28',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[5, 2, 'due soon']),
('far off',
['2024-01-02',
'2024-02-15',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[44, 31, 'open']),
('tomorrow',
['2024-04-01',
'2024-04-02',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 1, 'due soon']),
('two weeks ago',
['2024-04-15',
'2024-04-01',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-14, None, 'overdue']),
('saturday before sunday deadline',
['2024-03-09',
'2024-03-10',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 0, 'due soon'])],
[('long weekend',
['2024-05-24',
'2024-05-30',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[6, 3, 'due soon']),
('five calendar four court',
['2024-05-23',
'2024-05-28',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[5, 2, 'due soon']),
('far off',
['2024-01-02',
'2024-02-15',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[44, 31, 'open']),
('tomorrow',
['2024-04-01',
'2024-04-02',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 1, 'due soon']),
('two weeks ago',
['2024-04-15',
'2024-04-01',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-14, None, 'overdue']),
('friday to wednesday',
['2024-06-14',
'2024-06-19',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[5, 2, 'due soon']),
('thanksgiving week',
['2024-11-26',
'2024-12-02',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[6, 3, 'due soon']),
('saturday before sunday deadline',
['2024-03-09',
'2024-03-10',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 0, 'due soon'])],
[('far off',
['2024-01-02',
'2024-02-15',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[44, 31, 'open']),
('tomorrow',
['2024-04-01',
'2024-04-02',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 1, 'due soon']),
('two weeks ago',
['2024-04-15',
'2024-04-01',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-14, None, 'overdue']),
('friday to wednesday',
['2024-06-14',
'2024-06-19',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[5, 2, 'due soon']),
('thanksgiving week',
['2024-11-26',
'2024-12-02',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[6, 3, 'due soon']),
('saturday before sunday deadline',
['2024-03-09',
'2024-03-10',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 0, 'due soon']),
('regression: saturday before monday deadline',
['2024-03-09',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[2, 1, 'due soon'])],
[('two weeks ago',
['2024-04-15',
'2024-04-01',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-14, None, 'overdue']),
('friday to wednesday',
['2024-06-14',
'2024-06-19',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[5, 2, 'due soon']),
('thanksgiving week',
['2024-11-26',
'2024-12-02',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[6, 3, 'due soon']),
('saturday before sunday deadline',
['2024-03-09',
'2024-03-10',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 0, 'due soon']),
('regression: saturday before monday deadline',
['2024-03-09',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[2, 1, 'due soon']),
('deadline today',
['2024-03-11',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[0, 0, 'due today']),
('yesterday',
['2024-03-12',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-1, None, 'overdue'])]]
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 |
|---|---|---|---|
| regression: saturday before monday deadline | [2, 1, 'due soon'] | [2, 1, 'due soon'] | Passed |
| deadline today | [0, 0, 'due today'] | [0, 0, 'due today'] | Passed |
| yesterday | [-1, None, 'overdue'] | [-1, None, 'overdue'] | Passed |
| three court days | [3, 3, 'due soon'] | [3, 3, 'due soon'] | Passed |
| long weekend | [6, 3, 'due soon'] | [6, 3, 'due soon'] | Passed |
| five calendar four court | [5, 2, 'due soon'] | [5, 2, 'due soon'] | Passed |
| far off | [44, 31, 'open'] | [44, 31, 'open'] | Passed |
| saturday before sunday deadline | [1, 0, 'due today'] | [1, 0, 'due soon'] | Failed |
SHA-256 / a775c5a8ddaf933e464500538ac422cffde0a242d719b7d3dc842baa91e1a0c1
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import datetime as dt
import calendar
N = 1
observations = []
def solve(today, deadline, holidays):
t = dt.date.fromisoformat(today)
dl = dt.date.fromisoformat(deadline)
hol = {dt.date.fromisoformat(x) for x in holidays}
cal = (dl - t).days
if cal < 0:
court = None
else:
court = sum(1 for i in range(1, cal + 1) if (t + dt.timedelta(days=i)).weekday() < 5 and t + dt.timedelta(days=i) not in hol)
if cal < 0:
status = 'overdue'
elif cal == 0:
status = 'due today'
elif court <= 3:
status = 'due soon'
else:
status = 'open'
return [cal, court, status]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: saturday before monday deadline',
['2024-03-09',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[2, 1, 'due soon']),
('deadline today',
['2024-03-11',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[0, 0, 'due today']),
('yesterday',
['2024-03-12',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-1, None, 'overdue']),
('three court days',
['2024-03-11',
'2024-03-14',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[3, 3, 'due soon']),
('long weekend',
['2024-05-24',
'2024-05-30',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[6, 3, 'due soon']),
('five calendar four court',
['2024-05-23',
'2024-05-28',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[5, 2, 'due soon']),
('far off',
['2024-01-02',
'2024-02-15',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[44, 31, 'open']),
('saturday before sunday deadline',
['2024-03-09',
'2024-03-10',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 0, 'due soon'])],
[('yesterday',
['2024-03-12',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-1, None, 'overdue']),
('three court days',
['2024-03-11',
'2024-03-14',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[3, 3, 'due soon']),
('long weekend',
['2024-05-24',
'2024-05-30',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[6, 3, 'due soon']),
('five calendar four court',
['2024-05-23',
'2024-05-28',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[5, 2, 'due soon']),
('far off',
['2024-01-02',
'2024-02-15',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[44, 31, 'open']),
('tomorrow',
['2024-04-01',
'2024-04-02',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 1, 'due soon']),
('two weeks ago',
['2024-04-15',
'2024-04-01',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-14, None, 'overdue']),
('saturday before sunday deadline',
['2024-03-09',
'2024-03-10',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 0, 'due soon'])],
[('long weekend',
['2024-05-24',
'2024-05-30',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[6, 3, 'due soon']),
('five calendar four court',
['2024-05-23',
'2024-05-28',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[5, 2, 'due soon']),
('far off',
['2024-01-02',
'2024-02-15',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[44, 31, 'open']),
('tomorrow',
['2024-04-01',
'2024-04-02',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 1, 'due soon']),
('two weeks ago',
['2024-04-15',
'2024-04-01',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-14, None, 'overdue']),
('friday to wednesday',
['2024-06-14',
'2024-06-19',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[5, 2, 'due soon']),
('thanksgiving week',
['2024-11-26',
'2024-12-02',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[6, 3, 'due soon']),
('saturday before sunday deadline',
['2024-03-09',
'2024-03-10',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 0, 'due soon'])],
[('far off',
['2024-01-02',
'2024-02-15',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[44, 31, 'open']),
('tomorrow',
['2024-04-01',
'2024-04-02',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 1, 'due soon']),
('two weeks ago',
['2024-04-15',
'2024-04-01',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-14, None, 'overdue']),
('friday to wednesday',
['2024-06-14',
'2024-06-19',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[5, 2, 'due soon']),
('thanksgiving week',
['2024-11-26',
'2024-12-02',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[6, 3, 'due soon']),
('saturday before sunday deadline',
['2024-03-09',
'2024-03-10',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 0, 'due soon']),
('regression: saturday before monday deadline',
['2024-03-09',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[2, 1, 'due soon'])],
[('two weeks ago',
['2024-04-15',
'2024-04-01',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-14, None, 'overdue']),
('friday to wednesday',
['2024-06-14',
'2024-06-19',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[5, 2, 'due soon']),
('thanksgiving week',
['2024-11-26',
'2024-12-02',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[6, 3, 'due soon']),
('saturday before sunday deadline',
['2024-03-09',
'2024-03-10',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[1, 0, 'due soon']),
('regression: saturday before monday deadline',
['2024-03-09',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[2, 1, 'due soon']),
('deadline today',
['2024-03-11',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[0, 0, 'due today']),
('yesterday',
['2024-03-12',
'2024-03-11',
['2024-01-01',
'2024-01-15',
'2024-02-19',
'2024-05-27',
'2024-06-19',
'2024-07-04',
'2024-09-02',
'2024-10-14',
'2024-11-11',
'2024-11-28',
'2024-12-25']],
[-1, None, 'overdue'])]]
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 |
|---|---|---|---|
| regression: saturday before monday deadline | [2, 1, 'due soon'] | [2, 1, 'due soon'] | Passed |
| deadline today | [0, 0, 'due today'] | [0, 0, 'due today'] | Passed |
| yesterday | [-1, None, 'overdue'] | [-1, None, 'overdue'] | Passed |
| three court days | [3, 3, 'due soon'] | [3, 3, 'due soon'] | Passed |
| long weekend | [6, 3, 'due soon'] | [6, 3, 'due soon'] | Passed |
| five calendar four court | [5, 2, 'due soon'] | [5, 2, 'due soon'] | Passed |
| far off | [44, 31, 'open'] | [44, 31, 'open'] | Passed |
| saturday before sunday deadline | [1, 0, 'due soon'] | [1, 0, 'due soon'] | Passed |
SHA-256 / 065f19b0ed52bb655e35b9c7232aa6e23d34767348b26553d4bcd12f34641fec
Verification & scope
Stipulated toy deadline rules evaluated offline on explicit fixtures. The contract is inspired by common court-rule structures but is not legal advice and makes no claim to reproduce any jurisdiction's rules. 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:49:28.339192+00:00.
Case digest / b69a91013a14ec2269a0acda01f296e5143967b2ed676f5aec1aa44d7c36e7ba