FAILURE MAP
← Case archive

FA-77756 / Legal deadline computation / Open access

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

Collection deadlines are extended from the petition date rather than the end of the stay.

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

ROOT CAUSE

The 30-day grace runs from the petition date.

VERIFIED REPAIR

At the collection base decision use `stay`, leaving the other decision sites of the model unchanged.

Unsuccessful approach: The partial repair `max(p, d)` runs from the later of petition and deadline, still ignoring the stay end.

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 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, p + 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 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']])]]
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-03-31', 'extended']][['2024-07-01', 'extended']]Failed
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 / 0f45a568f23cf9f723ca2c668293f0f68266d5ddbbd73fb7859e0bd8cd073e00

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 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, max(p, d) + 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 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']])]]
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-04-14', 'extended']][['2024-07-01', 'extended']]Failed
collection stay pending[[None, 'stayed'], ['2024-04-30', 'extended']][[None, 'stayed'], ['2024-04-30', 'extended']]Passed
collection late anyway[['2024-07-30', 'extended']][['2024-06-30', 'unchanged']]Failed

SHA-256 / e9b3bf3163503e7514451e6584a90b03290b37b897c348a0ff60c8db6a81aac8

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 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']])]]
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 / f34c084c3237a900b037dcc82d797593e15e353c125fdefa6f6f087932d3829b

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

Case digest / 38447d60e0952b3929a9e03e6eb539ba0f769e131df20fb9702b67730494cba7