FA-68801 / Toll and parking fee computation / Open access
Unpaid toll violation escalation: the first fee applies on day 30 · case 01
Unpaid toll violation escalation returns a wrong result when the first fee applies on day 30.
ROOT CAUSE
Paying on the last day of the first stage still incurs the first fee.
VERIFIED REPAIR
Restore the first escalation boundary rule so that the step reads `if age > x['stage1_days']:`.
Unsuccessful approach: An extra grace day waives the fee on day 31.
Case contract
Input {toll, issued_day, paid_day (or null), today, first_fee, second_fee, stage1_days, stage2_days, cap, waiver_first}. Age is measured to the payment day if paid, else today. Age above stage1 adds first_fee; first-time offenders (waiver_first) who actually paid within stage2 have it waived. Age above stage2 adds second_fee. Penalties (not the toll) are capped at cap. Return amount due.
Why this case matters
Fee engines bill customers in integer cents; a wrong boundary, rounding stage or cap scope silently over- or under-charges.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
ev = x['paid_day'] if x['paid_day'] is not None else x['today']
age = ev - x['issued_day']
pen = 0
if age >= x['stage1_days']:
pen += x['first_fee']
if x['waiver_first'] and x['paid_day'] is not None and age <= x['stage2_days']:
pen -= x['first_fee']
if age > x['stage2_days']:
pen += x['second_fee']
return x['toll'] + min(pen, x['cap'])
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'toll': 400, 'issued_day': 0, 'paid_day': None, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 1400), ({'toll': 250, 'issued_day': 61, 'paid_day': 92, 'today': 92, 'first_fee': 500, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 750), ({'toll': 400, 'issued_day': 2, 'paid_day': 32, 'today': 36, 'first_fee': 500, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': False}, 400), ({'toll': 875, 'issued_day': 73, 'paid_day': None, 'today': 104, 'first_fee': 500, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': True}, 1375), ({'toll': 250, 'issued_day': 79, 'paid_day': 109, 'today': 109, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': False}, 250), ({'toll': 250, 'issued_day': 12, 'paid_day': None, 'today': 42, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': False}, 250), ({'toll': 875, 'issued_day': 0, 'paid_day': None, 'today': 100, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 3875), ({'toll': 400, 'issued_day': 0, 'paid_day': 0, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 400)], [({'toll': 400, 'issued_day': 50, 'paid_day': None, 'today': 80, 'first_fee': 500, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': True}, 400), ({'toll': 875, 'issued_day': 47, 'paid_day': 78, 'today': 78, 'first_fee': 500, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': False}, 1375), ({'toll': 875, 'issued_day': 0, 'paid_day': None, 'today': 100, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 3875), ({'toll': 400, 'issued_day': 10, 'paid_day': 40, 'today': 90, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 400), ({'toll': 875, 'issued_day': 55, 'paid_day': 85, 'today': 116, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 875), ({'toll': 875, 'issued_day': 51, 'paid_day': None, 'today': 82, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': True}, 1875), ({'toll': 400, 'issued_day': 10, 'paid_day': 70, 'today': 90, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 400), ({'toll': 400, 'issued_day': 14, 'paid_day': None, 'today': 74, 'first_fee': 500, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': True}, 900)], [({'toll': 400, 'issued_day': 83, 'paid_day': 113, 'today': 187, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 400), ({'toll': 400, 'issued_day': 93, 'paid_day': None, 'today': 123, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 400), ({'toll': 400, 'issued_day': 10, 'paid_day': 40, 'today': 90, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 400), ({'toll': 400, 'issued_day': 35, 'paid_day': None, 'today': 96, 'first_fee': 500, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 5400), ({'toll': 400, 'issued_day': 0, 'paid_day': None, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 1400), ({'toll': 250, 'issued_day': 27, 'paid_day': None, 'today': 58, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 1250), ({'toll': 400, 'issued_day': 10, 'paid_day': 70, 'today': 90, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 400), ({'toll': 250, 'issued_day': 66, 'paid_day': None, 'today': 97, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 1250)], [({'toll': 250, 'issued_day': 59, 'paid_day': 89, 'today': 89, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 250), ({'toll': 250, 'issued_day': 85, 'paid_day': 116, 'today': 143, 'first_fee': 500, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 750), ({'toll': 400, 'issued_day': 0, 'paid_day': None, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 1400), ({'toll': 250, 'issued_day': 81, 'paid_day': 112, 'today': 175, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': False}, 1250), ({'toll': 250, 'issued_day': 39, 'paid_day': 69, 'today': 69, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 250), ({'toll': 875, 'issued_day': 0, 'paid_day': None, 'today': 100, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 3875), ({'toll': 250, 'issued_day': 28, 'paid_day': 58, 'today': 88, 'first_fee': 500, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 250), ({'toll': 400, 'issued_day': 0, 'paid_day': 0, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 400)], [({'toll': 400, 'issued_day': 76, 'paid_day': 106, 'today': 106, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 400), ({'toll': 400, 'issued_day': 0, 'paid_day': 0, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 400), ({'toll': 875, 'issued_day': 55, 'paid_day': None, 'today': 86, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 1875), ({'toll': 875, 'issued_day': 0, 'paid_day': None, 'today': 100, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 3875), ({'toll': 400, 'issued_day': 0, 'paid_day': None, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 1400), ({'toll': 250, 'issued_day': 25, 'paid_day': 55, 'today': 55, 'first_fee': 500, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': False}, 250), ({'toll': 400, 'issued_day': 74, 'paid_day': None, 'today': 104, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': True}, 400), ({'toll': 875, 'issued_day': 64, 'paid_day': 95, 'today': 125, 'first_fee': 500, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 1375)]]
for i, (args, expected) in enumerate(fixtures[N-1]):
check('fee oracle' + ' %d' % i, 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 |
|---|---|---|---|
| fee oracle 0 | 1400 | 1400 | Passed |
| fee oracle 1 | 750 | 750 | Passed |
| fee oracle 2 | 900 | 400 | Failed |
| fee oracle 3 | 1375 | 1375 | Passed |
| fee oracle 4 | 1250 | 250 | Failed |
| fee oracle 5 | 1250 | 250 | Failed |
| fee oracle 6 | 3875 | 3875 | Passed |
| fee oracle 7 | 400 | 400 | Passed |
SHA-256 / 12aba8e3b1842ba43ace2344ff3ac94994b8bb3db80ccd3752bb43885bb5237b
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
ev = x['paid_day'] if x['paid_day'] is not None else x['today']
age = ev - x['issued_day']
pen = 0
if age > x['stage1_days'] + 1:
pen += x['first_fee']
if x['waiver_first'] and x['paid_day'] is not None and age <= x['stage2_days']:
pen -= x['first_fee']
if age > x['stage2_days']:
pen += x['second_fee']
return x['toll'] + min(pen, x['cap'])
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'toll': 400, 'issued_day': 0, 'paid_day': None, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 1400), ({'toll': 250, 'issued_day': 61, 'paid_day': 92, 'today': 92, 'first_fee': 500, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 750), ({'toll': 400, 'issued_day': 2, 'paid_day': 32, 'today': 36, 'first_fee': 500, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': False}, 400), ({'toll': 875, 'issued_day': 73, 'paid_day': None, 'today': 104, 'first_fee': 500, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': True}, 1375), ({'toll': 250, 'issued_day': 79, 'paid_day': 109, 'today': 109, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': False}, 250), ({'toll': 250, 'issued_day': 12, 'paid_day': None, 'today': 42, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': False}, 250), ({'toll': 875, 'issued_day': 0, 'paid_day': None, 'today': 100, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 3875), ({'toll': 400, 'issued_day': 0, 'paid_day': 0, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 400)], [({'toll': 400, 'issued_day': 50, 'paid_day': None, 'today': 80, 'first_fee': 500, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': True}, 400), ({'toll': 875, 'issued_day': 47, 'paid_day': 78, 'today': 78, 'first_fee': 500, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': False}, 1375), ({'toll': 875, 'issued_day': 0, 'paid_day': None, 'today': 100, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 3875), ({'toll': 400, 'issued_day': 10, 'paid_day': 40, 'today': 90, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 400), ({'toll': 875, 'issued_day': 55, 'paid_day': 85, 'today': 116, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 875), ({'toll': 875, 'issued_day': 51, 'paid_day': None, 'today': 82, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': True}, 1875), ({'toll': 400, 'issued_day': 10, 'paid_day': 70, 'today': 90, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 400), ({'toll': 400, 'issued_day': 14, 'paid_day': None, 'today': 74, 'first_fee': 500, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': True}, 900)], [({'toll': 400, 'issued_day': 83, 'paid_day': 113, 'today': 187, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 400), ({'toll': 400, 'issued_day': 93, 'paid_day': None, 'today': 123, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 400), ({'toll': 400, 'issued_day': 10, 'paid_day': 40, 'today': 90, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 400), ({'toll': 400, 'issued_day': 35, 'paid_day': None, 'today': 96, 'first_fee': 500, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 5400), ({'toll': 400, 'issued_day': 0, 'paid_day': None, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 1400), ({'toll': 250, 'issued_day': 27, 'paid_day': None, 'today': 58, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 1250), ({'toll': 400, 'issued_day': 10, 'paid_day': 70, 'today': 90, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 400), ({'toll': 250, 'issued_day': 66, 'paid_day': None, 'today': 97, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 1250)], [({'toll': 250, 'issued_day': 59, 'paid_day': 89, 'today': 89, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 250), ({'toll': 250, 'issued_day': 85, 'paid_day': 116, 'today': 143, 'first_fee': 500, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 750), ({'toll': 400, 'issued_day': 0, 'paid_day': None, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 1400), ({'toll': 250, 'issued_day': 81, 'paid_day': 112, 'today': 175, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': False}, 1250), ({'toll': 250, 'issued_day': 39, 'paid_day': 69, 'today': 69, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 250), ({'toll': 875, 'issued_day': 0, 'paid_day': None, 'today': 100, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 3875), ({'toll': 250, 'issued_day': 28, 'paid_day': 58, 'today': 88, 'first_fee': 500, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 250), ({'toll': 400, 'issued_day': 0, 'paid_day': 0, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 400)], [({'toll': 400, 'issued_day': 76, 'paid_day': 106, 'today': 106, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 400), ({'toll': 400, 'issued_day': 0, 'paid_day': 0, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 400), ({'toll': 875, 'issued_day': 55, 'paid_day': None, 'today': 86, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 1875), ({'toll': 875, 'issued_day': 0, 'paid_day': None, 'today': 100, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 3875), ({'toll': 400, 'issued_day': 0, 'paid_day': None, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 1400), ({'toll': 250, 'issued_day': 25, 'paid_day': 55, 'today': 55, 'first_fee': 500, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': False}, 250), ({'toll': 400, 'issued_day': 74, 'paid_day': None, 'today': 104, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': True}, 400), ({'toll': 875, 'issued_day': 64, 'paid_day': 95, 'today': 125, 'first_fee': 500, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 1375)]]
for i, (args, expected) in enumerate(fixtures[N-1]):
check('fee oracle' + ' %d' % i, 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 |
|---|---|---|---|
| fee oracle 0 | 1400 | 1400 | Passed |
| fee oracle 1 | 250 | 750 | Failed |
| fee oracle 2 | 400 | 400 | Passed |
| fee oracle 3 | 875 | 1375 | Failed |
| fee oracle 4 | 250 | 250 | Passed |
| fee oracle 5 | 250 | 250 | Passed |
| fee oracle 6 | 3875 | 3875 | Passed |
| fee oracle 7 | 400 | 400 | Passed |
SHA-256 / e42564cdd3c80128903d8389ce2a05c21004f95c2b32b67aa9087236b75044e8
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
ev = x['paid_day'] if x['paid_day'] is not None else x['today']
age = ev - x['issued_day']
pen = 0
if age > x['stage1_days']:
pen += x['first_fee']
if x['waiver_first'] and x['paid_day'] is not None and age <= x['stage2_days']:
pen -= x['first_fee']
if age > x['stage2_days']:
pen += x['second_fee']
return x['toll'] + min(pen, x['cap'])
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'toll': 400, 'issued_day': 0, 'paid_day': None, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 1400), ({'toll': 250, 'issued_day': 61, 'paid_day': 92, 'today': 92, 'first_fee': 500, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 750), ({'toll': 400, 'issued_day': 2, 'paid_day': 32, 'today': 36, 'first_fee': 500, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': False}, 400), ({'toll': 875, 'issued_day': 73, 'paid_day': None, 'today': 104, 'first_fee': 500, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': True}, 1375), ({'toll': 250, 'issued_day': 79, 'paid_day': 109, 'today': 109, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': False}, 250), ({'toll': 250, 'issued_day': 12, 'paid_day': None, 'today': 42, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': False}, 250), ({'toll': 875, 'issued_day': 0, 'paid_day': None, 'today': 100, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 3875), ({'toll': 400, 'issued_day': 0, 'paid_day': 0, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 400)], [({'toll': 400, 'issued_day': 50, 'paid_day': None, 'today': 80, 'first_fee': 500, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': True}, 400), ({'toll': 875, 'issued_day': 47, 'paid_day': 78, 'today': 78, 'first_fee': 500, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': False}, 1375), ({'toll': 875, 'issued_day': 0, 'paid_day': None, 'today': 100, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 3875), ({'toll': 400, 'issued_day': 10, 'paid_day': 40, 'today': 90, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 400), ({'toll': 875, 'issued_day': 55, 'paid_day': 85, 'today': 116, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 875), ({'toll': 875, 'issued_day': 51, 'paid_day': None, 'today': 82, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': True}, 1875), ({'toll': 400, 'issued_day': 10, 'paid_day': 70, 'today': 90, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 400), ({'toll': 400, 'issued_day': 14, 'paid_day': None, 'today': 74, 'first_fee': 500, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': True}, 900)], [({'toll': 400, 'issued_day': 83, 'paid_day': 113, 'today': 187, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 400), ({'toll': 400, 'issued_day': 93, 'paid_day': None, 'today': 123, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 400), ({'toll': 400, 'issued_day': 10, 'paid_day': 40, 'today': 90, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 400), ({'toll': 400, 'issued_day': 35, 'paid_day': None, 'today': 96, 'first_fee': 500, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 5400), ({'toll': 400, 'issued_day': 0, 'paid_day': None, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 1400), ({'toll': 250, 'issued_day': 27, 'paid_day': None, 'today': 58, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 1250), ({'toll': 400, 'issued_day': 10, 'paid_day': 70, 'today': 90, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 400), ({'toll': 250, 'issued_day': 66, 'paid_day': None, 'today': 97, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 1250)], [({'toll': 250, 'issued_day': 59, 'paid_day': 89, 'today': 89, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 250), ({'toll': 250, 'issued_day': 85, 'paid_day': 116, 'today': 143, 'first_fee': 500, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 750), ({'toll': 400, 'issued_day': 0, 'paid_day': None, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 1400), ({'toll': 250, 'issued_day': 81, 'paid_day': 112, 'today': 175, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': False}, 1250), ({'toll': 250, 'issued_day': 39, 'paid_day': 69, 'today': 69, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 250), ({'toll': 875, 'issued_day': 0, 'paid_day': None, 'today': 100, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 3875), ({'toll': 250, 'issued_day': 28, 'paid_day': 58, 'today': 88, 'first_fee': 500, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 250), ({'toll': 400, 'issued_day': 0, 'paid_day': 0, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 400)], [({'toll': 400, 'issued_day': 76, 'paid_day': 106, 'today': 106, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 400), ({'toll': 400, 'issued_day': 0, 'paid_day': 0, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': False}, 400), ({'toll': 875, 'issued_day': 55, 'paid_day': None, 'today': 86, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 1875), ({'toll': 875, 'issued_day': 0, 'paid_day': None, 'today': 100, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 3875), ({'toll': 400, 'issued_day': 0, 'paid_day': None, 'today': 45, 'first_fee': 1000, 'second_fee': 2500, 'stage1_days': 30, 'stage2_days': 60, 'cap': 5000, 'waiver_first': True}, 1400), ({'toll': 250, 'issued_day': 25, 'paid_day': 55, 'today': 55, 'first_fee': 500, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': False}, 250), ({'toll': 400, 'issued_day': 74, 'paid_day': None, 'today': 104, 'first_fee': 1000, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 7500, 'waiver_first': True}, 400), ({'toll': 875, 'issued_day': 64, 'paid_day': 95, 'today': 125, 'first_fee': 500, 'second_fee': 5000, 'stage1_days': 30, 'stage2_days': 60, 'cap': 3000, 'waiver_first': False}, 1375)]]
for i, (args, expected) in enumerate(fixtures[N-1]):
check('fee oracle' + ' %d' % i, 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 |
|---|---|---|---|
| fee oracle 0 | 1400 | 1400 | Passed |
| fee oracle 1 | 750 | 750 | Passed |
| fee oracle 2 | 400 | 400 | Passed |
| fee oracle 3 | 1375 | 1375 | Passed |
| fee oracle 4 | 250 | 250 | Passed |
| fee oracle 5 | 250 | 250 | Passed |
| fee oracle 6 | 3875 | 3875 | Passed |
| fee oracle 7 | 400 | 400 | Passed |
SHA-256 / cc78f24a81e3efc3398d1182a619c590f7528dc50e839d6eabd20d78ce086126
Verification & scope
A deterministic, bounded toy model with a stipulated contract; it makes no claim of conformance to any agency manual or standard. 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:48:05.632253+00:00.
Case digest / a740332b3d331810ac4e4789b3415ec1fa349eae024baf0abf6ba64da053c214