FAILURE MAP
← Case archive

FA-68531 / Toll and parking fee computation / Open access

Axle and height vehicle classification: oversize applies only to trucks · case 01

Axle and height vehicle classification returns a wrong result when oversize applies only to trucks.

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

ROOT CAUSE

A vehicle of exactly 410 cm escapes the oversize surcharge.

VERIFIED REPAIR

Restore the oversize threshold rule so that the step reads `if x['height_cm'] >= 410:`.

Unsuccessful approach: Restricting the surcharge to three or more axles exempts tall two-axle vehicles.

Case contract

Input {axles, trailer_axles, height_cm, dual_tires, motorcycle, tolls: [[class, cents]], oversize_fee}. A two-axle motorcycle without trailer is class M. Otherwise total axles = vehicle + trailer: up to two axles is class 1 when under 200 cm and without dual tires, else class 2; three or more is the axle count, capped at 5. Vehicles 410 cm or taller pay oversize_fee per total axle. Return [class, cents].

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):
    total = x['axles'] + x['trailer_axles']
    if x['motorcycle'] and x['axles'] == 2 and x['trailer_axles'] == 0:
        cls = 'M'
    elif total <= 2:
        cls = '1' if x['height_cm'] < 200 and not x['dual_tires'] else '2'
    else:
        cls = str(min(total, 5))
    toll = dict(x['tolls'])[cls]
    if x['height_cm'] > 410:
        toll += x['oversize_fee'] * total
    return [cls, toll]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'axles': 2, 'trailer_axles': 1, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['3', 1000]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 180, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 450]), ({'axles': 3, 'trailer_axles': 2, 'height_cm': 200, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 250}, ['5', 1250]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 2, 'trailer_axles': 3, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 250}, ['5', 2500]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 420, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 2, 'trailer_axles': 1, 'height_cm': 150, 'dual_tires': False, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['3', 700]), ({'axles': 3, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['5', 2000])], [({'axles': 2, 'trailer_axles': 0, 'height_cm': 420, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 5, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['5', 1950]), ({'axles': 2, 'trailer_axles': 3, 'height_cm': 400, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['5', 1250]), ({'axles': 6, 'trailer_axles': 0, 'height_cm': 280, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['5', 1250]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 410, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 650]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 180, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 450]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 430, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 3, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['5', 2000])], [({'axles': 2, 'trailer_axles': 1, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['3', 1000]), ({'axles': 2, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': False, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 250}, ['4', 1950]), ({'axles': 2, 'trailer_axles': 1, 'height_cm': 150, 'dual_tires': False, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['3', 700]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 180, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 450]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 4, 'trailer_axles': 3, 'height_cm': 409, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['5', 1250]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 420, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 4, 'trailer_axles': 0, 'height_cm': 400, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['4', 950])], [({'axles': 3, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['5', 2000]), ({'axles': 5, 'trailer_axles': 0, 'height_cm': 430, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 250}, ['5', 2500]), ({'axles': 2, 'trailer_axles': 1, 'height_cm': 410, 'dual_tires': False, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['3', 1150]), ({'axles': 6, 'trailer_axles': 3, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['5', 2150]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 410, 'dual_tires': False, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['M', 450]), ({'axles': 2, 'trailer_axles': 2, 'height_cm': 400, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['4', 950]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 420, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 180, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 450])], [({'axles': 2, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': True, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['4', 1550]), ({'axles': 4, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 250}, ['5', 2750]), ({'axles': 2, 'trailer_axles': 1, 'height_cm': 150, 'dual_tires': False, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['3', 700]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 420, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 5, 'trailer_axles': 3, 'height_cm': 199, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 250}, ['5', 1250]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 650]), ({'axles': 2, 'trailer_axles': 2, 'height_cm': 199, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['4', 950]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 180, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 450])]]
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 fixtureActualExpectedOutcome
fee oracle 0['3', 700]['3', 1000]Failed
fee oracle 1['2', 450]['2', 450]Passed
fee oracle 2['5', 1250]['5', 1250]Passed
fee oracle 3['2', 450]['2', 750]Failed
fee oracle 4['5', 1250]['5', 2500]Failed
fee oracle 5['2', 750]['2', 750]Passed
fee oracle 6['3', 700]['3', 700]Passed
fee oracle 7['5', 1250]['5', 2000]Failed

SHA-256 / 0bc5c1210f9f5e7415222c20d25f678f49d4a5286b4ab0365b230a34c2c3e097

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    total = x['axles'] + x['trailer_axles']
    if x['motorcycle'] and x['axles'] == 2 and x['trailer_axles'] == 0:
        cls = 'M'
    elif total <= 2:
        cls = '1' if x['height_cm'] < 200 and not x['dual_tires'] else '2'
    else:
        cls = str(min(total, 5))
    toll = dict(x['tolls'])[cls]
    if x['height_cm'] >= 410 and total >= 3:
        toll += x['oversize_fee'] * total
    return [cls, toll]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'axles': 2, 'trailer_axles': 1, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['3', 1000]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 180, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 450]), ({'axles': 3, 'trailer_axles': 2, 'height_cm': 200, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 250}, ['5', 1250]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 2, 'trailer_axles': 3, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 250}, ['5', 2500]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 420, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 2, 'trailer_axles': 1, 'height_cm': 150, 'dual_tires': False, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['3', 700]), ({'axles': 3, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['5', 2000])], [({'axles': 2, 'trailer_axles': 0, 'height_cm': 420, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 5, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['5', 1950]), ({'axles': 2, 'trailer_axles': 3, 'height_cm': 400, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['5', 1250]), ({'axles': 6, 'trailer_axles': 0, 'height_cm': 280, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['5', 1250]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 410, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 650]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 180, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 450]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 430, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 3, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['5', 2000])], [({'axles': 2, 'trailer_axles': 1, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['3', 1000]), ({'axles': 2, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': False, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 250}, ['4', 1950]), ({'axles': 2, 'trailer_axles': 1, 'height_cm': 150, 'dual_tires': False, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['3', 700]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 180, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 450]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 4, 'trailer_axles': 3, 'height_cm': 409, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['5', 1250]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 420, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 4, 'trailer_axles': 0, 'height_cm': 400, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['4', 950])], [({'axles': 3, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['5', 2000]), ({'axles': 5, 'trailer_axles': 0, 'height_cm': 430, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 250}, ['5', 2500]), ({'axles': 2, 'trailer_axles': 1, 'height_cm': 410, 'dual_tires': False, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['3', 1150]), ({'axles': 6, 'trailer_axles': 3, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['5', 2150]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 410, 'dual_tires': False, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['M', 450]), ({'axles': 2, 'trailer_axles': 2, 'height_cm': 400, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['4', 950]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 420, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 180, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 450])], [({'axles': 2, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': True, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['4', 1550]), ({'axles': 4, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 250}, ['5', 2750]), ({'axles': 2, 'trailer_axles': 1, 'height_cm': 150, 'dual_tires': False, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['3', 700]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 420, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 5, 'trailer_axles': 3, 'height_cm': 199, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 250}, ['5', 1250]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 650]), ({'axles': 2, 'trailer_axles': 2, 'height_cm': 199, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['4', 950]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 180, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 450])]]
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 fixtureActualExpectedOutcome
fee oracle 0['3', 1000]['3', 1000]Passed
fee oracle 1['2', 450]['2', 450]Passed
fee oracle 2['5', 1250]['5', 1250]Passed
fee oracle 3['2', 450]['2', 750]Failed
fee oracle 4['5', 2500]['5', 2500]Passed
fee oracle 5['2', 450]['2', 750]Failed
fee oracle 6['3', 700]['3', 700]Passed
fee oracle 7['5', 2000]['5', 2000]Passed

SHA-256 / a2b1cfdb5b9e1b02efe4c29f616d845ae3bc32049e9ef5bbd55d01d2406b4299

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    total = x['axles'] + x['trailer_axles']
    if x['motorcycle'] and x['axles'] == 2 and x['trailer_axles'] == 0:
        cls = 'M'
    elif total <= 2:
        cls = '1' if x['height_cm'] < 200 and not x['dual_tires'] else '2'
    else:
        cls = str(min(total, 5))
    toll = dict(x['tolls'])[cls]
    if x['height_cm'] >= 410:
        toll += x['oversize_fee'] * total
    return [cls, toll]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'axles': 2, 'trailer_axles': 1, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['3', 1000]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 180, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 450]), ({'axles': 3, 'trailer_axles': 2, 'height_cm': 200, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 250}, ['5', 1250]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 2, 'trailer_axles': 3, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 250}, ['5', 2500]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 420, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 2, 'trailer_axles': 1, 'height_cm': 150, 'dual_tires': False, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['3', 700]), ({'axles': 3, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['5', 2000])], [({'axles': 2, 'trailer_axles': 0, 'height_cm': 420, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 5, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['5', 1950]), ({'axles': 2, 'trailer_axles': 3, 'height_cm': 400, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['5', 1250]), ({'axles': 6, 'trailer_axles': 0, 'height_cm': 280, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['5', 1250]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 410, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 650]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 180, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 450]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 430, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 3, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['5', 2000])], [({'axles': 2, 'trailer_axles': 1, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['3', 1000]), ({'axles': 2, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': False, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 250}, ['4', 1950]), ({'axles': 2, 'trailer_axles': 1, 'height_cm': 150, 'dual_tires': False, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['3', 700]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 180, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 450]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 4, 'trailer_axles': 3, 'height_cm': 409, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['5', 1250]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 420, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 4, 'trailer_axles': 0, 'height_cm': 400, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['4', 950])], [({'axles': 3, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['5', 2000]), ({'axles': 5, 'trailer_axles': 0, 'height_cm': 430, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 250}, ['5', 2500]), ({'axles': 2, 'trailer_axles': 1, 'height_cm': 410, 'dual_tires': False, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['3', 1150]), ({'axles': 6, 'trailer_axles': 3, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['5', 2150]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 410, 'dual_tires': False, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['M', 450]), ({'axles': 2, 'trailer_axles': 2, 'height_cm': 400, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['4', 950]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 420, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 180, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 450])], [({'axles': 2, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': True, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['4', 1550]), ({'axles': 4, 'trailer_axles': 2, 'height_cm': 410, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 250}, ['5', 2750]), ({'axles': 2, 'trailer_axles': 1, 'height_cm': 150, 'dual_tires': False, 'motorcycle': True, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['3', 700]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 420, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['2', 750]), ({'axles': 5, 'trailer_axles': 3, 'height_cm': 199, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 250}, ['5', 1250]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 410, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 650]), ({'axles': 2, 'trailer_axles': 2, 'height_cm': 199, 'dual_tires': False, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 150}, ['4', 950]), ({'axles': 2, 'trailer_axles': 0, 'height_cm': 180, 'dual_tires': True, 'motorcycle': False, 'tolls': [['M', 150], ['1', 300], ['2', 450], ['3', 700], ['4', 950], ['5', 1250]], 'oversize_fee': 100}, ['2', 450])]]
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 fixtureActualExpectedOutcome
fee oracle 0['3', 1000]['3', 1000]Passed
fee oracle 1['2', 450]['2', 450]Passed
fee oracle 2['5', 1250]['5', 1250]Passed
fee oracle 3['2', 750]['2', 750]Passed
fee oracle 4['5', 2500]['5', 2500]Passed
fee oracle 5['2', 750]['2', 750]Passed
fee oracle 6['3', 700]['3', 700]Passed
fee oracle 7['5', 2000]['5', 2000]Passed

SHA-256 / 277e26efd86801cc74eefdbbd6e060c21463b34256c13d55dce66698ad705ca3

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

Case digest / ebbe4fe0968205e5949501d34971f0b7c66c36e798cd5e02e924666003f80afc