FAILURE MAP
← Case archive

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.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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