{"abstract":"Cordon congestion charge returns a wrong result when the cap applies to the whole billing period.","category":"Toll and parking fee computation","checks":8,"contract":"Input {crossings: [[day, minute]] unordered, peak: [[start, end)] windows, peak_fee, offpeak_fee, daily_cap, weekend_free, zero_emission, grace}. Zero-emission vehicles pay 0. Days with day % 7 in {5, 6} are free when weekend_free. Within a day, a crossing no more than grace minutes after the last charged crossing is free (the grace anchor is the charged crossing). Each charged crossing pays the peak fee inside a window else off-peak; each day's sum is capped at daily_cap.","contract_signature":"x","evaluation_group":"w2-toll_and_parking_fee_computation-congestion-charge","failed_approach":"Capping the running total limits the whole period to one day of charges.","family":"w2-toll_and_parking_fee_computation-congestion-charge-cap-scope","id":"FA-68551","implementations":{"attempt":{"sha256":"c6f6bb6e8f3f0d09c1dbf38d801aa821e65140f491c1d261de3cdbff36f75399","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    if x['zero_emission']:\n        return 0\n    byday = {}\n    for d, m in sorted(x['crossings']):\n        byday.setdefault(d, []).append(m)\n    total = 0\n    for d, ms in byday.items():\n        if x['weekend_free'] and d % 7 >= 5:\n            continue\n        last = None\n        day_sum = 0\n        for m in ms:\n            if last is not None and m - last <= x['grace']:\n                continue\n            last = m\n            peak = any(s <= m < e for s, e in x['peak'])\n            day_sum += x['peak_fee'] if peak else x['offpeak_fee']\n        total = min(total + day_sum, x['daily_cap'])\n    return total\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[({'crossings': [[6, 520], [8, 430], [8, 435], [0, 1106], [0, 1013]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 250, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 2500), ({'crossings': [[2, 600], [2, 420], [2, 1140]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 1400), ({'crossings': [[6, 497], [3, 958], [1, 326], [6, 1096], [1, 331], [8, 1070]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 300, 'daily_cap': 1500, 'weekend_free': False, 'zero_emission': False, 'grace': 10}, 3000), ({'crossings': [[1, 500], [1, 508], [1, 516], [1, 530]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 2700), ({'crossings': [[0, 1287], [0, 1302], [0, 1307], [2, 1091], [4, 959], [8, 998], [3, 769], [4, 644], [7, 461]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 300, 'daily_cap': 2000, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 4500), ({'crossings': [[6, 500], [0, 500], [5, 500]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 900), ({'crossings': [[2, 347], [2, 352], [5, 726], [2, 1038], [7, 922], [8, 903], [2, 332]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 300, 'daily_cap': 2000, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 2200), ({'crossings': [[0, 1186], [0, 531], [0, 807], [8, 437], [0, 975], [0, 1159], [0, 1154]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 2000, 'weekend_free': False, 'zero_emission': False, 'grace': 15}, 2900)], [({'crossings': [[2, 1073], [7, 669], [4, 1136], [8, 1182], [8, 391], [4, 492]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 200, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 3000), ({'crossings': [[2, 416], [1, 1238], [2, 1124], [2, 431], [8, 952], [3, 965], [3, 1300]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 300, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 3400), ({'crossings': [[7, 869], [3, 859], [0, 544], [0, 1122], [4, 1253], [3, 675], [1, 929], [0, 1142], [6, 420]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 2750), ({'crossings': [[6, 500], [0, 500], [5, 500]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 900), ({'crossings': [[1, 500], [1, 508], [1, 516], [1, 530]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 2700), ({'crossings': [[2, 600], [2, 420], [2, 1140]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 1400), ({'crossings': [[6, 1035], [7, 844], [2, 726], [2, 1037]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 250, 'daily_cap': 1500, 'weekend_free': False, 'zero_emission': False, 'grace': 10}, 2500), ({'crossings': [[1, 1185], [2, 606], [6, 710], [6, 812], [1, 719], [6, 721], [6, 736], [8, 822], [9, 1267]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 300, 'daily_cap': 2000, 'weekend_free': False, 'zero_emission': False, 'grace': 10}, 2700)], [({'crossings': [[6, 500], [0, 500], [5, 500]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 900), ({'crossings': [[8, 1127], [7, 1208], [3, 443], [8, 415], [8, 1132], [8, 1112]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 200, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 2700), ({'crossings': [[9, 1283], [2, 592], [4, 827], [4, 842], [8, 922], [7, 1070], [9, 1194], [2, 341]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 300, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 3300), ({'crossings': [[4, 502], [0, 1272], [7, 731], [4, 344], [4, 492], [2, 337], [4, 512]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 250, 'daily_cap': 2000, 'weekend_free': False, 'zero_emission': False, 'grace': 10}, 2750), ({'crossings': [[1, 500], [1, 508], [1, 516], [1, 530]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 2700), ({'crossings': [[2, 600], [2, 420], [2, 1140]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 1400), ({'crossings': [[7, 586], [5, 897], [1, 745], [2, 423], [7, 357], [2, 777], [4, 503], [1, 1075], [7, 362]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 200, 'daily_cap': 3000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 4600), ({'crossings': [[8, 962], [8, 974]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 300, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 1500)], [({'crossings': [[0, 930], [9, 511], [3, 655], [4, 476], [3, 1099], [0, 471], [3, 665], [3, 645], [3, 1032], [5, 1136]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 300, 'daily_cap': 2000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 5300), ({'crossings': [[1, 972], [1, 992]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 300, 'daily_cap': 1500, 'weekend_free': False, 'zero_emission': False, 'grace': 10}, 1500), ({'crossings': [[5, 821], [1, 1260], [3, 425], [1, 614], [1, 604], [7, 629], [0, 651], [4, 469]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 200, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 2600), ({'crossings': [[9, 475], [4, 460], [2, 477], [5, 386], [4, 651], [9, 455], [7, 710], [9, 1205], [4, 992]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 4150), ({'crossings': [[2, 600], [2, 420], [2, 1140]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 1400), ({'crossings': [[1, 500], [1, 508], [1, 516], [1, 530]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 2700), ({'crossings': [[7, 475], [7, 455], [0, 1155], [1, 872]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 200, 'daily_cap': 2000, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 2400), ({'crossings': [[6, 500], [0, 500], [5, 500]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 900)], [({'crossings': [[3, 573], [3, 585]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 1500), ({'crossings': [[6, 500], [0, 500], [5, 500]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 900), ({'crossings': [[3, 1246], [3, 413], [4, 534], [3, 1261]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 300, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 1800), ({'crossings': [[2, 600], [2, 420], [2, 1140]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 1400), ({'crossings': [[5, 1280], [4, 1116], [7, 944], [4, 1096]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 250, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 1750), ({'crossings': [[1, 500], [1, 508], [1, 516], [1, 530]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 2700), ({'crossings': [[6, 629], [6, 481], [5, 417], [5, 1096], [7, 856], [3, 1083], [6, 452], [4, 996]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 200, 'daily_cap': 2000, 'weekend_free': False, 'zero_emission': False, 'grace': 15}, 5400), ({'crossings': [[9, 418], [2, 613], [9, 470], [9, 480], [9, 788], [3, 753], [7, 486]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 300, 'daily_cap': 2000, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 3200)]]\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":"fe5f84a8af5e5ff3120ebd3e5a15b4811f48361b2e229833ae8bdd4f8f86d814","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    if x['zero_emission']:\n        return 0\n    byday = {}\n    for d, m in sorted(x['crossings']):\n        byday.setdefault(d, []).append(m)\n    total = 0\n    for d, ms in byday.items():\n        if x['weekend_free'] and d % 7 >= 5:\n            continue\n        last = None\n        day_sum = 0\n        for m in ms:\n            if last is not None and m - last <= x['grace']:\n                continue\n            last = m\n            peak = any(s <= m < e for s, e in x['peak'])\n            day_sum += x['peak_fee'] if peak else x['offpeak_fee']\n        total += day_sum\n    return total\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[({'crossings': [[6, 520], [8, 430], [8, 435], [0, 1106], [0, 1013]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 250, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 2500), ({'crossings': [[2, 600], [2, 420], [2, 1140]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 1400), ({'crossings': [[6, 497], [3, 958], [1, 326], [6, 1096], [1, 331], [8, 1070]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 300, 'daily_cap': 1500, 'weekend_free': False, 'zero_emission': False, 'grace': 10}, 3000), ({'crossings': [[1, 500], [1, 508], [1, 516], [1, 530]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 2700), ({'crossings': [[0, 1287], [0, 1302], [0, 1307], [2, 1091], [4, 959], [8, 998], [3, 769], [4, 644], [7, 461]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 300, 'daily_cap': 2000, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 4500), ({'crossings': [[6, 500], [0, 500], [5, 500]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 900), ({'crossings': [[2, 347], [2, 352], [5, 726], [2, 1038], [7, 922], [8, 903], [2, 332]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 300, 'daily_cap': 2000, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 2200), ({'crossings': [[0, 1186], [0, 531], [0, 807], [8, 437], [0, 975], [0, 1159], [0, 1154]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 2000, 'weekend_free': False, 'zero_emission': False, 'grace': 15}, 2900)], [({'crossings': [[2, 1073], [7, 669], [4, 1136], [8, 1182], [8, 391], [4, 492]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 200, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 3000), ({'crossings': [[2, 416], [1, 1238], [2, 1124], [2, 431], [8, 952], [3, 965], [3, 1300]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 300, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 3400), ({'crossings': [[7, 869], [3, 859], [0, 544], [0, 1122], [4, 1253], [3, 675], [1, 929], [0, 1142], [6, 420]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 2750), ({'crossings': [[6, 500], [0, 500], [5, 500]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 900), ({'crossings': [[1, 500], [1, 508], [1, 516], [1, 530]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 2700), ({'crossings': [[2, 600], [2, 420], [2, 1140]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 1400), ({'crossings': [[6, 1035], [7, 844], [2, 726], [2, 1037]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 250, 'daily_cap': 1500, 'weekend_free': False, 'zero_emission': False, 'grace': 10}, 2500), ({'crossings': [[1, 1185], [2, 606], [6, 710], [6, 812], [1, 719], [6, 721], [6, 736], [8, 822], [9, 1267]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 300, 'daily_cap': 2000, 'weekend_free': False, 'zero_emission': False, 'grace': 10}, 2700)], [({'crossings': [[6, 500], [0, 500], [5, 500]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 900), ({'crossings': [[8, 1127], [7, 1208], [3, 443], [8, 415], [8, 1132], [8, 1112]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 200, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 2700), ({'crossings': [[9, 1283], [2, 592], [4, 827], [4, 842], [8, 922], [7, 1070], [9, 1194], [2, 341]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 300, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 3300), ({'crossings': [[4, 502], [0, 1272], [7, 731], [4, 344], [4, 492], [2, 337], [4, 512]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 250, 'daily_cap': 2000, 'weekend_free': False, 'zero_emission': False, 'grace': 10}, 2750), ({'crossings': [[1, 500], [1, 508], [1, 516], [1, 530]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 2700), ({'crossings': [[2, 600], [2, 420], [2, 1140]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 1400), ({'crossings': [[7, 586], [5, 897], [1, 745], [2, 423], [7, 357], [2, 777], [4, 503], [1, 1075], [7, 362]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 200, 'daily_cap': 3000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 4600), ({'crossings': [[8, 962], [8, 974]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 300, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 1500)], [({'crossings': [[0, 930], [9, 511], [3, 655], [4, 476], [3, 1099], [0, 471], [3, 665], [3, 645], [3, 1032], [5, 1136]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 300, 'daily_cap': 2000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 5300), ({'crossings': [[1, 972], [1, 992]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 300, 'daily_cap': 1500, 'weekend_free': False, 'zero_emission': False, 'grace': 10}, 1500), ({'crossings': [[5, 821], [1, 1260], [3, 425], [1, 614], [1, 604], [7, 629], [0, 651], [4, 469]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 200, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 2600), ({'crossings': [[9, 475], [4, 460], [2, 477], [5, 386], [4, 651], [9, 455], [7, 710], [9, 1205], [4, 992]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 4150), ({'crossings': [[2, 600], [2, 420], [2, 1140]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 1400), ({'crossings': [[1, 500], [1, 508], [1, 516], [1, 530]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 2700), ({'crossings': [[7, 475], [7, 455], [0, 1155], [1, 872]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 200, 'daily_cap': 2000, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 2400), ({'crossings': [[6, 500], [0, 500], [5, 500]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 900)], [({'crossings': [[3, 573], [3, 585]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 1500), ({'crossings': [[6, 500], [0, 500], [5, 500]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 900), ({'crossings': [[3, 1246], [3, 413], [4, 534], [3, 1261]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 300, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 1800), ({'crossings': [[2, 600], [2, 420], [2, 1140]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 1400), ({'crossings': [[5, 1280], [4, 1116], [7, 944], [4, 1096]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 250, 'daily_cap': 1500, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 1750), ({'crossings': [[1, 500], [1, 508], [1, 516], [1, 530]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 900, 'offpeak_fee': 250, 'daily_cap': 5000, 'weekend_free': True, 'zero_emission': False, 'grace': 10}, 2700), ({'crossings': [[6, 629], [6, 481], [5, 417], [5, 1096], [7, 856], [3, 1083], [6, 452], [4, 996]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 200, 'daily_cap': 2000, 'weekend_free': False, 'zero_emission': False, 'grace': 15}, 5400), ({'crossings': [[9, 418], [2, 613], [9, 470], [9, 480], [9, 788], [3, 753], [7, 486]], 'peak': [[420, 600], [960, 1140]], 'peak_fee': 1000, 'offpeak_fee': 300, 'daily_cap': 2000, 'weekend_free': True, 'zero_emission': False, 'grace': 15}, 3200)]]\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-congestion-charge-cap-scope","generated_at":"2026-09-29T14:48:03.186896+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":"Days with many crossings are not capped.","sha256":"15f6f488970fbe2f459cc20eda72224af5e651bb4d6d8444f08f811ff0ec6053","title":"Cordon congestion charge: the cap applies to the whole billing period · 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":41.412,"exit_code":1,"observations":[{"actual":1500,"check":"fee oracle 0","expected":2500,"passed":false},{"actual":1400,"check":"fee oracle 1","expected":1400,"passed":true},{"actual":1500,"check":"fee oracle 2","expected":3000,"passed":false},{"actual":2700,"check":"fee oracle 3","expected":2700,"passed":true},{"actual":2000,"check":"fee oracle 4","expected":4500,"passed":false},{"actual":900,"check":"fee oracle 5","expected":900,"passed":true},{"actual":2000,"check":"fee oracle 6","expected":2200,"passed":false},{"actual":2000,"check":"fee oracle 7","expected":2900,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fee oracle 0\", \"actual\": 1500, \"expected\": 2500, \"passed\": false}, {\"check\": \"fee oracle 1\", \"actual\": 1400, \"expected\": 1400, \"passed\": true}, {\"check\": \"fee oracle 2\", \"actual\": 1500, \"expected\": 3000, \"passed\": false}, {\"check\": \"fee oracle 3\", \"actual\": 2700, \"expected\": 2700, \"passed\": true}, {\"check\": \"fee oracle 4\", \"actual\": 2000, \"expected\": 4500, \"passed\": false}, {\"check\": \"fee oracle 5\", \"actual\": 900, \"expected\": 900, \"passed\": true}, {\"check\": \"fee oracle 6\", \"actual\": 2000, \"expected\": 2200, \"passed\": false}, {\"check\": \"fee oracle 7\", \"actual\": 2000, \"expected\": 2900, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.405,"exit_code":1,"observations":[{"actual":3000,"check":"fee oracle 0","expected":2500,"passed":false},{"actual":1400,"check":"fee oracle 1","expected":1400,"passed":true},{"actual":3300,"check":"fee oracle 2","expected":3000,"passed":false},{"actual":2700,"check":"fee oracle 3","expected":2700,"passed":true},{"actual":4500,"check":"fee oracle 4","expected":4500,"passed":true},{"actual":900,"check":"fee oracle 5","expected":900,"passed":true},{"actual":2200,"check":"fee oracle 6","expected":2200,"passed":true},{"actual":3450,"check":"fee oracle 7","expected":2900,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fee oracle 0\", \"actual\": 3000, \"expected\": 2500, \"passed\": false}, {\"check\": \"fee oracle 1\", \"actual\": 1400, \"expected\": 1400, \"passed\": true}, {\"check\": \"fee oracle 2\", \"actual\": 3300, \"expected\": 3000, \"passed\": false}, {\"check\": \"fee oracle 3\", \"actual\": 2700, \"expected\": 2700, \"passed\": true}, {\"check\": \"fee oracle 4\", \"actual\": 4500, \"expected\": 4500, \"passed\": true}, {\"check\": \"fee oracle 5\", \"actual\": 900, \"expected\": 900, \"passed\": true}, {\"check\": \"fee oracle 6\", \"actual\": 2200, \"expected\": 2200, \"passed\": true}, {\"check\": \"fee oracle 7\", \"actual\": 3450, \"expected\": 2900, \"passed\": false}], \"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."}}