FAILURE MAP
← Case archive

FA-77751 / Legal deadline computation / Open access

Deadlines extended by a bankruptcy filing and automatic stay: stay default · case 01

A collection deadline with the stay still in force is given a computed date.

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

ROOT CAUSE

An unknown stay end defaults to the petition date, as if the stay had already ended.

VERIFIED REPAIR

At the stay default decision use `None`, leaving the other decision sites of the model unchanged.

Unsuccessful approach: The partial repair `p + dt.timedelta(days=60)` defaults the unknown stay end to petition + 60 days, still inventing an end date.

Case contract

Stipulated: for each deadline [kind, date] and petition date p: a deadline before p had already expired and is returned as [date, "expired"]. An "act" deadline becomes the later of its date and p + 60 days. A "collection" deadline becomes the later of its date and stay_end + 30 days; if stay_end is None it is "stayed". Return [date or None, status] per deadline, status "extended" when the date moved and "unchanged" otherwise.

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(petition, stay_end, deadlines):
    p = dt.date.fromisoformat(petition)
    out = []
    stay = dt.date.fromisoformat(stay_end) if stay_end else p
    for kind, due in deadlines:
        d = dt.date.fromisoformat(due)
        if d < p:
            out.append([due, 'expired'])
            continue
        if kind == 'act':
            new = max(d, p + dt.timedelta(days=60))
        elif stay is None:
            out.append([None, 'stayed'])
            continue
        else:
            new = max(d, stay + dt.timedelta(days=30))
        out.append([new.isoformat(), 'extended' if new != d else 'unchanged'])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: late act deadline',
   ['2024-03-01', '2024-06-01', [['act', '2024-07-15']]],
   [['2024-07-15', 'unchanged']]),
  ('act soon after petition',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-10']]],
   [['2024-04-30', 'extended']]),
  ('deadline on petition date',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-01']]],
   [['2024-04-30', 'extended']]),
  ('expired day before', ['2024-03-01', '2024-06-01', [['act', '2024-02-29']]], [['2024-02-29', 'expired']]),
  ('collection after stay',
   ['2024-03-01', '2024-06-01', [['collection', '2024-03-15']]],
   [['2024-07-01', 'extended']]),
  ('collection stay pending',
   ['2024-03-01', None, [['collection', '2024-03-15'], ['act', '2024-03-20']]],
   [[None, 'stayed'], ['2024-04-30', 'extended']]),
  ('collection late anyway',
   ['2024-03-01', '2024-04-01', [['collection', '2024-06-30']]],
   [['2024-06-30', 'unchanged']])],
 [('deadline on petition date',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-01']]],
   [['2024-04-30', 'extended']]),
  ('expired day before', ['2024-03-01', '2024-06-01', [['act', '2024-02-29']]], [['2024-02-29', 'expired']]),
  ('collection after stay',
   ['2024-03-01', '2024-06-01', [['collection', '2024-03-15']]],
   [['2024-07-01', 'extended']]),
  ('collection stay pending',
   ['2024-03-01', None, [['collection', '2024-03-15'], ['act', '2024-03-20']]],
   [[None, 'stayed'], ['2024-04-30', 'extended']]),
  ('collection late anyway',
   ['2024-03-01', '2024-04-01', [['collection', '2024-06-30']]],
   [['2024-06-30', 'unchanged']]),
  ('mixed list',
   ['2024-05-10', '2024-05-20', [['act', '2024-05-01'], ['collection', '2024-05-12'], ['act', '2024-08-01']]],
   [['2024-05-01', 'expired'], ['2024-06-19', 'extended'], ['2024-08-01', 'unchanged']]),
  ('collection due after petition before stay end',
   ['2024-01-10', '2024-02-05', [['collection', '2024-02-01']]],
   [['2024-03-06', 'extended']])],
 [('collection after stay',
   ['2024-03-01', '2024-06-01', [['collection', '2024-03-15']]],
   [['2024-07-01', 'extended']]),
  ('collection stay pending',
   ['2024-03-01', None, [['collection', '2024-03-15'], ['act', '2024-03-20']]],
   [[None, 'stayed'], ['2024-04-30', 'extended']]),
  ('collection late anyway',
   ['2024-03-01', '2024-04-01', [['collection', '2024-06-30']]],
   [['2024-06-30', 'unchanged']]),
  ('mixed list',
   ['2024-05-10', '2024-05-20', [['act', '2024-05-01'], ['collection', '2024-05-12'], ['act', '2024-08-01']]],
   [['2024-05-01', 'expired'], ['2024-06-19', 'extended'], ['2024-08-01', 'unchanged']]),
  ('collection due after petition before stay end',
   ['2024-01-10', '2024-02-05', [['collection', '2024-02-01']]],
   [['2024-03-06', 'extended']]),
  ('stay pending act only', ['2024-02-01', None, [['act', '2024-02-02']]], [['2024-04-01', 'extended']]),
  ('regression: late act deadline',
   ['2024-03-01', '2024-06-01', [['act', '2024-07-15']]],
   [['2024-07-15', 'unchanged']])],
 [('collection late anyway',
   ['2024-03-01', '2024-04-01', [['collection', '2024-06-30']]],
   [['2024-06-30', 'unchanged']]),
  ('mixed list',
   ['2024-05-10', '2024-05-20', [['act', '2024-05-01'], ['collection', '2024-05-12'], ['act', '2024-08-01']]],
   [['2024-05-01', 'expired'], ['2024-06-19', 'extended'], ['2024-08-01', 'unchanged']]),
  ('collection due after petition before stay end',
   ['2024-01-10', '2024-02-05', [['collection', '2024-02-01']]],
   [['2024-03-06', 'extended']]),
  ('stay pending act only', ['2024-02-01', None, [['act', '2024-02-02']]], [['2024-04-01', 'extended']]),
  ('regression: late act deadline',
   ['2024-03-01', '2024-06-01', [['act', '2024-07-15']]],
   [['2024-07-15', 'unchanged']]),
  ('act soon after petition',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-10']]],
   [['2024-04-30', 'extended']]),
  ('deadline on petition date',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-01']]],
   [['2024-04-30', 'extended']]),
  ('collection stay pending',
   ['2024-03-01', None, [['collection', '2024-03-15'], ['act', '2024-03-20']]],
   [[None, 'stayed'], ['2024-04-30', 'extended']])],
 [('collection due after petition before stay end',
   ['2024-01-10', '2024-02-05', [['collection', '2024-02-01']]],
   [['2024-03-06', 'extended']]),
  ('stay pending act only', ['2024-02-01', None, [['act', '2024-02-02']]], [['2024-04-01', 'extended']]),
  ('regression: late act deadline',
   ['2024-03-01', '2024-06-01', [['act', '2024-07-15']]],
   [['2024-07-15', 'unchanged']]),
  ('act soon after petition',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-10']]],
   [['2024-04-30', 'extended']]),
  ('deadline on petition date',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-01']]],
   [['2024-04-30', 'extended']]),
  ('expired day before', ['2024-03-01', '2024-06-01', [['act', '2024-02-29']]], [['2024-02-29', 'expired']]),
  ('collection after stay',
   ['2024-03-01', '2024-06-01', [['collection', '2024-03-15']]],
   [['2024-07-01', 'extended']]),
  ('collection stay pending',
   ['2024-03-01', None, [['collection', '2024-03-15'], ['act', '2024-03-20']]],
   [[None, 'stayed'], ['2024-04-30', 'extended']])]]
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: late act deadline[['2024-07-15', 'unchanged']][['2024-07-15', 'unchanged']]Passed
act soon after petition[['2024-04-30', 'extended']][['2024-04-30', 'extended']]Passed
deadline on petition date[['2024-04-30', 'extended']][['2024-04-30', 'extended']]Passed
expired day before[['2024-02-29', 'expired']][['2024-02-29', 'expired']]Passed
collection after stay[['2024-07-01', 'extended']][['2024-07-01', 'extended']]Passed
collection stay pending[['2024-03-31', 'extended'], ['2024-04-30', 'extended']][[None, 'stayed'], ['2024-04-30', 'extended']]Failed
collection late anyway[['2024-06-30', 'unchanged']][['2024-06-30', 'unchanged']]Passed

