{"abstract":"One-way bridge toll with frequent-user discount returns a wrong result when the discounted price is rounded to nearest.","category":"Toll and parking fee computation","checks":8,"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).","contract_signature":"x","evaluation_group":"w2-toll_and_parking_fee_computation-bridge-frequent","failed_approach":"Rounding to nearest also rounds up half the time.","family":"w2-toll_and_parking_fee_computation-bridge-frequent-discount-rounding","id":"FA-68661","implementations":{"attempt":{"sha256":"523c3394f022759c60aa526c3670dc3c91311d7bc3d46249d287c65cdb5f5869","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    counts = {}\n    total = 0\n    for month, d, occ in x['trips']:\n        if d != x['toll_dir']:\n            continue\n        if occ >= x['carpool_min']:\n            continue\n        k = counts.get(month, 0) + 1\n        counts[month] = k\n        if k > x['threshold']:\n            total += round(x['base'] * (100 - x['discount_pct']) / 100)\n        else:\n            total += x['base']\n    return total\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[({'trips': [[1, 'W', 4], [2, 'W', 4], [1, 'E', 4], [1, 'E', 1], [1, 'W', 3], [2, 'W', 4], [1, 'E', 1], [2, 'E', 3], [1, 'W', 1], [13, 'W', 3]], 'toll_dir': 'E', 'base': 725, 'threshold': 1, 'discount_pct': 40, 'carpool_min': 3}, 1160), ({'trips': [[1, 'E', 1], [1, 'E', 1], [1, 'W', 1], [1, 'E', 2], [13, 'E', 3], [1, 'W', 4], [13, 'W', 3], [2, 'W', 3], [13, 'E', 1], [2, 'W', 1], [2, 'E', 1], [1, 'E', 4], [1, 'W', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 2337), ({'trips': [[2, 'W', 3], [1, 'W', 3], [1, 'E', 1], [2, 'E', 2], [2, 'W', 1], [1, 'E', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 1, 'discount_pct': 40, 'carpool_min': 3}, 1800), ({'trips': [[13, 'W', 3], [1, 'E', 2], [1, 'W', 1], [13, 'E', 1], [2, 'E', 3], [2, 'W', 1], [2, 'W', 1], [1, 'E', 3], [2, 'W', 1], [2, 'W', 3], [2, 'W', 1], [13, 'E', 1], [1, 'E', 1], [2, 'E', 3], [1, 'W', 2]], 'toll_dir': 'E', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 2536), ({'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', 3], [2, 'E', 4], [13, 'W', 2], [2, 'E', 2]], 'toll_dir': 'E', 'base': 600, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 3}, 600), ({'trips': [[13, 'W', 3], [2, 'W', 1], [2, 'E', 3], [2, 'W', 3], [1, 'E', 1], [1, 'E', 2], [2, 'E', 1], [13, 'E', 4], [13, 'W', 1], [1, 'E', 1], [13, 'W', 3], [1, 'E', 3], [1, 'W', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 4, 'discount_pct': 33, 'carpool_min': 2}, 2550), ({'trips': [[2, 'W', 1], [1, 'E', 1], [1, 'E', 1], [1, 'E', 1], [13, 'E', 1], [1, 'E', 3], [13, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 5, 'discount_pct': 25, 'carpool_min': 2}, 1700)], [({'trips': [[13, 'E', 3], [13, 'W', 1], [2, 'W', 1], [1, 'E', 1], [1, 'E', 1], [2, 'W', 4], [13, 'E', 3], [1, 'W', 1], [1, 'W', 1], [1, 'W', 1], [2, 'W', 2], [13, 'E', 1], [1, 'W', 4], [13, 'W', 2], [1, 'E', 1], [2, 'W', 2]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 2}, 3261), ({'trips': [[2, 'W', 1], [1, 'W', 3], [1, 'W', 3], [1, 'E', 1], [1, 'W', 4], [13, 'E', 2], [1, 'W', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 2}, 600), ({'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', 4], [2, 'E', 3], [2, 'W', 1], [2, 'E', 1]], 'toll_dir': 'E', 'base': 850, 'threshold': 3, 'discount_pct': 33, 'carpool_min': 2}, 850), ({'trips': [[1, 'W', 1], [1, 'E', 1], [1, 'E', 1], [1, 'E', 3], [1, 'W', 1], [2, 'E', 3], [1, 'E', 1], [2, 'W', 4], [1, 'E', 1], [13, 'E', 1], [2, 'E', 4], [2, 'W', 1], [1, 'E', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 2}, 2337), ({'trips': [[13, 'W', 1], [13, 'E', 1], [1, 'E', 1], [13, 'E', 3], [13, 'E', 4], [2, 'E', 1], [1, 'W', 1], [1, 'E', 1], [13, 'W', 1], [13, 'E', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 5, 'discount_pct': 25, 'carpool_min': 3}, 2550), ({'trips': [[1, 'E', 1], [13, 'W', 2], [2, 'E', 2], [1, 'W', 1], [1, 'E', 4], [2, 'W', 3], [13, 'W', 3], [2, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1], [1, 'E', 2], [13, 'E', 2], [1, 'E', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 2}, 1050), ({'trips': [[2, 'E', 1], [1, 'W', 1], [1, 'W', 4], [1, 'E', 1], [2, 'E', 2], [2, 'W', 2], [13, 'E', 1], [1, 'W', 4], [1, 'E', 2], [1, 'W', 1], [1, 'W', 1], [2, 'W', 3]], 'toll_dir': 'E', 'base': 600, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 2}, 1800)], [({'trips': [[1, 'E', 1], [1, 'W', 1], [1, 'E', 4], [1, 'W', 3], [13, 'E', 1], [1, 'E', 2]], 'toll_dir': 'W', 'base': 725, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 725), ({'trips': [[1, 'W', 4], [1, 'E', 1], [2, 'W', 3], [1, 'E', 2], [13, 'W', 2], [1, 'E', 4], [13, 'E', 1], [13, 'E', 1]], 'toll_dir': 'E', 'base': 725, 'threshold': 4, 'discount_pct': 25, 'carpool_min': 3}, 2900), ({'trips': [[1, 'W', 1], [1, 'W', 4], [2, 'W', 1], [2, 'E', 3], [1, 'E', 3], [1, 'E', 2], [2, 'W', 1], [1, 'W', 2], [13, 'E', 2], [1, 'E', 1], [1, 'E', 2], [13, 'E', 2], [13, 'E', 1], [1, 'W', 2], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 3}, 3630), ({'trips': [[13, 'E', 2], [1, 'W', 3], [1, 'E', 4], [2, 'E', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 2}, 0), ({'trips': [[1, 'W', 1], [1, 'W', 2], [13, 'W', 4], [1, 'W', 4], [13, 'W', 3], [1, 'E', 4], [2, 'W', 2], [2, 'E', 1], [1, 'E', 4], [13, 'W', 1], [1, 'E', 1], [13, 'E', 1], [2, 'E', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 3}, 3119), ({'trips': [[2, 'W', 1], [1, 'W', 4], [13, 'E', 2], [2, 'E', 1], [13, 'W', 4], [2, 'E', 1], [2, 'E', 1], [1, 'W', 1], [1, 'W', 1], [1, 'E', 1], [13, 'W', 1], [1, 'E', 1], [2, 'E', 2], [1, 'W', 2]], 'toll_dir': 'W', 'base': 600, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 2}, 2250), ({'trips': [[13, 'W', 1], [1, 'W', 2], [13, 'W', 1], [1, 'W', 3], [1, 'E', 4], [13, 'E', 1], [1, 'E', 1], [1, 'E', 2], [1, 'E', 1], [13, 'W', 1], [1, 'E', 1], [2, 'E', 2], [2, 'E', 3], [2, 'W', 3], [13, 'E', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 3, 'discount_pct': 33, 'carpool_min': 3}, 3400), ({'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', 1], [1, 'W', 2], [1, 'W', 3], [13, 'W', 1], [13, 'W', 1], [1, 'E', 4], [13, 'W', 1], [13, 'E', 1], [13, 'E', 2], [2, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 2}, 3261), ({'trips': [[1, 'E', 1], [1, 'W', 3], [1, 'E', 2]], 'toll_dir': 'E', 'base': 725, 'threshold': 3, 'discount_pct': 33, 'carpool_min': 3}, 1450), ({'trips': [[1, 'E', 2], [1, 'E', 2], [1, 'E', 1], [2, 'E', 1], [2, 'W', 4], [13, 'W', 3], [1, 'E', 1], [1, 'W', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 4, 'discount_pct': 33, 'carpool_min': 2}, 1450), ({'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, 'W', 2], [2, 'E', 2], [1, 'E', 2], [2, 'E', 3], [1, 'W', 1], [1, 'E', 1], [13, 'E', 1], [1, 'W', 2], [1, 'E', 2], [1, 'W', 1], [2, 'W', 1], [13, 'E', 3], [1, 'E', 1], [13, 'W', 4], [1, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 3}, 3390), ({'trips': [[2, 'E', 2], [13, 'W', 1], [13, 'W', 3], [13, 'W', 4], [1, 'E', 3], [13, 'W', 1], [13, 'E', 2], [1, 'W', 2], [1, 'W', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 1800), ({'trips': [[13, 'E', 4], [2, 'W', 4], [13, 'W', 1], [13, 'W', 1], [2, 'E', 2], [2, 'E', 3], [13, 'E', 3], [13, 'E', 2]], 'toll_dir': 'W', 'base': 850, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 2}, 1700), ({'trips': [[2, 'W', 1], [13, 'W', 1], [1, 'E', 1], [1, 'W', 1]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 3}, 725)], [({'trips': [[1, 'W', 3], [1, 'E', 4], [1, 'W', 4]], 'toll_dir': 'E', 'base': 600, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 0), ({'trips': [[1, 'E', 2], [1, 'E', 1], [1, 'W', 3], [1, 'W', 1], [13, 'E', 1], [1, 'E', 4], [2, 'E', 1], [1, 'W', 1], [1, 'E', 1], [1, 'E', 3], [13, 'E', 2], [13, 'E', 4], [13, 'E', 3]], 'toll_dir': 'W', 'base': 850, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 3}, 1419), ({'trips': [[13, 'W', 3], [13, 'E', 4], [1, 'W', 3], [2, 'W', 1], [2, 'E', 4], [2, 'E', 1], [13, 'E', 1], [13, 'W', 4], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 1800), ({'trips': [[1, 'E', 1], [1, 'E', 1], [2, 'E', 1], [2, 'E', 4], [2, 'E', 1], [2, 'E', 3], [1, 'W', 1], [1, 'W', 1], [1, 'W', 1], [1, 'W', 1]], 'toll_dir': 'E', 'base': 850, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 2}, 3400), ({'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, 'E', 1], [1, 'W', 3], [1, 'W', 4], [1, 'E', 1], [1, 'E', 2], [2, 'W', 2], [13, 'E', 4], [1, 'W', 4], [1, 'W', 2], [1, 'E', 1], [1, 'W', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 2}, 2400), ({'trips': [[1, 'E', 1], [2, 'E', 4], [2, 'W', 3], [1, 'E', 1], [1, 'W', 4], [13, 'W', 1], [1, 'W', 2]], 'toll_dir': 'W', 'base': 600, 'threshold': 3, 'discount_pct': 33, 'carpool_min': 2}, 600), ({'trips': [[2, 'E', 3], [2, 'W', 1], [13, 'E', 1], [1, 'W', 2], [13, 'E', 4], [2, 'W', 3], [1, 'W', 1], [1, 'W', 4], [1, 'W', 1], [13, 'E', 1]], 'toll_dir': 'E', 'base': 725, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 3}, 1210)]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check('fee oracle' + ' %d' % i, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"995a517a59bb8389510d1f9132f8d0c70630ed38d1f6d46199c2c073f6ee750b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    counts = {}\n    total = 0\n    for month, d, occ in x['trips']:\n        if d != x['toll_dir']:\n            continue\n        if occ >= x['carpool_min']:\n            continue\n        k = counts.get(month, 0) + 1\n        counts[month] = k\n        if k > x['threshold']:\n            total += x['base'] - x['base'] * x['discount_pct'] // 100\n        else:\n            total += x['base']\n    return total\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[({'trips': [[1, 'W', 4], [2, 'W', 4], [1, 'E', 4], [1, 'E', 1], [1, 'W', 3], [2, 'W', 4], [1, 'E', 1], [2, 'E', 3], [1, 'W', 1], [13, 'W', 3]], 'toll_dir': 'E', 'base': 725, 'threshold': 1, 'discount_pct': 40, 'carpool_min': 3}, 1160), ({'trips': [[1, 'E', 1], [1, 'E', 1], [1, 'W', 1], [1, 'E', 2], [13, 'E', 3], [1, 'W', 4], [13, 'W', 3], [2, 'W', 3], [13, 'E', 1], [2, 'W', 1], [2, 'E', 1], [1, 'E', 4], [1, 'W', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 2337), ({'trips': [[2, 'W', 3], [1, 'W', 3], [1, 'E', 1], [2, 'E', 2], [2, 'W', 1], [1, 'E', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 1, 'discount_pct': 40, 'carpool_min': 3}, 1800), ({'trips': [[13, 'W', 3], [1, 'E', 2], [1, 'W', 1], [13, 'E', 1], [2, 'E', 3], [2, 'W', 1], [2, 'W', 1], [1, 'E', 3], [2, 'W', 1], [2, 'W', 3], [2, 'W', 1], [13, 'E', 1], [1, 'E', 1], [2, 'E', 3], [1, 'W', 2]], 'toll_dir': 'E', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 2536), ({'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', 3], [2, 'E', 4], [13, 'W', 2], [2, 'E', 2]], 'toll_dir': 'E', 'base': 600, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 3}, 600), ({'trips': [[13, 'W', 3], [2, 'W', 1], [2, 'E', 3], [2, 'W', 3], [1, 'E', 1], [1, 'E', 2], [2, 'E', 1], [13, 'E', 4], [13, 'W', 1], [1, 'E', 1], [13, 'W', 3], [1, 'E', 3], [1, 'W', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 4, 'discount_pct': 33, 'carpool_min': 2}, 2550), ({'trips': [[2, 'W', 1], [1, 'E', 1], [1, 'E', 1], [1, 'E', 1], [13, 'E', 1], [1, 'E', 3], [13, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 5, 'discount_pct': 25, 'carpool_min': 2}, 1700)], [({'trips': [[13, 'E', 3], [13, 'W', 1], [2, 'W', 1], [1, 'E', 1], [1, 'E', 1], [2, 'W', 4], [13, 'E', 3], [1, 'W', 1], [1, 'W', 1], [1, 'W', 1], [2, 'W', 2], [13, 'E', 1], [1, 'W', 4], [13, 'W', 2], [1, 'E', 1], [2, 'W', 2]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 2}, 3261), ({'trips': [[2, 'W', 1], [1, 'W', 3], [1, 'W', 3], [1, 'E', 1], [1, 'W', 4], [13, 'E', 2], [1, 'W', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 2}, 600), ({'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', 4], [2, 'E', 3], [2, 'W', 1], [2, 'E', 1]], 'toll_dir': 'E', 'base': 850, 'threshold': 3, 'discount_pct': 33, 'carpool_min': 2}, 850), ({'trips': [[1, 'W', 1], [1, 'E', 1], [1, 'E', 1], [1, 'E', 3], [1, 'W', 1], [2, 'E', 3], [1, 'E', 1], [2, 'W', 4], [1, 'E', 1], [13, 'E', 1], [2, 'E', 4], [2, 'W', 1], [1, 'E', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 2}, 2337), ({'trips': [[13, 'W', 1], [13, 'E', 1], [1, 'E', 1], [13, 'E', 3], [13, 'E', 4], [2, 'E', 1], [1, 'W', 1], [1, 'E', 1], [13, 'W', 1], [13, 'E', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 5, 'discount_pct': 25, 'carpool_min': 3}, 2550), ({'trips': [[1, 'E', 1], [13, 'W', 2], [2, 'E', 2], [1, 'W', 1], [1, 'E', 4], [2, 'W', 3], [13, 'W', 3], [2, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1], [1, 'E', 2], [13, 'E', 2], [1, 'E', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 2}, 1050), ({'trips': [[2, 'E', 1], [1, 'W', 1], [1, 'W', 4], [1, 'E', 1], [2, 'E', 2], [2, 'W', 2], [13, 'E', 1], [1, 'W', 4], [1, 'E', 2], [1, 'W', 1], [1, 'W', 1], [2, 'W', 3]], 'toll_dir': 'E', 'base': 600, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 2}, 1800)], [({'trips': [[1, 'E', 1], [1, 'W', 1], [1, 'E', 4], [1, 'W', 3], [13, 'E', 1], [1, 'E', 2]], 'toll_dir': 'W', 'base': 725, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 725), ({'trips': [[1, 'W', 4], [1, 'E', 1], [2, 'W', 3], [1, 'E', 2], [13, 'W', 2], [1, 'E', 4], [13, 'E', 1], [13, 'E', 1]], 'toll_dir': 'E', 'base': 725, 'threshold': 4, 'discount_pct': 25, 'carpool_min': 3}, 2900), ({'trips': [[1, 'W', 1], [1, 'W', 4], [2, 'W', 1], [2, 'E', 3], [1, 'E', 3], [1, 'E', 2], [2, 'W', 1], [1, 'W', 2], [13, 'E', 2], [1, 'E', 1], [1, 'E', 2], [13, 'E', 2], [13, 'E', 1], [1, 'W', 2], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 3}, 3630), ({'trips': [[13, 'E', 2], [1, 'W', 3], [1, 'E', 4], [2, 'E', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 2}, 0), ({'trips': [[1, 'W', 1], [1, 'W', 2], [13, 'W', 4], [1, 'W', 4], [13, 'W', 3], [1, 'E', 4], [2, 'W', 2], [2, 'E', 1], [1, 'E', 4], [13, 'W', 1], [1, 'E', 1], [13, 'E', 1], [2, 'E', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 3}, 3119), ({'trips': [[2, 'W', 1], [1, 'W', 4], [13, 'E', 2], [2, 'E', 1], [13, 'W', 4], [2, 'E', 1], [2, 'E', 1], [1, 'W', 1], [1, 'W', 1], [1, 'E', 1], [13, 'W', 1], [1, 'E', 1], [2, 'E', 2], [1, 'W', 2]], 'toll_dir': 'W', 'base': 600, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 2}, 2250), ({'trips': [[13, 'W', 1], [1, 'W', 2], [13, 'W', 1], [1, 'W', 3], [1, 'E', 4], [13, 'E', 1], [1, 'E', 1], [1, 'E', 2], [1, 'E', 1], [13, 'W', 1], [1, 'E', 1], [2, 'E', 2], [2, 'E', 3], [2, 'W', 3], [13, 'E', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 3, 'discount_pct': 33, 'carpool_min': 3}, 3400), ({'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', 1], [1, 'W', 2], [1, 'W', 3], [13, 'W', 1], [13, 'W', 1], [1, 'E', 4], [13, 'W', 1], [13, 'E', 1], [13, 'E', 2], [2, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 2}, 3261), ({'trips': [[1, 'E', 1], [1, 'W', 3], [1, 'E', 2]], 'toll_dir': 'E', 'base': 725, 'threshold': 3, 'discount_pct': 33, 'carpool_min': 3}, 1450), ({'trips': [[1, 'E', 2], [1, 'E', 2], [1, 'E', 1], [2, 'E', 1], [2, 'W', 4], [13, 'W', 3], [1, 'E', 1], [1, 'W', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 4, 'discount_pct': 33, 'carpool_min': 2}, 1450), ({'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, 'W', 2], [2, 'E', 2], [1, 'E', 2], [2, 'E', 3], [1, 'W', 1], [1, 'E', 1], [13, 'E', 1], [1, 'W', 2], [1, 'E', 2], [1, 'W', 1], [2, 'W', 1], [13, 'E', 3], [1, 'E', 1], [13, 'W', 4], [1, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 3}, 3390), ({'trips': [[2, 'E', 2], [13, 'W', 1], [13, 'W', 3], [13, 'W', 4], [1, 'E', 3], [13, 'W', 1], [13, 'E', 2], [1, 'W', 2], [1, 'W', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 1800), ({'trips': [[13, 'E', 4], [2, 'W', 4], [13, 'W', 1], [13, 'W', 1], [2, 'E', 2], [2, 'E', 3], [13, 'E', 3], [13, 'E', 2]], 'toll_dir': 'W', 'base': 850, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 2}, 1700), ({'trips': [[2, 'W', 1], [13, 'W', 1], [1, 'E', 1], [1, 'W', 1]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 3}, 725)], [({'trips': [[1, 'W', 3], [1, 'E', 4], [1, 'W', 4]], 'toll_dir': 'E', 'base': 600, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 0), ({'trips': [[1, 'E', 2], [1, 'E', 1], [1, 'W', 3], [1, 'W', 1], [13, 'E', 1], [1, 'E', 4], [2, 'E', 1], [1, 'W', 1], [1, 'E', 1], [1, 'E', 3], [13, 'E', 2], [13, 'E', 4], [13, 'E', 3]], 'toll_dir': 'W', 'base': 850, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 3}, 1419), ({'trips': [[13, 'W', 3], [13, 'E', 4], [1, 'W', 3], [2, 'W', 1], [2, 'E', 4], [2, 'E', 1], [13, 'E', 1], [13, 'W', 4], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 1800), ({'trips': [[1, 'E', 1], [1, 'E', 1], [2, 'E', 1], [2, 'E', 4], [2, 'E', 1], [2, 'E', 3], [1, 'W', 1], [1, 'W', 1], [1, 'W', 1], [1, 'W', 1]], 'toll_dir': 'E', 'base': 850, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 2}, 3400), ({'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, 'E', 1], [1, 'W', 3], [1, 'W', 4], [1, 'E', 1], [1, 'E', 2], [2, 'W', 2], [13, 'E', 4], [1, 'W', 4], [1, 'W', 2], [1, 'E', 1], [1, 'W', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 2}, 2400), ({'trips': [[1, 'E', 1], [2, 'E', 4], [2, 'W', 3], [1, 'E', 1], [1, 'W', 4], [13, 'W', 1], [1, 'W', 2]], 'toll_dir': 'W', 'base': 600, 'threshold': 3, 'discount_pct': 33, 'carpool_min': 2}, 600), ({'trips': [[2, 'E', 3], [2, 'W', 1], [13, 'E', 1], [1, 'W', 2], [13, 'E', 4], [2, 'W', 3], [1, 'W', 1], [1, 'W', 4], [1, 'W', 1], [13, 'E', 1]], 'toll_dir': 'E', 'base': 725, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 3}, 1210)]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check('fee oracle' + ' %d' % i, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-toll_and_parking_fee_computation-bridge-frequent-discount-rounding","generated_at":"2026-09-29T14:48:04.321184+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Fee engines bill customers in integer cents; a wrong boundary, rounding stage or cap scope silently over- or under-charges.","root_cause":"Flooring the discount instead of the discounted price leaves the customer paying the fractional cent.","sha256":"ed6971311fe537418206609864334dd80175b7fb342c10b1ac631c92c7c48c69","title":"One-way bridge toll with frequent-user discount: the discounted price is rounded to nearest · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":42.387,"exit_code":1,"observations":[{"actual":1160,"check":"fee oracle 0","expected":1160,"passed":true},{"actual":2338,"check":"fee oracle 1","expected":2337,"passed":false},{"actual":1800,"check":"fee oracle 2","expected":1800,"passed":true},{"actual":2538,"check":"fee oracle 3","expected":2536,"passed":false},{"actual":2661,"check":"fee oracle 4","expected":2660,"passed":false},{"actual":600,"check":"fee oracle 5","expected":600,"passed":true},{"actual":2550,"check":"fee oracle 6","expected":2550,"passed":true},{"actual":1700,"check":"fee oracle 7","expected":1700,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fee oracle 0\", \"actual\": 1160, \"expected\": 1160, \"passed\": true}, {\"check\": \"fee oracle 1\", \"actual\": 2338, \"expected\": 2337, \"passed\": false}, {\"check\": \"fee oracle 2\", \"actual\": 1800, \"expected\": 1800, \"passed\": true}, {\"check\": \"fee oracle 3\", \"actual\": 2538, \"expected\": 2536, \"passed\": false}, {\"check\": \"fee oracle 4\", \"actual\": 2661, \"expected\": 2660, \"passed\": false}, {\"check\": \"fee oracle 5\", \"actual\": 600, \"expected\": 600, \"passed\": true}, {\"check\": \"fee oracle 6\", \"actual\": 2550, \"expected\": 2550, \"passed\": true}, {\"check\": \"fee oracle 7\", \"actual\": 1700, \"expected\": 1700, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.406,"exit_code":1,"observations":[{"actual":1160,"check":"fee oracle 0","expected":1160,"passed":true},{"actual":2338,"check":"fee oracle 1","expected":2337,"passed":false},{"actual":1800,"check":"fee oracle 2","expected":1800,"passed":true},{"actual":2538,"check":"fee oracle 3","expected":2536,"passed":false},{"actual":2661,"check":"fee oracle 4","expected":2660,"passed":false},{"actual":600,"check":"fee oracle 5","expected":600,"passed":true},{"actual":2550,"check":"fee oracle 6","expected":2550,"passed":true},{"actual":1700,"check":"fee oracle 7","expected":1700,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fee oracle 0\", \"actual\": 1160, \"expected\": 1160, \"passed\": true}, {\"check\": \"fee oracle 1\", \"actual\": 2338, \"expected\": 2337, \"passed\": false}, {\"check\": \"fee oracle 2\", \"actual\": 1800, \"expected\": 1800, \"passed\": true}, {\"check\": \"fee oracle 3\", \"actual\": 2538, \"expected\": 2536, \"passed\": false}, {\"check\": \"fee oracle 4\", \"actual\": 2661, \"expected\": 2660, \"passed\": false}, {\"check\": \"fee oracle 5\", \"actual\": 600, \"expected\": 600, \"passed\": true}, {\"check\": \"fee oracle 6\", \"actual\": 2550, \"expected\": 2550, \"passed\": true}, {\"check\": \"fee oracle 7\", \"actual\": 1700, \"expected\": 1700, \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}