FAILURE MAP
← Case archive

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

One-way bridge toll with frequent-user discount: the threshold trip itself is discounted · case 01

One-way bridge toll with frequent-user discount returns a wrong result when the threshold trip itself is discounted.

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

ROOT CAUSE

Discounting starts one trip early.

VERIFIED REPAIR

Restore the discount threshold rule so that the step reads `if k > x['threshold']:`.

Unsuccessful approach: Starting one trip late overcharges the first discounted trip.

Case contract

Input {trips: [[month index, direction, occupancy]], toll_dir, base, threshold, discount_pct, carpool_min}. Only trips in toll_dir are tolled. Carpools (occupancy >= carpool_min) are free and do not count. Paid trips are counted per month index (no carry-over between months); trips beyond threshold in a month pay floor(base*(100-discount)/100).

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):
    counts = {}
    total = 0
    for month, d, occ in x['trips']:
        if d != x['toll_dir']:
            continue
        if occ >= x['carpool_min']:
            continue
        k = counts.get(month, 0) + 1
        counts[month] = k
        if k >= x['threshold']:
            total += x['base'] * (100 - x['discount_pct']) // 100
        else:
            total += x['base']
    return total
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'E', 2], [2, 'W', 3]], 'toll_dir': 'E', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 725), ({'trips': [[13, 'E', 1], [1, 'E', 4], [13, 'E', 1], [2, 'W', 1], [2, 'W', 2], [1, 'E', 3], [13, 'E', 1], [2, 'W', 3], [1, 'E', 4], [2, 'E', 1], [2, 'E', 1], [13, 'E', 2], [13, 'E', 3]], 'toll_dir': 'W', 'base': 850, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 1487), ({'trips': [[2, 'E', 4], [1, 'W', 4], [2, 'E', 4], [13, 'E', 2], [1, 'W', 3], [1, 'W', 1], [2, 'E', 4], [1, 'E', 1], [1, 'W', 3], [1, 'W', 1], [13, 'E', 1], [2, 'W', 3], [1, 'W', 4], [1, 'E', 4], [2, 'W', 1], [2, 'W', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 3}, 1800), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[1, 'W', 2], [1, 'E', 3], [1, 'E', 1], [1, 'W', 2], [1, 'W', 2], [13, 'W', 1], [1, 'E', 1], [2, 'W', 1], [1, 'W', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 2}, 1800), ({'trips': [[13, 'W', 1], [1, 'W', 4], [1, 'E', 1], [1, 'W', 1], [13, 'E', 4], [13, 'W', 2], [13, 'E', 2], [1, 'W', 1], [1, 'W', 1], [1, 'W', 4], [1, 'E', 2], [1, 'W', 1], [2, 'E', 1], [2, 'E', 2]], 'toll_dir': 'E', 'base': 850, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 3}, 4250), ({'trips': [[2, 'W', 2], [13, 'E', 1], [2, 'W', 1], [13, 'E', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 1450), ({'trips': [[1, 'W', 4], [13, 'W', 3], [1, 'W', 2], [2, 'E', 4], [1, 'W', 4], [2, 'W', 1], [1, 'W', 2], [2, 'W', 4], [13, 'W', 1], [1, 'W', 2], [2, 'W', 4], [1, 'E', 3], [1, 'E', 1]], 'toll_dir': 'E', 'base': 850, 'threshold': 3, 'discount_pct': 40, 'carpool_min': 3}, 850)], [({'trips': [[13, 'E', 2], [1, 'E', 1], [13, 'W', 1], [13, 'E', 1], [13, 'E', 1], [1, 'W', 2], [1, 'E', 1], [13, 'W', 3], [13, 'E', 1], [1, 'E', 1], [1, 'W', 1], [1, 'E', 2], [1, 'W', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 3, 'discount_pct': 40, 'carpool_min': 2}, 2550), ({'trips': [[1, 'E', 4], [1, 'W', 1], [2, 'E', 2], [1, 'E', 1], [2, 'E', 3], [13, 'E', 2], [1, 'E', 1], [2, 'W', 3], [1, 'E', 2], [1, 'E', 1], [13, 'W', 1], [1, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 3}, 2175), ({'trips': [[1, 'E', 4], [1, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 3}, 600), ({'trips': [[2, 'W', 3], [13, 'E', 1], [1, 'E', 1], [1, 'W', 3], [1, 'E', 1], [2, 'W', 1], [2, 'W', 3], [1, 'W', 1], [13, 'E', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 1200), ({'trips': [[13, 'E', 1], [1, 'E', 1], [1, 'E', 3], [13, 'W', 3], [13, 'W', 1], [1, 'W', 1], [1, 'W', 3], [13, 'W', 4], [1, 'E', 2], [1, 'E', 1], [13, 'E', 2], [2, 'W', 1], [1, 'E', 3], [1, 'W', 1], [13, 'W', 1], [13, 'E', 4]], 'toll_dir': 'E', 'base': 600, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 3}, 3000), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[13, 'W', 1], [13, 'W', 1], [2, 'W', 2], [1, 'W', 1], [1, 'W', 1], [1, 'E', 2], [1, 'W', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 3}, 3625), ({'trips': [[1, 'W', 1], [1, 'W', 2], [1, 'E', 1], [1, 'E', 2], [2, 'E', 1], [1, 'W', 4], [1, 'W', 1], [1, 'E', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 1811)], [({'trips': [[13, 'E', 1], [13, 'W', 2], [1, 'E', 4]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 2}, 0), ({'trips': [[1, 'E', 3], [13, 'W', 1], [1, 'W', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 4, 'discount_pct': 33, 'carpool_min': 2}, 725), ({'trips': [[1, 'W', 4], [2, 'E', 1], [1, 'E', 3], [1, 'W', 1], [2, 'W', 1], [2, 'W', 2], [13, 'E', 1], [1, 'E', 1], [1, 'E', 1]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2900), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[2, 'E', 1], [2, 'W', 4], [13, 'W', 3], [1, 'E', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 2}, 0), ({'trips': [[1, 'W', 1], [1, 'E', 1], [2, 'E', 2], [13, 'W', 1], [1, 'W', 1], [13, 'W', 2], [1, 'E', 2], [2, 'E', 1], [13, 'W', 1], [13, 'W', 3], [1, 'E', 1], [1, 'W', 1], [1, 'W', 4]], 'toll_dir': 'E', 'base': 600, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 3}, 2850), ({'trips': [[1, 'E', 1], [13, 'E', 4], [1, 'E', 4], [1, 'W', 3], [2, 'E', 4], [2, 'W', 1], [1, 'W', 3], [1, 'E', 2], [13, 'W', 1], [1, 'W', 1], [13, 'E', 1], [13, 'W', 4], [1, 'E', 3], [1, 'W', 3]], 'toll_dir': 'E', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 1800), ({'trips': [[2, 'W', 4], [1, 'E', 3], [1, 'W', 4], [1, 'E', 1], [1, 'E', 1], [1, 'E', 2], [1, 'W', 1], [1, 'W', 2], [13, 'W', 4], [13, 'E', 3], [1, 'E', 3], [2, 'E', 1], [1, 'W', 2], [13, 'E', 2], [2, 'E', 1]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 2}, 2900)], [({'trips': [[2, 'E', 1], [13, 'W', 1], [13, 'W', 4], [13, 'E', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 3}, 600), ({'trips': [[2, 'E', 1], [1, 'E', 3], [13, 'E', 1], [1, 'E', 1], [13, 'W', 4], [2, 'W', 4], [2, 'W', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 4, 'discount_pct': 25, 'carpool_min': 2}, 0), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[13, 'E', 2], [1, 'E', 1], [13, 'E', 1], [1, 'W', 1], [1, 'W', 1], [1, 'W', 3]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 2}, 1450), ({'trips': [[13, 'E', 1], [1, 'E', 1], [2, 'E', 1], [13, 'E', 1], [1, 'E', 4], [1, 'E', 4], [13, 'E', 4], [2, 'W', 3], [1, 'E', 1], [13, 'E', 1], [13, 'E', 2], [1, 'W', 1], [13, 'E', 1], [1, 'E', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 2}, 4350), ({'trips': [[1, 'W', 1], [1, 'E', 1], [2, 'W', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 25, 'carpool_min': 2}, 725), ({'trips': [[2, 'E', 4], [13, 'W', 1], [1, 'W', 3]], 'toll_dir': 'E', 'base': 850, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 2}, 0), ({'trips': [[1, 'E', 4], [2, 'W', 1], [13, 'E', 4], [1, 'W', 4], [1, 'W', 4], [2, 'E', 4], [1, 'E', 3], [1, 'W', 4], [2, 'E', 4]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 25, 'carpool_min': 3}, 725)], [({'trips': [[1, 'E', 1], [1, 'W', 1], [1, 'W', 2], [2, 'E', 4], [2, 'W', 1], [1, 'E', 1], [2, 'E', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 40, 'carpool_min': 3}, 2175), ({'trips': [[1, 'W', 1], [13, 'W', 2], [2, 'E', 3], [2, 'W', 2], [1, 'W', 4], [13, 'E', 1], [1, 'W', 1], [1, 'E', 4], [2, 'W', 3], [13, 'W', 4], [1, 'W', 2], [2, 'E', 2], [2, 'W', 4], [13, 'W', 2]], 'toll_dir': 'W', 'base': 600, 'threshold': 1, 'discount_pct': 40, 'carpool_min': 3}, 2880), ({'trips': [[13, 'E', 1], [1, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 2}, 725), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[2, 'E', 4], [1, 'E', 4], [1, 'W', 4], [2, 'E', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 2}, 600), ({'trips': [[1, 'E', 4], [2, 'W', 4], [1, 'E', 1], [1, 'W', 4], [1, 'W', 4], [2, 'E', 1], [1, 'E', 1], [13, 'W', 1], [13, 'W', 2], [2, 'E', 1], [1, 'E', 4], [1, 'W', 1], [13, 'W', 1], [2, 'W', 1], [1, 'E', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 40, 'carpool_min': 3}, 3625), ({'trips': [[1, 'E', 2], [1, 'W', 1], [13, 'E', 1], [1, 'W', 1], [1, 'E', 1], [13, 'E', 1], [13, 'W', 3], [1, 'W', 3], [13, 'E', 1], [1, 'E', 1], [1, 'W', 1], [13, 'E', 2]], 'toll_dir': 'E', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 4200), ({'trips': [[1, 'W', 1], [1, 'E', 1], [13, 'W', 1], [2, 'W', 1], [1, 'E', 3], [2, 'W', 3], [1, 'W', 1], [13, 'W', 4], [13, 'E', 2], [2, 'W', 1], [1, 'W', 1], [1, 'W', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 3}, 1200)]]
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 0543725Failed
fee oracle 112741487Failed
fee oracle 218001800Passed
fee oracle 324202660Failed
fee oracle 418001800Passed
fee oracle 542504250Passed
fee oracle 614501450Passed
fee oracle 7850850Passed

SHA-256 / 04e9b16925449181cde3bff8bec61f53bcc23ff8d742b162c1ff00611deb6bde

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(x):
    counts = {}
    total = 0
    for month, d, occ in x['trips']:
        if d != x['toll_dir']:
            continue
        if occ >= x['carpool_min']:
            continue
        k = counts.get(month, 0) + 1
        counts[month] = k
        if k > x['threshold'] + 1:
            total += x['base'] * (100 - x['discount_pct']) // 100
        else:
            total += x['base']
    return total
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'E', 2], [2, 'W', 3]], 'toll_dir': 'E', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 725), ({'trips': [[13, 'E', 1], [1, 'E', 4], [13, 'E', 1], [2, 'W', 1], [2, 'W', 2], [1, 'E', 3], [13, 'E', 1], [2, 'W', 3], [1, 'E', 4], [2, 'E', 1], [2, 'E', 1], [13, 'E', 2], [13, 'E', 3]], 'toll_dir': 'W', 'base': 850, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 1487), ({'trips': [[2, 'E', 4], [1, 'W', 4], [2, 'E', 4], [13, 'E', 2], [1, 'W', 3], [1, 'W', 1], [2, 'E', 4], [1, 'E', 1], [1, 'W', 3], [1, 'W', 1], [13, 'E', 1], [2, 'W', 3], [1, 'W', 4], [1, 'E', 4], [2, 'W', 1], [2, 'W', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 3}, 1800), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[1, 'W', 2], [1, 'E', 3], [1, 'E', 1], [1, 'W', 2], [1, 'W', 2], [13, 'W', 1], [1, 'E', 1], [2, 'W', 1], [1, 'W', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 2}, 1800), ({'trips': [[13, 'W', 1], [1, 'W', 4], [1, 'E', 1], [1, 'W', 1], [13, 'E', 4], [13, 'W', 2], [13, 'E', 2], [1, 'W', 1], [1, 'W', 1], [1, 'W', 4], [1, 'E', 2], [1, 'W', 1], [2, 'E', 1], [2, 'E', 2]], 'toll_dir': 'E', 'base': 850, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 3}, 4250), ({'trips': [[2, 'W', 2], [13, 'E', 1], [2, 'W', 1], [13, 'E', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 1450), ({'trips': [[1, 'W', 4], [13, 'W', 3], [1, 'W', 2], [2, 'E', 4], [1, 'W', 4], [2, 'W', 1], [1, 'W', 2], [2, 'W', 4], [13, 'W', 1], [1, 'W', 2], [2, 'W', 4], [1, 'E', 3], [1, 'E', 1]], 'toll_dir': 'E', 'base': 850, 'threshold': 3, 'discount_pct': 40, 'carpool_min': 3}, 850)], [({'trips': [[13, 'E', 2], [1, 'E', 1], [13, 'W', 1], [13, 'E', 1], [13, 'E', 1], [1, 'W', 2], [1, 'E', 1], [13, 'W', 3], [13, 'E', 1], [1, 'E', 1], [1, 'W', 1], [1, 'E', 2], [1, 'W', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 3, 'discount_pct': 40, 'carpool_min': 2}, 2550), ({'trips': [[1, 'E', 4], [1, 'W', 1], [2, 'E', 2], [1, 'E', 1], [2, 'E', 3], [13, 'E', 2], [1, 'E', 1], [2, 'W', 3], [1, 'E', 2], [1, 'E', 1], [13, 'W', 1], [1, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 3}, 2175), ({'trips': [[1, 'E', 4], [1, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 3}, 600), ({'trips': [[2, 'W', 3], [13, 'E', 1], [1, 'E', 1], [1, 'W', 3], [1, 'E', 1], [2, 'W', 1], [2, 'W', 3], [1, 'W', 1], [13, 'E', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 1200), ({'trips': [[13, 'E', 1], [1, 'E', 1], [1, 'E', 3], [13, 'W', 3], [13, 'W', 1], [1, 'W', 1], [1, 'W', 3], [13, 'W', 4], [1, 'E', 2], [1, 'E', 1], [13, 'E', 2], [2, 'W', 1], [1, 'E', 3], [1, 'W', 1], [13, 'W', 1], [13, 'E', 4]], 'toll_dir': 'E', 'base': 600, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 3}, 3000), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[13, 'W', 1], [13, 'W', 1], [2, 'W', 2], [1, 'W', 1], [1, 'W', 1], [1, 'E', 2], [1, 'W', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 3}, 3625), ({'trips': [[1, 'W', 1], [1, 'W', 2], [1, 'E', 1], [1, 'E', 2], [2, 'E', 1], [1, 'W', 4], [1, 'W', 1], [1, 'E', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 1811)], [({'trips': [[13, 'E', 1], [13, 'W', 2], [1, 'E', 4]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 2}, 0), ({'trips': [[1, 'E', 3], [13, 'W', 1], [1, 'W', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 4, 'discount_pct': 33, 'carpool_min': 2}, 725), ({'trips': [[1, 'W', 4], [2, 'E', 1], [1, 'E', 3], [1, 'W', 1], [2, 'W', 1], [2, 'W', 2], [13, 'E', 1], [1, 'E', 1], [1, 'E', 1]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2900), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[2, 'E', 1], [2, 'W', 4], [13, 'W', 3], [1, 'E', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 2}, 0), ({'trips': [[1, 'W', 1], [1, 'E', 1], [2, 'E', 2], [13, 'W', 1], [1, 'W', 1], [13, 'W', 2], [1, 'E', 2], [2, 'E', 1], [13, 'W', 1], [13, 'W', 3], [1, 'E', 1], [1, 'W', 1], [1, 'W', 4]], 'toll_dir': 'E', 'base': 600, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 3}, 2850), ({'trips': [[1, 'E', 1], [13, 'E', 4], [1, 'E', 4], [1, 'W', 3], [2, 'E', 4], [2, 'W', 1], [1, 'W', 3], [1, 'E', 2], [13, 'W', 1], [1, 'W', 1], [13, 'E', 1], [13, 'W', 4], [1, 'E', 3], [1, 'W', 3]], 'toll_dir': 'E', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 1800), ({'trips': [[2, 'W', 4], [1, 'E', 3], [1, 'W', 4], [1, 'E', 1], [1, 'E', 1], [1, 'E', 2], [1, 'W', 1], [1, 'W', 2], [13, 'W', 4], [13, 'E', 3], [1, 'E', 3], [2, 'E', 1], [1, 'W', 2], [13, 'E', 2], [2, 'E', 1]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 2}, 2900)], [({'trips': [[2, 'E', 1], [13, 'W', 1], [13, 'W', 4], [13, 'E', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 3}, 600), ({'trips': [[2, 'E', 1], [1, 'E', 3], [13, 'E', 1], [1, 'E', 1], [13, 'W', 4], [2, 'W', 4], [2, 'W', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 4, 'discount_pct': 25, 'carpool_min': 2}, 0), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[13, 'E', 2], [1, 'E', 1], [13, 'E', 1], [1, 'W', 1], [1, 'W', 1], [1, 'W', 3]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 2}, 1450), ({'trips': [[13, 'E', 1], [1, 'E', 1], [2, 'E', 1], [13, 'E', 1], [1, 'E', 4], [1, 'E', 4], [13, 'E', 4], [2, 'W', 3], [1, 'E', 1], [13, 'E', 1], [13, 'E', 2], [1, 'W', 1], [13, 'E', 1], [1, 'E', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 2}, 4350), ({'trips': [[1, 'W', 1], [1, 'E', 1], [2, 'W', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 25, 'carpool_min': 2}, 725), ({'trips': [[2, 'E', 4], [13, 'W', 1], [1, 'W', 3]], 'toll_dir': 'E', 'base': 850, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 2}, 0), ({'trips': [[1, 'E', 4], [2, 'W', 1], [13, 'E', 4], [1, 'W', 4], [1, 'W', 4], [2, 'E', 4], [1, 'E', 3], [1, 'W', 4], [2, 'E', 4]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 25, 'carpool_min': 3}, 725)], [({'trips': [[1, 'E', 1], [1, 'W', 1], [1, 'W', 2], [2, 'E', 4], [2, 'W', 1], [1, 'E', 1], [2, 'E', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 40, 'carpool_min': 3}, 2175), ({'trips': [[1, 'W', 1], [13, 'W', 2], [2, 'E', 3], [2, 'W', 2], [1, 'W', 4], [13, 'E', 1], [1, 'W', 1], [1, 'E', 4], [2, 'W', 3], [13, 'W', 4], [1, 'W', 2], [2, 'E', 2], [2, 'W', 4], [13, 'W', 2]], 'toll_dir': 'W', 'base': 600, 'threshold': 1, 'discount_pct': 40, 'carpool_min': 3}, 2880), ({'trips': [[13, 'E', 1], [1, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 2}, 725), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[2, 'E', 4], [1, 'E', 4], [1, 'W', 4], [2, 'E', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 2}, 600), ({'trips': [[1, 'E', 4], [2, 'W', 4], [1, 'E', 1], [1, 'W', 4], [1, 'W', 4], [2, 'E', 1], [1, 'E', 1], [13, 'W', 1], [13, 'W', 2], [2, 'E', 1], [1, 'E', 4], [1, 'W', 1], [13, 'W', 1], [2, 'W', 1], [1, 'E', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 40, 'carpool_min': 3}, 3625), ({'trips': [[1, 'E', 2], [1, 'W', 1], [13, 'E', 1], [1, 'W', 1], [1, 'E', 1], [13, 'E', 1], [13, 'W', 3], [1, 'W', 3], [13, 'E', 1], [1, 'E', 1], [1, 'W', 1], [13, 'E', 2]], 'toll_dir': 'E', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 4200), ({'trips': [[1, 'W', 1], [1, 'E', 1], [13, 'W', 1], [2, 'W', 1], [1, 'E', 3], [2, 'W', 3], [1, 'W', 1], [13, 'W', 4], [13, 'E', 2], [2, 'W', 1], [1, 'W', 1], [1, 'W', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 3}, 1200)]]
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 0725725Passed
fee oracle 117001487Failed
fee oracle 218001800Passed
fee oracle 329002660Failed
fee oracle 418001800Passed
fee oracle 542504250Passed
fee oracle 614501450Passed
fee oracle 7850850Passed

SHA-256 / f2692ade5d5c044f28f12173803f48e258218055226b0545ee77be899ff17062

3 / The verified repair

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

N = 1
observations = []
def solve(x):
    counts = {}
    total = 0
    for month, d, occ in x['trips']:
        if d != x['toll_dir']:
            continue
        if occ >= x['carpool_min']:
            continue
        k = counts.get(month, 0) + 1
        counts[month] = k
        if k > x['threshold']:
            total += x['base'] * (100 - x['discount_pct']) // 100
        else:
            total += x['base']
    return total
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'E', 2], [2, 'W', 3]], 'toll_dir': 'E', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 725), ({'trips': [[13, 'E', 1], [1, 'E', 4], [13, 'E', 1], [2, 'W', 1], [2, 'W', 2], [1, 'E', 3], [13, 'E', 1], [2, 'W', 3], [1, 'E', 4], [2, 'E', 1], [2, 'E', 1], [13, 'E', 2], [13, 'E', 3]], 'toll_dir': 'W', 'base': 850, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 1487), ({'trips': [[2, 'E', 4], [1, 'W', 4], [2, 'E', 4], [13, 'E', 2], [1, 'W', 3], [1, 'W', 1], [2, 'E', 4], [1, 'E', 1], [1, 'W', 3], [1, 'W', 1], [13, 'E', 1], [2, 'W', 3], [1, 'W', 4], [1, 'E', 4], [2, 'W', 1], [2, 'W', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 3}, 1800), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[1, 'W', 2], [1, 'E', 3], [1, 'E', 1], [1, 'W', 2], [1, 'W', 2], [13, 'W', 1], [1, 'E', 1], [2, 'W', 1], [1, 'W', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 2}, 1800), ({'trips': [[13, 'W', 1], [1, 'W', 4], [1, 'E', 1], [1, 'W', 1], [13, 'E', 4], [13, 'W', 2], [13, 'E', 2], [1, 'W', 1], [1, 'W', 1], [1, 'W', 4], [1, 'E', 2], [1, 'W', 1], [2, 'E', 1], [2, 'E', 2]], 'toll_dir': 'E', 'base': 850, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 3}, 4250), ({'trips': [[2, 'W', 2], [13, 'E', 1], [2, 'W', 1], [13, 'E', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 1450), ({'trips': [[1, 'W', 4], [13, 'W', 3], [1, 'W', 2], [2, 'E', 4], [1, 'W', 4], [2, 'W', 1], [1, 'W', 2], [2, 'W', 4], [13, 'W', 1], [1, 'W', 2], [2, 'W', 4], [1, 'E', 3], [1, 'E', 1]], 'toll_dir': 'E', 'base': 850, 'threshold': 3, 'discount_pct': 40, 'carpool_min': 3}, 850)], [({'trips': [[13, 'E', 2], [1, 'E', 1], [13, 'W', 1], [13, 'E', 1], [13, 'E', 1], [1, 'W', 2], [1, 'E', 1], [13, 'W', 3], [13, 'E', 1], [1, 'E', 1], [1, 'W', 1], [1, 'E', 2], [1, 'W', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 3, 'discount_pct': 40, 'carpool_min': 2}, 2550), ({'trips': [[1, 'E', 4], [1, 'W', 1], [2, 'E', 2], [1, 'E', 1], [2, 'E', 3], [13, 'E', 2], [1, 'E', 1], [2, 'W', 3], [1, 'E', 2], [1, 'E', 1], [13, 'W', 1], [1, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 3}, 2175), ({'trips': [[1, 'E', 4], [1, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 3}, 600), ({'trips': [[2, 'W', 3], [13, 'E', 1], [1, 'E', 1], [1, 'W', 3], [1, 'E', 1], [2, 'W', 1], [2, 'W', 3], [1, 'W', 1], [13, 'E', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 1200), ({'trips': [[13, 'E', 1], [1, 'E', 1], [1, 'E', 3], [13, 'W', 3], [13, 'W', 1], [1, 'W', 1], [1, 'W', 3], [13, 'W', 4], [1, 'E', 2], [1, 'E', 1], [13, 'E', 2], [2, 'W', 1], [1, 'E', 3], [1, 'W', 1], [13, 'W', 1], [13, 'E', 4]], 'toll_dir': 'E', 'base': 600, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 3}, 3000), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[13, 'W', 1], [13, 'W', 1], [2, 'W', 2], [1, 'W', 1], [1, 'W', 1], [1, 'E', 2], [1, 'W', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 3}, 3625), ({'trips': [[1, 'W', 1], [1, 'W', 2], [1, 'E', 1], [1, 'E', 2], [2, 'E', 1], [1, 'W', 4], [1, 'W', 1], [1, 'E', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 1811)], [({'trips': [[13, 'E', 1], [13, 'W', 2], [1, 'E', 4]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 2}, 0), ({'trips': [[1, 'E', 3], [13, 'W', 1], [1, 'W', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 4, 'discount_pct': 33, 'carpool_min': 2}, 725), ({'trips': [[1, 'W', 4], [2, 'E', 1], [1, 'E', 3], [1, 'W', 1], [2, 'W', 1], [2, 'W', 2], [13, 'E', 1], [1, 'E', 1], [1, 'E', 1]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2900), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[2, 'E', 1], [2, 'W', 4], [13, 'W', 3], [1, 'E', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 2}, 0), ({'trips': [[1, 'W', 1], [1, 'E', 1], [2, 'E', 2], [13, 'W', 1], [1, 'W', 1], [13, 'W', 2], [1, 'E', 2], [2, 'E', 1], [13, 'W', 1], [13, 'W', 3], [1, 'E', 1], [1, 'W', 1], [1, 'W', 4]], 'toll_dir': 'E', 'base': 600, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 3}, 2850), ({'trips': [[1, 'E', 1], [13, 'E', 4], [1, 'E', 4], [1, 'W', 3], [2, 'E', 4], [2, 'W', 1], [1, 'W', 3], [1, 'E', 2], [13, 'W', 1], [1, 'W', 1], [13, 'E', 1], [13, 'W', 4], [1, 'E', 3], [1, 'W', 3]], 'toll_dir': 'E', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 1800), ({'trips': [[2, 'W', 4], [1, 'E', 3], [1, 'W', 4], [1, 'E', 1], [1, 'E', 1], [1, 'E', 2], [1, 'W', 1], [1, 'W', 2], [13, 'W', 4], [13, 'E', 3], [1, 'E', 3], [2, 'E', 1], [1, 'W', 2], [13, 'E', 2], [2, 'E', 1]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 2}, 2900)], [({'trips': [[2, 'E', 1], [13, 'W', 1], [13, 'W', 4], [13, 'E', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 3}, 600), ({'trips': [[2, 'E', 1], [1, 'E', 3], [13, 'E', 1], [1, 'E', 1], [13, 'W', 4], [2, 'W', 4], [2, 'W', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 4, 'discount_pct': 25, 'carpool_min': 2}, 0), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[13, 'E', 2], [1, 'E', 1], [13, 'E', 1], [1, 'W', 1], [1, 'W', 1], [1, 'W', 3]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 2}, 1450), ({'trips': [[13, 'E', 1], [1, 'E', 1], [2, 'E', 1], [13, 'E', 1], [1, 'E', 4], [1, 'E', 4], [13, 'E', 4], [2, 'W', 3], [1, 'E', 1], [13, 'E', 1], [13, 'E', 2], [1, 'W', 1], [13, 'E', 1], [1, 'E', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 2}, 4350), ({'trips': [[1, 'W', 1], [1, 'E', 1], [2, 'W', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 25, 'carpool_min': 2}, 725), ({'trips': [[2, 'E', 4], [13, 'W', 1], [1, 'W', 3]], 'toll_dir': 'E', 'base': 850, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 2}, 0), ({'trips': [[1, 'E', 4], [2, 'W', 1], [13, 'E', 4], [1, 'W', 4], [1, 'W', 4], [2, 'E', 4], [1, 'E', 3], [1, 'W', 4], [2, 'E', 4]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 25, 'carpool_min': 3}, 725)], [({'trips': [[1, 'E', 1], [1, 'W', 1], [1, 'W', 2], [2, 'E', 4], [2, 'W', 1], [1, 'E', 1], [2, 'E', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 40, 'carpool_min': 3}, 2175), ({'trips': [[1, 'W', 1], [13, 'W', 2], [2, 'E', 3], [2, 'W', 2], [1, 'W', 4], [13, 'E', 1], [1, 'W', 1], [1, 'E', 4], [2, 'W', 3], [13, 'W', 4], [1, 'W', 2], [2, 'E', 2], [2, 'W', 4], [13, 'W', 2]], 'toll_dir': 'W', 'base': 600, 'threshold': 1, 'discount_pct': 40, 'carpool_min': 3}, 2880), ({'trips': [[13, 'E', 1], [1, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 2}, 725), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[2, 'E', 4], [1, 'E', 4], [1, 'W', 4], [2, 'E', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 2}, 600), ({'trips': [[1, 'E', 4], [2, 'W', 4], [1, 'E', 1], [1, 'W', 4], [1, 'W', 4], [2, 'E', 1], [1, 'E', 1], [13, 'W', 1], [13, 'W', 2], [2, 'E', 1], [1, 'E', 4], [1, 'W', 1], [13, 'W', 1], [2, 'W', 1], [1, 'E', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 40, 'carpool_min': 3}, 3625), ({'trips': [[1, 'E', 2], [1, 'W', 1], [13, 'E', 1], [1, 'W', 1], [1, 'E', 1], [13, 'E', 1], [13, 'W', 3], [1, 'W', 3], [13, 'E', 1], [1, 'E', 1], [1, 'W', 1], [13, 'E', 2]], 'toll_dir': 'E', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 4200), ({'trips': [[1, 'W', 1], [1, 'E', 1], [13, 'W', 1], [2, 'W', 1], [1, 'E', 3], [2, 'W', 3], [1, 'W', 1], [13, 'W', 4], [13, 'E', 2], [2, 'W', 1], [1, 'W', 1], [1, 'W', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 3}, 1200)]]
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 0725725Passed
fee oracle 114871487Passed
fee oracle 218001800Passed
fee oracle 326602660Passed
fee oracle 418001800Passed
fee oracle 542504250Passed
fee oracle 614501450Passed
fee oracle 7850850Passed

SHA-256 / 108b0b5ab9abec7255f03d951d99ad513006061565446dc077c2c7100b8c6a53

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

Case digest / a689c152bf5bfee03cf326d8275d6ba247058ef1b10e24212dca02755df395be