SHA-256 / c29592b375b2530d90352b36a831b0f90baa330811f5a3585010aa41ea45e0fb

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(petition, stay_end, deadlines):
    p = dt.date.fromisoformat(petition)
    out = []
    stay = dt.date.fromisoformat(stay_end) if stay_end else p + dt.timedelta(days=60)
    for kind, due in deadlines:
        d = dt.date.fromisoformat(due)
        if d < p:
            out.append([due, 'expired'])
            continue
        if kind == 'act':
            new = max(d, p + dt.timedelta(days=60))
        elif stay is None:
            out.append([None, 'stayed'])
            continue
        else:
            new = max(d, stay + dt.timedelta(days=30))
        out.append([new.isoformat(), 'extended' if new != d else 'unchanged'])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: late act deadline',
   ['2024-03-01', '2024-06-01', [['act', '2024-07-15']]],
   [['2024-07-15', 'unchanged']]),
  ('act soon after petition',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-10']]],
   [['2024-04-30', 'extended']]),
  ('deadline on petition date',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-01']]],
   [['2024-04-30', 'extended']]),
  ('expired day before', ['2024-03-01', '2024-06-01', [['act', '2024-02-29']]], [['2024-02-29', 'expired']]),
  ('collection after stay',
   ['2024-03-01', '2024-06-01', [['collection', '2024-03-15']]],
   [['2024-07-01', 'extended']]),
  ('collection stay pending',
   ['2024-03-01', None, [['collection', '2024-03-15'], ['act', '2024-03-20']]],
   [[None, 'stayed'], ['2024-04-30', 'extended']]),
  ('collection late anyway',
   ['2024-03-01', '2024-04-01', [['collection', '2024-06-30']]],
   [['2024-06-30', 'unchanged']])],
 [('deadline on petition date',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-01']]],
   [['2024-04-30', 'extended']]),
  ('expired day before', ['2024-03-01', '2024-06-01', [['act', '2024-02-29']]], [['2024-02-29', 'expired']]),
  ('collection after stay',
   ['2024-03-01', '2024-06-01', [['collection', '2024-03-15']]],
   [['2024-07-01', 'extended']]),
  ('collection stay pending',
   ['2024-03-01', None, [['collection', '2024-03-15'], ['act', '2024-03-20']]],
   [[None, 'stayed'], ['2024-04-30', 'extended']]),
  ('collection late anyway',
   ['2024-03-01', '2024-04-01', [['collection', '2024-06-30']]],
   [['2024-06-30', 'unchanged']]),
  ('mixed list',
   ['2024-05-10', '2024-05-20', [['act', '2024-05-01'], ['collection', '2024-05-12'], ['act', '2024-08-01']]],
   [['2024-05-01', 'expired'], ['2024-06-19', 'extended'], ['2024-08-01', 'unchanged']]),
  ('collection due after petition before stay end',
   ['2024-01-10', '2024-02-05', [['collection', '2024-02-01']]],
   [['2024-03-06', 'extended']])],
 [('collection after stay',
   ['2024-03-01', '2024-06-01', [['collection', '2024-03-15']]],
   [['2024-07-01', 'extended']]),
  ('collection stay pending',
   ['2024-03-01', None, [['collection', '2024-03-15'], ['act', '2024-03-20']]],
   [[None, 'stayed'], ['2024-04-30', 'extended']]),
  ('collection late anyway',
   ['2024-03-01', '2024-04-01', [['collection', '2024-06-30']]],
   [['2024-06-30', 'unchanged']]),
  ('mixed list',
   ['2024-05-10', '2024-05-20', [['act', '2024-05-01'], ['collection', '2024-05-12'], ['act', '2024-08-01']]],
   [['2024-05-01', 'expired'], ['2024-06-19', 'extended'], ['2024-08-01', 'unchanged']]),
  ('collection due after petition before stay end',
   ['2024-01-10', '2024-02-05', [['collection', '2024-02-01']]],
   [['2024-03-06', 'extended']]),
  ('stay pending act only', ['2024-02-01', None, [['act', '2024-02-02']]], [['2024-04-01', 'extended']]),
  ('regression: late act deadline',
   ['2024-03-01', '2024-06-01', [['act', '2024-07-15']]],
   [['2024-07-15', 'unchanged']])],
 [('collection late anyway',
   ['2024-03-01', '2024-04-01', [['collection', '2024-06-30']]],
   [['2024-06-30', 'unchanged']]),
  ('mixed list',
   ['2024-05-10', '2024-05-20', [['act', '2024-05-01'], ['collection', '2024-05-12'], ['act', '2024-08-01']]],
   [['2024-05-01', 'expired'], ['2024-06-19', 'extended'], ['2024-08-01', 'unchanged']]),
  ('collection due after petition before stay end',
   ['2024-01-10', '2024-02-05', [['collection', '2024-02-01']]],
   [['2024-03-06', 'extended']]),
  ('stay pending act only', ['2024-02-01', None, [['act', '2024-02-02']]], [['2024-04-01', 'extended']]),
  ('regression: late act deadline',
   ['2024-03-01', '2024-06-01', [['act', '2024-07-15']]],
   [['2024-07-15', 'unchanged']]),
  ('act soon after petition',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-10']]],
   [['2024-04-30', 'extended']]),
  ('deadline on petition date',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-01']]],
   [['2024-04-30', 'extended']]),
  ('collection stay pending',
   ['2024-03-01', None, [['collection', '2024-03-15'], ['act', '2024-03-20']]],
   [[None, 'stayed'], ['2024-04-30', 'extended']])],
 [('collection due after petition before stay end',
   ['2024-01-10', '2024-02-05', [['collection', '2024-02-01']]],
   [['2024-03-06', 'extended']]),
  ('stay pending act only', ['2024-02-01', None, [['act', '2024-02-02']]], [['2024-04-01', 'extended']]),
  ('regression: late act deadline',
   ['2024-03-01', '2024-06-01', [['act', '2024-07-15']]],
   [['2024-07-15', 'unchanged']]),
  ('act soon after petition',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-10']]],
   [['2024-04-30', 'extended']]),
  ('deadline on petition date',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-01']]],
   [['2024-04-30', 'extended']]),
  ('expired day before', ['2024-03-01', '2024-06-01', [['act', '2024-02-29']]], [['2024-02-29', 'expired']]),
  ('collection after stay',
   ['2024-03-01', '2024-06-01', [['collection', '2024-03-15']]],
   [['2024-07-01', 'extended']]),
  ('collection stay pending',
   ['2024-03-01', None, [['collection', '2024-03-15'], ['act', '2024-03-20']]],
   [[None, 'stayed'], ['2024-04-30', 'extended']])]]
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: late act deadline[['2024-07-15', 'unchanged']][['2024-07-15', 'unchanged']]Passed
act soon after petition[['2024-04-30', 'extended']][['2024-04-30', 'extended']]Passed
deadline on petition date[['2024-04-30', 'extended']][['2024-04-30', 'extended']]Passed
expired day before[['2024-02-29', 'expired']][['2024-02-29', 'expired']]Passed
collection after stay[['2024-07-01', 'extended']][['2024-07-01', 'extended']]Passed
collection stay pending[['2024-05-30', 'extended'], ['2024-04-30', 'extended']][[None, 'stayed'], ['2024-04-30', 'extended']]Failed
collection late anyway[['2024-06-30', 'unchanged']][['2024-06-30', 'unchanged']]Passed

