{"abstract":"Uniform delay level of service returns a wrong result when oversaturation is only flagged above X = 1.1.","category":"Traffic signal timing plans","checks":8,"contract":"Input {cycle, green, volume, sat_per_lane, lanes}. lam = green/cycle, capacity = sat*lanes*lam, X = volume/capacity, uniform delay d = 0.5*C*(1-lam)^2/(1 - min(1,X)*lam) rounded half up to tenths. LOS thresholds on tenths: <=100 A, <=200 B, <=350 C, <=550 D, <=800 E, else F; any X > 1 is F. Return {vc_milli: floor(1000X), delay_tenths, los}.","evaluation_group":"w2-traffic_signal_timing_plans-uniform-delay-los","failed_approach":"A 1.1 threshold lets movements with 1 < X <= 1.1 receive a delay-based grade.","family":"w2-traffic_signal_timing_plans-uniform-delay-los-oversat-los","id":"FA-68151","implementations":{"attempt":{"sha256":"fd1e788b98db2f79055ebe3b47b9c62783d2a8aa81e1ae6c3333693a09384d4b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    C, g = x['cycle'], x['green']\n    lam = Fraction(g, C)\n    cap = x['sat_per_lane'] * x['lanes'] * lam\n    X = Fraction(x['volume']) / cap\n    d = Fraction(1, 2) * C * (1 - lam) ** 2 / (1 - min(1, X) * lam)\n    tenths = int(d * 10 + Fraction(1, 2))\n    if X > Fraction(11, 10):\n        los = 'F'\n    else:\n        los = 'F'\n        for lim, lab in ((100, 'A'), (200, 'B'), (350, 'C'), (550, 'D'), (800, 'E')):\n            if tenths <= lim:\n                los = lab\n                break\n    return {'vc_milli': int(X * 1000), 'delay_tenths': tenths, 'los': los}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[({'cycle': 100, 'green': 12, 'volume': 215, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 497, 'delay_tenths': 412, 'los': 'D'}), ({'cycle': 150, 'green': 120, 'volume': 2720, 'sat_per_lane': 1700, 'lanes': 2}, {'vc_milli': 1000, 'delay_tenths': 150, 'los': 'B'}), ({'cycle': 130, 'green': 65, 'volume': 1900, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1000, 'delay_tenths': 325, 'los': 'C'}), ({'cycle': 60, 'green': 36, 'volume': 2389, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1047, 'delay_tenths': 120, 'los': 'F'}), ({'cycle': 120, 'green': 40, 'volume': 1300, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1026, 'delay_tenths': 400, 'los': 'F'}), ({'cycle': 100, 'green': 50, 'volume': 900, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 1000, 'delay_tenths': 250, 'los': 'C'}), ({'cycle': 90, 'green': 30, 'volume': 700, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 583, 'delay_tenths': 248, 'los': 'C'}), ({'cycle': 140, 'green': 78, 'volume': 3819, 'sat_per_lane': 1900, 'lanes': 3}, {'vc_milli': 1202, 'delay_tenths': 310, 'los': 'F'})], [({'cycle': 120, 'green': 40, 'volume': 1300, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1026, 'delay_tenths': 400, 'los': 'F'}), ({'cycle': 100, 'green': 50, 'volume': 900, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 1000, 'delay_tenths': 250, 'los': 'C'}), ({'cycle': 110, 'green': 94, 'volume': 1438, 'sat_per_lane': 1900, 'lanes': 1}, {'vc_milli': 885, 'delay_tenths': 48, 'los': 'A'}), ({'cycle': 150, 'green': 93, 'volume': 3162, 'sat_per_lane': 1700, 'lanes': 3}, {'vc_milli': 1000, 'delay_tenths': 285, 'los': 'C'}), ({'cycle': 110, 'green': 55, 'volume': 2088, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1098, 'delay_tenths': 275, 'los': 'F'}), ({'cycle': 70, 'green': 44, 'volume': 6920, 'sat_per_lane': 1900, 'lanes': 3}, {'vc_milli': 1931, 'delay_tenths': 130, 'los': 'F'}), ({'cycle': 120, 'green': 76, 'volume': 3230, 'sat_per_lane': 1700, 'lanes': 3}, {'vc_milli': 1000, 'delay_tenths': 220, 'los': 'C'}), ({'cycle': 100, 'green': 50, 'volume': 675, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 750, 'delay_tenths': 200, 'los': 'B'})], [({'cycle': 60, 'green': 40, 'volume': 800, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 666, 'delay_tenths': 60, 'los': 'A'}), ({'cycle': 120, 'green': 96, 'volume': 1520, 'sat_per_lane': 1900, 'lanes': 1}, {'vc_milli': 1000, 'delay_tenths': 120, 'los': 'B'}), ({'cycle': 100, 'green': 50, 'volume': 675, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 750, 'delay_tenths': 200, 'los': 'B'}), ({'cycle': 90, 'green': 30, 'volume': 700, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 583, 'delay_tenths': 248, 'los': 'C'}), ({'cycle': 150, 'green': 24, 'volume': 868, 'sat_per_lane': 1800, 'lanes': 3}, {'vc_milli': 1004, 'delay_tenths': 630, 'los': 'F'}), ({'cycle': 120, 'green': 45, 'volume': 1425, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1000, 'delay_tenths': 375, 'los': 'D'}), ({'cycle': 100, 'green': 20, 'volume': 1080, 'sat_per_lane': 1800, 'lanes': 3}, {'vc_milli': 1000, 'delay_tenths': 400, 'los': 'D'}), ({'cycle': 140, 'green': 57, 'volume': 804, 'sat_per_lane': 1900, 'lanes': 1}, {'vc_milli': 1039, 'delay_tenths': 415, 'los': 'F'})], [({'cycle': 60, 'green': 40, 'volume': 800, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 666, 'delay_tenths': 60, 'los': 'A'}), ({'cycle': 140, 'green': 56, 'volume': 1477, 'sat_per_lane': 1700, 'lanes': 2}, {'vc_milli': 1086, 'delay_tenths': 420, 'los': 'F'}), ({'cycle': 120, 'green': 40, 'volume': 1300, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1026, 'delay_tenths': 400, 'los': 'F'}), ({'cycle': 100, 'green': 46, 'volume': 1656, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 1000, 'delay_tenths': 270, 'los': 'C'}), ({'cycle': 90, 'green': 59, 'volume': 2360, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 1000, 'delay_tenths': 155, 'los': 'B'}), ({'cycle': 130, 'green': 28, 'volume': 1476, 'sat_per_lane': 1700, 'lanes': 3}, {'vc_milli': 1343, 'delay_tenths': 510, 'los': 'F'}), ({'cycle': 100, 'green': 50, 'volume': 675, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 750, 'delay_tenths': 200, 'los': 'B'}), ({'cycle': 150, 'green': 119, 'volume': 2856, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 1000, 'delay_tenths': 155, 'los': 'B'})], [({'cycle': 60, 'green': 40, 'volume': 800, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 666, 'delay_tenths': 60, 'los': 'A'}), ({'cycle': 140, 'green': 115, 'volume': 3804, 'sat_per_lane': 1700, 'lanes': 2}, {'vc_milli': 1362, 'delay_tenths': 125, 'los': 'F'}), ({'cycle': 150, 'green': 77, 'volume': 949, 'sat_per_lane': 1700, 'lanes': 1}, {'vc_milli': 1087, 'delay_tenths': 365, 'los': 'F'}), ({'cycle': 70, 'green': 34, 'volume': 1656, 'sat_per_lane': 1700, 'lanes': 2}, {'vc_milli': 1002, 'delay_tenths': 180, 'los': 'F'}), ({'cycle': 90, 'green': 30, 'volume': 700, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 583, 'delay_tenths': 248, 'los': 'C'}), ({'cycle': 80, 'green': 20, 'volume': 1275, 'sat_per_lane': 1700, 'lanes': 3}, {'vc_milli': 1000, 'delay_tenths': 300, 'los': 'C'}), ({'cycle': 100, 'green': 75, 'volume': 1275, 'sat_per_lane': 1700, 'lanes': 1}, {'vc_milli': 1000, 'delay_tenths': 125, 'los': 'B'}), ({'cycle': 100, 'green': 50, 'volume': 900, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 1000, 'delay_tenths': 250, 'los': 'C'})]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check('timing 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":"4634784c3904a4e4139f77a8ea22632926133b7d8de6afb9c3ff109d6653b37b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    C, g = x['cycle'], x['green']\n    lam = Fraction(g, C)\n    cap = x['sat_per_lane'] * x['lanes'] * lam\n    X = Fraction(x['volume']) / cap\n    d = Fraction(1, 2) * C * (1 - lam) ** 2 / (1 - min(1, X) * lam)\n    tenths = int(d * 10 + Fraction(1, 2))\n    if X >= 1:\n        los = 'F'\n    else:\n        los = 'F'\n        for lim, lab in ((100, 'A'), (200, 'B'), (350, 'C'), (550, 'D'), (800, 'E')):\n            if tenths <= lim:\n                los = lab\n                break\n    return {'vc_milli': int(X * 1000), 'delay_tenths': tenths, 'los': los}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[({'cycle': 100, 'green': 12, 'volume': 215, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 497, 'delay_tenths': 412, 'los': 'D'}), ({'cycle': 150, 'green': 120, 'volume': 2720, 'sat_per_lane': 1700, 'lanes': 2}, {'vc_milli': 1000, 'delay_tenths': 150, 'los': 'B'}), ({'cycle': 130, 'green': 65, 'volume': 1900, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1000, 'delay_tenths': 325, 'los': 'C'}), ({'cycle': 60, 'green': 36, 'volume': 2389, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1047, 'delay_tenths': 120, 'los': 'F'}), ({'cycle': 120, 'green': 40, 'volume': 1300, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1026, 'delay_tenths': 400, 'los': 'F'}), ({'cycle': 100, 'green': 50, 'volume': 900, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 1000, 'delay_tenths': 250, 'los': 'C'}), ({'cycle': 90, 'green': 30, 'volume': 700, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 583, 'delay_tenths': 248, 'los': 'C'}), ({'cycle': 140, 'green': 78, 'volume': 3819, 'sat_per_lane': 1900, 'lanes': 3}, {'vc_milli': 1202, 'delay_tenths': 310, 'los': 'F'})], [({'cycle': 120, 'green': 40, 'volume': 1300, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1026, 'delay_tenths': 400, 'los': 'F'}), ({'cycle': 100, 'green': 50, 'volume': 900, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 1000, 'delay_tenths': 250, 'los': 'C'}), ({'cycle': 110, 'green': 94, 'volume': 1438, 'sat_per_lane': 1900, 'lanes': 1}, {'vc_milli': 885, 'delay_tenths': 48, 'los': 'A'}), ({'cycle': 150, 'green': 93, 'volume': 3162, 'sat_per_lane': 1700, 'lanes': 3}, {'vc_milli': 1000, 'delay_tenths': 285, 'los': 'C'}), ({'cycle': 110, 'green': 55, 'volume': 2088, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1098, 'delay_tenths': 275, 'los': 'F'}), ({'cycle': 70, 'green': 44, 'volume': 6920, 'sat_per_lane': 1900, 'lanes': 3}, {'vc_milli': 1931, 'delay_tenths': 130, 'los': 'F'}), ({'cycle': 120, 'green': 76, 'volume': 3230, 'sat_per_lane': 1700, 'lanes': 3}, {'vc_milli': 1000, 'delay_tenths': 220, 'los': 'C'}), ({'cycle': 100, 'green': 50, 'volume': 675, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 750, 'delay_tenths': 200, 'los': 'B'})], [({'cycle': 60, 'green': 40, 'volume': 800, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 666, 'delay_tenths': 60, 'los': 'A'}), ({'cycle': 120, 'green': 96, 'volume': 1520, 'sat_per_lane': 1900, 'lanes': 1}, {'vc_milli': 1000, 'delay_tenths': 120, 'los': 'B'}), ({'cycle': 100, 'green': 50, 'volume': 675, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 750, 'delay_tenths': 200, 'los': 'B'}), ({'cycle': 90, 'green': 30, 'volume': 700, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 583, 'delay_tenths': 248, 'los': 'C'}), ({'cycle': 150, 'green': 24, 'volume': 868, 'sat_per_lane': 1800, 'lanes': 3}, {'vc_milli': 1004, 'delay_tenths': 630, 'los': 'F'}), ({'cycle': 120, 'green': 45, 'volume': 1425, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1000, 'delay_tenths': 375, 'los': 'D'}), ({'cycle': 100, 'green': 20, 'volume': 1080, 'sat_per_lane': 1800, 'lanes': 3}, {'vc_milli': 1000, 'delay_tenths': 400, 'los': 'D'}), ({'cycle': 140, 'green': 57, 'volume': 804, 'sat_per_lane': 1900, 'lanes': 1}, {'vc_milli': 1039, 'delay_tenths': 415, 'los': 'F'})], [({'cycle': 60, 'green': 40, 'volume': 800, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 666, 'delay_tenths': 60, 'los': 'A'}), ({'cycle': 140, 'green': 56, 'volume': 1477, 'sat_per_lane': 1700, 'lanes': 2}, {'vc_milli': 1086, 'delay_tenths': 420, 'los': 'F'}), ({'cycle': 120, 'green': 40, 'volume': 1300, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1026, 'delay_tenths': 400, 'los': 'F'}), ({'cycle': 100, 'green': 46, 'volume': 1656, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 1000, 'delay_tenths': 270, 'los': 'C'}), ({'cycle': 90, 'green': 59, 'volume': 2360, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 1000, 'delay_tenths': 155, 'los': 'B'}), ({'cycle': 130, 'green': 28, 'volume': 1476, 'sat_per_lane': 1700, 'lanes': 3}, {'vc_milli': 1343, 'delay_tenths': 510, 'los': 'F'}), ({'cycle': 100, 'green': 50, 'volume': 675, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 750, 'delay_tenths': 200, 'los': 'B'}), ({'cycle': 150, 'green': 119, 'volume': 2856, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 1000, 'delay_tenths': 155, 'los': 'B'})], [({'cycle': 60, 'green': 40, 'volume': 800, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 666, 'delay_tenths': 60, 'los': 'A'}), ({'cycle': 140, 'green': 115, 'volume': 3804, 'sat_per_lane': 1700, 'lanes': 2}, {'vc_milli': 1362, 'delay_tenths': 125, 'los': 'F'}), ({'cycle': 150, 'green': 77, 'volume': 949, 'sat_per_lane': 1700, 'lanes': 1}, {'vc_milli': 1087, 'delay_tenths': 365, 'los': 'F'}), ({'cycle': 70, 'green': 34, 'volume': 1656, 'sat_per_lane': 1700, 'lanes': 2}, {'vc_milli': 1002, 'delay_tenths': 180, 'los': 'F'}), ({'cycle': 90, 'green': 30, 'volume': 700, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 583, 'delay_tenths': 248, 'los': 'C'}), ({'cycle': 80, 'green': 20, 'volume': 1275, 'sat_per_lane': 1700, 'lanes': 3}, {'vc_milli': 1000, 'delay_tenths': 300, 'los': 'C'}), ({'cycle': 100, 'green': 75, 'volume': 1275, 'sat_per_lane': 1700, 'lanes': 1}, {'vc_milli': 1000, 'delay_tenths': 125, 'los': 'B'}), ({'cycle': 100, 'green': 50, 'volume': 900, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 1000, 'delay_tenths': 250, 'los': 'C'})]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check('timing 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"},"fixed":{"sha256":"b200900eb6ef39c36209b90c2af3fe53251edc9968cd6694d0a8be293baa7993","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    C, g = x['cycle'], x['green']\n    lam = Fraction(g, C)\n    cap = x['sat_per_lane'] * x['lanes'] * lam\n    X = Fraction(x['volume']) / cap\n    d = Fraction(1, 2) * C * (1 - lam) ** 2 / (1 - min(1, X) * lam)\n    tenths = int(d * 10 + Fraction(1, 2))\n    if X > 1:\n        los = 'F'\n    else:\n        los = 'F'\n        for lim, lab in ((100, 'A'), (200, 'B'), (350, 'C'), (550, 'D'), (800, 'E')):\n            if tenths <= lim:\n                los = lab\n                break\n    return {'vc_milli': int(X * 1000), 'delay_tenths': tenths, 'los': los}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[({'cycle': 100, 'green': 12, 'volume': 215, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 497, 'delay_tenths': 412, 'los': 'D'}), ({'cycle': 150, 'green': 120, 'volume': 2720, 'sat_per_lane': 1700, 'lanes': 2}, {'vc_milli': 1000, 'delay_tenths': 150, 'los': 'B'}), ({'cycle': 130, 'green': 65, 'volume': 1900, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1000, 'delay_tenths': 325, 'los': 'C'}), ({'cycle': 60, 'green': 36, 'volume': 2389, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1047, 'delay_tenths': 120, 'los': 'F'}), ({'cycle': 120, 'green': 40, 'volume': 1300, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1026, 'delay_tenths': 400, 'los': 'F'}), ({'cycle': 100, 'green': 50, 'volume': 900, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 1000, 'delay_tenths': 250, 'los': 'C'}), ({'cycle': 90, 'green': 30, 'volume': 700, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 583, 'delay_tenths': 248, 'los': 'C'}), ({'cycle': 140, 'green': 78, 'volume': 3819, 'sat_per_lane': 1900, 'lanes': 3}, {'vc_milli': 1202, 'delay_tenths': 310, 'los': 'F'})], [({'cycle': 120, 'green': 40, 'volume': 1300, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1026, 'delay_tenths': 400, 'los': 'F'}), ({'cycle': 100, 'green': 50, 'volume': 900, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 1000, 'delay_tenths': 250, 'los': 'C'}), ({'cycle': 110, 'green': 94, 'volume': 1438, 'sat_per_lane': 1900, 'lanes': 1}, {'vc_milli': 885, 'delay_tenths': 48, 'los': 'A'}), ({'cycle': 150, 'green': 93, 'volume': 3162, 'sat_per_lane': 1700, 'lanes': 3}, {'vc_milli': 1000, 'delay_tenths': 285, 'los': 'C'}), ({'cycle': 110, 'green': 55, 'volume': 2088, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1098, 'delay_tenths': 275, 'los': 'F'}), ({'cycle': 70, 'green': 44, 'volume': 6920, 'sat_per_lane': 1900, 'lanes': 3}, {'vc_milli': 1931, 'delay_tenths': 130, 'los': 'F'}), ({'cycle': 120, 'green': 76, 'volume': 3230, 'sat_per_lane': 1700, 'lanes': 3}, {'vc_milli': 1000, 'delay_tenths': 220, 'los': 'C'}), ({'cycle': 100, 'green': 50, 'volume': 675, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 750, 'delay_tenths': 200, 'los': 'B'})], [({'cycle': 60, 'green': 40, 'volume': 800, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 666, 'delay_tenths': 60, 'los': 'A'}), ({'cycle': 120, 'green': 96, 'volume': 1520, 'sat_per_lane': 1900, 'lanes': 1}, {'vc_milli': 1000, 'delay_tenths': 120, 'los': 'B'}), ({'cycle': 100, 'green': 50, 'volume': 675, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 750, 'delay_tenths': 200, 'los': 'B'}), ({'cycle': 90, 'green': 30, 'volume': 700, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 583, 'delay_tenths': 248, 'los': 'C'}), ({'cycle': 150, 'green': 24, 'volume': 868, 'sat_per_lane': 1800, 'lanes': 3}, {'vc_milli': 1004, 'delay_tenths': 630, 'los': 'F'}), ({'cycle': 120, 'green': 45, 'volume': 1425, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1000, 'delay_tenths': 375, 'los': 'D'}), ({'cycle': 100, 'green': 20, 'volume': 1080, 'sat_per_lane': 1800, 'lanes': 3}, {'vc_milli': 1000, 'delay_tenths': 400, 'los': 'D'}), ({'cycle': 140, 'green': 57, 'volume': 804, 'sat_per_lane': 1900, 'lanes': 1}, {'vc_milli': 1039, 'delay_tenths': 415, 'los': 'F'})], [({'cycle': 60, 'green': 40, 'volume': 800, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 666, 'delay_tenths': 60, 'los': 'A'}), ({'cycle': 140, 'green': 56, 'volume': 1477, 'sat_per_lane': 1700, 'lanes': 2}, {'vc_milli': 1086, 'delay_tenths': 420, 'los': 'F'}), ({'cycle': 120, 'green': 40, 'volume': 1300, 'sat_per_lane': 1900, 'lanes': 2}, {'vc_milli': 1026, 'delay_tenths': 400, 'los': 'F'}), ({'cycle': 100, 'green': 46, 'volume': 1656, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 1000, 'delay_tenths': 270, 'los': 'C'}), ({'cycle': 90, 'green': 59, 'volume': 2360, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 1000, 'delay_tenths': 155, 'los': 'B'}), ({'cycle': 130, 'green': 28, 'volume': 1476, 'sat_per_lane': 1700, 'lanes': 3}, {'vc_milli': 1343, 'delay_tenths': 510, 'los': 'F'}), ({'cycle': 100, 'green': 50, 'volume': 675, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 750, 'delay_tenths': 200, 'los': 'B'}), ({'cycle': 150, 'green': 119, 'volume': 2856, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 1000, 'delay_tenths': 155, 'los': 'B'})], [({'cycle': 60, 'green': 40, 'volume': 800, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 666, 'delay_tenths': 60, 'los': 'A'}), ({'cycle': 140, 'green': 115, 'volume': 3804, 'sat_per_lane': 1700, 'lanes': 2}, {'vc_milli': 1362, 'delay_tenths': 125, 'los': 'F'}), ({'cycle': 150, 'green': 77, 'volume': 949, 'sat_per_lane': 1700, 'lanes': 1}, {'vc_milli': 1087, 'delay_tenths': 365, 'los': 'F'}), ({'cycle': 70, 'green': 34, 'volume': 1656, 'sat_per_lane': 1700, 'lanes': 2}, {'vc_milli': 1002, 'delay_tenths': 180, 'los': 'F'}), ({'cycle': 90, 'green': 30, 'volume': 700, 'sat_per_lane': 1800, 'lanes': 2}, {'vc_milli': 583, 'delay_tenths': 248, 'los': 'C'}), ({'cycle': 80, 'green': 20, 'volume': 1275, 'sat_per_lane': 1700, 'lanes': 3}, {'vc_milli': 1000, 'delay_tenths': 300, 'los': 'C'}), ({'cycle': 100, 'green': 75, 'volume': 1275, 'sat_per_lane': 1700, 'lanes': 1}, {'vc_milli': 1000, 'delay_tenths': 125, 'los': 'B'}), ({'cycle': 100, 'green': 50, 'volume': 900, 'sat_per_lane': 1800, 'lanes': 1}, {'vc_milli': 1000, 'delay_tenths': 250, 'los': 'C'})]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check('timing 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-traffic_signal_timing_plans-uniform-delay-los-oversat-los","generated_at":"2026-09-29T14:47:59.588063+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Signal timing arithmetic is exact and integer or rational; a wrong rule silently produces unsafe or inefficient timing plans.","repair":"Restore the oversaturation grade rule so that the step reads `if X > 1:`.","root_cause":"Exactly saturated movements (X = 1) are forced to LOS F instead of being graded by delay.","sha256":"2361d772e4b291af30b9b599b54c67e97d800b96de596cb93b0457e6805c831c","title":"Uniform delay level of service: oversaturation is only flagged above X = 1.1 · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":46.208,"exit_code":1,"observations":[{"actual":{"delay_tenths":412,"los":"D","vc_milli":497},"check":"timing oracle 0","expected":{"delay_tenths":412,"los":"D","vc_milli":497},"passed":true},{"actual":{"delay_tenths":150,"los":"B","vc_milli":1000},"check":"timing oracle 1","expected":{"delay_tenths":150,"los":"B","vc_milli":1000},"passed":true},{"actual":{"delay_tenths":325,"los":"C","vc_milli":1000},"check":"timing oracle 2","expected":{"delay_tenths":325,"los":"C","vc_milli":1000},"passed":true},{"actual":{"delay_tenths":120,"los":"B","vc_milli":1047},"check":"timing oracle 3","expected":{"delay_tenths":120,"los":"F","vc_milli":1047},"passed":false},{"actual":{"delay_tenths":400,"los":"D","vc_milli":1026},"check":"timing oracle 4","expected":{"delay_tenths":400,"los":"F","vc_milli":1026},"passed":false},{"actual":{"delay_tenths":250,"los":"C","vc_milli":1000},"check":"timing oracle 5","expected":{"delay_tenths":250,"los":"C","vc_milli":1000},"passed":true},{"actual":{"delay_tenths":248,"los":"C","vc_milli":583},"check":"timing oracle 6","expected":{"delay_tenths":248,"los":"C","vc_milli":583},"passed":true},{"actual":{"delay_tenths":310,"los":"F","vc_milli":1202},"check":"timing oracle 7","expected":{"delay_tenths":310,"los":"F","vc_milli":1202},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"timing oracle 0\", \"actual\": {\"vc_milli\": 497, \"delay_tenths\": 412, \"los\": \"D\"}, \"expected\": {\"vc_milli\": 497, \"delay_tenths\": 412, \"los\": \"D\"}, \"passed\": true}, {\"check\": \"timing oracle 1\", \"actual\": {\"vc_milli\": 1000, \"delay_tenths\": 150, \"los\": \"B\"}, \"expected\": {\"vc_milli\": 1000, \"delay_tenths\": 150, \"los\": \"B\"}, \"passed\": true}, {\"check\": \"timing oracle 2\", \"actual\": {\"vc_milli\": 1000, \"delay_tenths\": 325, \"los\": \"C\"}, \"expected\": {\"vc_milli\": 1000, \"delay_tenths\": 325, \"los\": \"C\"}, \"passed\": true}, {\"check\": \"timing oracle 3\", \"actual\": {\"vc_milli\": 1047, \"delay_tenths\": 120, \"los\": \"B\"}, \"expected\": {\"vc_milli\": 1047, \"delay_tenths\": 120, \"los\": \"F\"}, \"passed\": false}, {\"check\": \"timing oracle 4\", \"actual\": {\"vc_milli\": 1026, \"delay_tenths\": 400, \"los\": \"D\"}, \"expected\": {\"vc_milli\": 1026, \"delay_tenths\": 400, \"los\": \"F\"}, \"passed\": false}, {\"check\": \"timing oracle 5\", \"actual\": {\"vc_milli\": 1000, \"delay_tenths\": 250, \"los\": \"C\"}, \"expected\": {\"vc_milli\": 1000, \"delay_tenths\": 250, \"los\": \"C\"}, \"passed\": true}, {\"check\": \"timing oracle 6\", \"actual\": {\"vc_milli\": 583, \"delay_tenths\": 248, \"los\": \"C\"}, \"expected\": {\"vc_milli\": 583, \"delay_tenths\": 248, \"los\": \"C\"}, \"passed\": true}, {\"check\": \"timing oracle 7\", \"actual\": {\"vc_milli\": 1202, \"delay_tenths\": 310, \"los\": \"F\"}, \"expected\": {\"vc_milli\": 1202, \"delay_tenths\": 310, \"los\": \"F\"}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":45.19,"exit_code":1,"observations":[{"actual":{"delay_tenths":412,"los":"D","vc_milli":497},"check":"timing oracle 0","expected":{"delay_tenths":412,"los":"D","vc_milli":497},"passed":true},{"actual":{"delay_tenths":150,"los":"F","vc_milli":1000},"check":"timing oracle 1","expected":{"delay_tenths":150,"los":"B","vc_milli":1000},"passed":false},{"actual":{"delay_tenths":325,"los":"F","vc_milli":1000},"check":"timing oracle 2","expected":{"delay_tenths":325,"los":"C","vc_milli":1000},"passed":false},{"actual":{"delay_tenths":120,"los":"F","vc_milli":1047},"check":"timing oracle 3","expected":{"delay_tenths":120,"los":"F","vc_milli":1047},"passed":true},{"actual":{"delay_tenths":400,"los":"F","vc_milli":1026},"check":"timing oracle 4","expected":{"delay_tenths":400,"los":"F","vc_milli":1026},"passed":true},{"actual":{"delay_tenths":250,"los":"F","vc_milli":1000},"check":"timing oracle 5","expected":{"delay_tenths":250,"los":"C","vc_milli":1000},"passed":false},{"actual":{"delay_tenths":248,"los":"C","vc_milli":583},"check":"timing oracle 6","expected":{"delay_tenths":248,"los":"C","vc_milli":583},"passed":true},{"actual":{"delay_tenths":310,"los":"F","vc_milli":1202},"check":"timing oracle 7","expected":{"delay_tenths":310,"los":"F","vc_milli":1202},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"timing oracle 0\", \"actual\": {\"vc_milli\": 497, \"delay_tenths\": 412, \"los\": \"D\"}, \"expected\": {\"vc_milli\": 497, \"delay_tenths\": 412, \"los\": \"D\"}, \"passed\": true}, {\"check\": \"timing oracle 1\", \"actual\": {\"vc_milli\": 1000, \"delay_tenths\": 150, \"los\": \"F\"}, \"expected\": {\"vc_milli\": 1000, \"delay_tenths\": 150, \"los\": \"B\"}, \"passed\": false}, {\"check\": \"timing oracle 2\", \"actual\": {\"vc_milli\": 1000, \"delay_tenths\": 325, \"los\": \"F\"}, \"expected\": {\"vc_milli\": 1000, \"delay_tenths\": 325, \"los\": \"C\"}, \"passed\": false}, {\"check\": \"timing oracle 3\", \"actual\": {\"vc_milli\": 1047, \"delay_tenths\": 120, \"los\": \"F\"}, \"expected\": {\"vc_milli\": 1047, \"delay_tenths\": 120, \"los\": \"F\"}, \"passed\": true}, {\"check\": \"timing oracle 4\", \"actual\": {\"vc_milli\": 1026, \"delay_tenths\": 400, \"los\": \"F\"}, \"expected\": {\"vc_milli\": 1026, \"delay_tenths\": 400, \"los\": \"F\"}, \"passed\": true}, {\"check\": \"timing oracle 5\", \"actual\": {\"vc_milli\": 1000, \"delay_tenths\": 250, \"los\": \"F\"}, \"expected\": {\"vc_milli\": 1000, \"delay_tenths\": 250, \"los\": \"C\"}, \"passed\": false}, {\"check\": \"timing oracle 6\", \"actual\": {\"vc_milli\": 583, \"delay_tenths\": 248, \"los\": \"C\"}, \"expected\": {\"vc_milli\": 583, \"delay_tenths\": 248, \"los\": \"C\"}, \"passed\": true}, {\"check\": \"timing oracle 7\", \"actual\": {\"vc_milli\": 1202, \"delay_tenths\": 310, \"los\": \"F\"}, \"expected\": {\"vc_milli\": 1202, \"delay_tenths\": 310, \"los\": \"F\"}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.132,"exit_code":0,"observations":[{"actual":{"delay_tenths":412,"los":"D","vc_milli":497},"check":"timing oracle 0","expected":{"delay_tenths":412,"los":"D","vc_milli":497},"passed":true},{"actual":{"delay_tenths":150,"los":"B","vc_milli":1000},"check":"timing oracle 1","expected":{"delay_tenths":150,"los":"B","vc_milli":1000},"passed":true},{"actual":{"delay_tenths":325,"los":"C","vc_milli":1000},"check":"timing oracle 2","expected":{"delay_tenths":325,"los":"C","vc_milli":1000},"passed":true},{"actual":{"delay_tenths":120,"los":"F","vc_milli":1047},"check":"timing oracle 3","expected":{"delay_tenths":120,"los":"F","vc_milli":1047},"passed":true},{"actual":{"delay_tenths":400,"los":"F","vc_milli":1026},"check":"timing oracle 4","expected":{"delay_tenths":400,"los":"F","vc_milli":1026},"passed":true},{"actual":{"delay_tenths":250,"los":"C","vc_milli":1000},"check":"timing oracle 5","expected":{"delay_tenths":250,"los":"C","vc_milli":1000},"passed":true},{"actual":{"delay_tenths":248,"los":"C","vc_milli":583},"check":"timing oracle 6","expected":{"delay_tenths":248,"los":"C","vc_milli":583},"passed":true},{"actual":{"delay_tenths":310,"los":"F","vc_milli":1202},"check":"timing oracle 7","expected":{"delay_tenths":310,"los":"F","vc_milli":1202},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"timing oracle 0\", \"actual\": {\"vc_milli\": 497, \"delay_tenths\": 412, \"los\": \"D\"}, \"expected\": {\"vc_milli\": 497, \"delay_tenths\": 412, \"los\": \"D\"}, \"passed\": true}, {\"check\": \"timing oracle 1\", \"actual\": {\"vc_milli\": 1000, \"delay_tenths\": 150, \"los\": \"B\"}, \"expected\": {\"vc_milli\": 1000, \"delay_tenths\": 150, \"los\": \"B\"}, \"passed\": true}, {\"check\": \"timing oracle 2\", \"actual\": {\"vc_milli\": 1000, \"delay_tenths\": 325, \"los\": \"C\"}, \"expected\": {\"vc_milli\": 1000, \"delay_tenths\": 325, \"los\": \"C\"}, \"passed\": true}, {\"check\": \"timing oracle 3\", \"actual\": {\"vc_milli\": 1047, \"delay_tenths\": 120, \"los\": \"F\"}, \"expected\": {\"vc_milli\": 1047, \"delay_tenths\": 120, \"los\": \"F\"}, \"passed\": true}, {\"check\": \"timing oracle 4\", \"actual\": {\"vc_milli\": 1026, \"delay_tenths\": 400, \"los\": \"F\"}, \"expected\": {\"vc_milli\": 1026, \"delay_tenths\": 400, \"los\": \"F\"}, \"passed\": true}, {\"check\": \"timing oracle 5\", \"actual\": {\"vc_milli\": 1000, \"delay_tenths\": 250, \"los\": \"C\"}, \"expected\": {\"vc_milli\": 1000, \"delay_tenths\": 250, \"los\": \"C\"}, \"passed\": true}, {\"check\": \"timing oracle 6\", \"actual\": {\"vc_milli\": 583, \"delay_tenths\": 248, \"los\": \"C\"}, \"expected\": {\"vc_milli\": 583, \"delay_tenths\": 248, \"los\": \"C\"}, \"passed\": true}, {\"check\": \"timing oracle 7\", \"actual\": {\"vc_milli\": 1202, \"delay_tenths\": 310, \"los\": \"F\"}, \"expected\": {\"vc_milli\": 1202, \"delay_tenths\": 310, \"los\": \"F\"}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}