SHA-256 / 8ec93dcbb459ba3ebe4a6045530a44533c561b2b3919ae96b704555d0c1b90cd

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(petition, stay_end, deadlines):
    p = dt.date.fromisoformat(petition)
    out = []
    stay = dt.date.fromisoformat(stay_end) if stay_end else None
    for kind, due in deadlines:
        d = dt.date.fromisoformat(due)
        if d < p:
            out.append([due, 'expired'])
            continue
        if kind == 'act':
            new = max(d, p + dt.timedelta(days=60))
        elif stay is None:
            out.append([None, 'stayed'])
            continue
        else:
            new = max(d, stay + dt.timedelta(days=30))
        out.append([new.isoformat(), 'extended' if new != d else 'unchanged'])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: late act deadline',
   ['2024-03-01', '2024-06-01', [['act', '2024-07-15']]],
   [['2024-07-15', 'unchanged']]),
  ('act soon after petition',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-10']]],
   [['2024-04-30', 'extended']]),
  ('deadline on petition date',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-01']]],
   [['2024-04-30', 'extended']]),
  ('expired day before', ['2024-03-01', '2024-06-01', [['act', '2024-02-29']]], [['2024-02-29', 'expired']]),
  ('collection after stay',
   ['2024-03-01', '2024-06-01', [['collection', '2024-03-15']]],
   [['2024-07-01', 'extended']]),
  ('collection stay pending',
   ['2024-03-01', None, [['collection', '2024-03-15'], ['act', '2024-03-20']]],
   [[None, 'stayed'], ['2024-04-30', 'extended']]),
  ('collection late anyway',
   ['2024-03-01', '2024-04-01', [['collection', '2024-06-30']]],
   [['2024-06-30', 'unchanged']])],
 [('deadline on petition date',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-01']]],
   [['2024-04-30', 'extended']]),
  ('expired day before', ['2024-03-01', '2024-06-01', [['act', '2024-02-29']]], [['2024-02-29', 'expired']]),
  ('collection after stay',
   ['2024-03-01', '2024-06-01', [['collection', '2024-03-15']]],
   [['2024-07-01', 'extended']]),
  ('collection stay pending',
   ['2024-03-01', None, [['collection', '2024-03-15'], ['act', '2024-03-20']]],
   [[None, 'stayed'], ['2024-04-30', 'extended']]),
  ('collection late anyway',
   ['2024-03-01', '2024-04-01', [['collection', '2024-06-30']]],
   [['2024-06-30', 'unchanged']]),
  ('mixed list',
   ['2024-05-10', '2024-05-20', [['act', '2024-05-01'], ['collection', '2024-05-12'], ['act', '2024-08-01']]],
   [['2024-05-01', 'expired'], ['2024-06-19', 'extended'], ['2024-08-01', 'unchanged']]),
  ('collection due after petition before stay end',
   ['2024-01-10', '2024-02-05', [['collection', '2024-02-01']]],
   [['2024-03-06', 'extended']])],
 [('collection after stay',
   ['2024-03-01', '2024-06-01', [['collection', '2024-03-15']]],
   [['2024-07-01', 'extended']]),
  ('collection stay pending',
   ['2024-03-01', None, [['collection', '2024-03-15'], ['act', '2024-03-20']]],
   [[None, 'stayed'], ['2024-04-30', 'extended']]),
  ('collection late anyway',
   ['2024-03-01', '2024-04-01', [['collection', '2024-06-30']]],
   [['2024-06-30', 'unchanged']]),
  ('mixed list',
   ['2024-05-10', '2024-05-20', [['act', '2024-05-01'], ['collection', '2024-05-12'], ['act', '2024-08-01']]],
   [['2024-05-01', 'expired'], ['2024-06-19', 'extended'], ['2024-08-01', 'unchanged']]),
  ('collection due after petition before stay end',
   ['2024-01-10', '2024-02-05', [['collection', '2024-02-01']]],
   [['2024-03-06', 'extended']]),
  ('stay pending act only', ['2024-02-01', None, [['act', '2024-02-02']]], [['2024-04-01', 'extended']]),
  ('regression: late act deadline',
   ['2024-03-01', '2024-06-01', [['act', '2024-07-15']]],
   [['2024-07-15', 'unchanged']])],
 [('collection late anyway',
   ['2024-03-01', '2024-04-01', [['collection', '2024-06-30']]],
   [['2024-06-30', 'unchanged']]),
  ('mixed list',
   ['2024-05-10', '2024-05-20', [['act', '2024-05-01'], ['collection', '2024-05-12'], ['act', '2024-08-01']]],
   [['2024-05-01', 'expired'], ['2024-06-19', 'extended'], ['2024-08-01', 'unchanged']]),
  ('collection due after petition before stay end',
   ['2024-01-10', '2024-02-05', [['collection', '2024-02-01']]],
   [['2024-03-06', 'extended']]),
  ('stay pending act only', ['2024-02-01', None, [['act', '2024-02-02']]], [['2024-04-01', 'extended']]),
  ('regression: late act deadline',
   ['2024-03-01', '2024-06-01', [['act', '2024-07-15']]],
   [['2024-07-15', 'unchanged']]),
  ('act soon after petition',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-10']]],
   [['2024-04-30', 'extended']]),
  ('deadline on petition date',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-01']]],
   [['2024-04-30', 'extended']]),
  ('collection stay pending',
   ['2024-03-01', None, [['collection', '2024-03-15'], ['act', '2024-03-20']]],
   [[None, 'stayed'], ['2024-04-30', 'extended']])],
 [('collection due after petition before stay end',
   ['2024-01-10', '2024-02-05', [['collection', '2024-02-01']]],
   [['2024-03-06', 'extended']]),
  ('stay pending act only', ['2024-02-01', None, [['act', '2024-02-02']]], [['2024-04-01', 'extended']]),
  ('regression: late act deadline',
   ['2024-03-01', '2024-06-01', [['act', '2024-07-15']]],
   [['2024-07-15', 'unchanged']]),
  ('act soon after petition',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-10']]],
   [['2024-04-30', 'extended']]),
  ('deadline on petition date',
   ['2024-03-01', '2024-06-01', [['act', '2024-03-01']]],
   [['2024-04-30', 'extended']]),
  ('expired day before', ['2024-03-01', '2024-06-01', [['act', '2024-02-29']]], [['2024-02-29', 'expired']]),
  ('collection after stay',
   ['2024-03-01', '2024-06-01', [['collection', '2024-03-15']]],
   [['2024-07-01', 'extended']]),
  ('collection stay pending',
   ['2024-03-01', None, [['collection', '2024-03-15'], ['act', '2024-03-20']]],
   [[None, 'stayed'], ['2024-04-30', 'extended']])]]
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: late act deadline[['2024-07-15', 'unchanged']][['2024-07-15', 'unchanged']]Passed
act soon after petition[['2024-04-30', 'extended']][['2024-04-30', 'extended']]Passed
deadline on petition date[['2024-04-30', 'extended']][['2024-04-30', 'extended']]Passed
expired day before[['2024-02-29', 'expired']][['2024-02-29', 'expired']]Passed
collection after stay[['2024-07-01', 'extended']][['2024-07-01', 'extended']]Passed
collection stay pending[[None, 'stayed'], ['2024-04-30', 'extended']][[None, 'stayed'], ['2024-04-30', 'extended']]Passed
collection late anyway[['2024-06-30', 'unchanged']][['2024-06-30', 'unchanged']]Passed

SHA-256 / 4fb2d162dd50712aa6c99a3d0ecea884503a1eb8f3370e98c5cd42927f3e7eb3

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.650702+00:00.

Case digest / 54546d93ea4f968fc22c7d0d0f2d14cc16bd4d1942a2279d916f65d49b908e5c