{"abstract":"Split failure detection returns a wrong result when the red occupancy window starts at yellow onset.","category":"Traffic signal timing plans","checks":8,"contract":"Input {cycles: [{green: [start, end), red_start, occ: [[on, off]]}]} with at least one cycle. Green occupancy ratio GOR = occupied seconds in green / green length; red occupancy ratio ROR5 = occupied seconds in the first 5 s after red start / 5. A cycle is a split failure when GOR >= 0.8 and ROR5 >= 0.8. Return {fails: indices, pct: floor(100*fails/cycles)}.","evaluation_group":"w2-traffic_signal_timing_plans-split-failure","failed_approach":"Looking at the 5 s before red start measures yellow occupancy, not red.","family":"w2-traffic_signal_timing_plans-split-failure-ror-window","id":"FA-68261","implementations":{"attempt":{"sha256":"84fe4845308bb04a519348d92d5c6dffc4af879cebdd57582baf5893eedcd175","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    fails = []\n    for i, cy in enumerate(x['cycles']):\n        gs, ge = cy['green']\n        rs = cy['red_start']\n        def busy(lo, hi):\n            return sum(max(0, min(off, hi) - max(on, lo)) for on, off in cy['occ'])\n        gl = ge - gs\n        gor = Fraction(busy(gs, ge), gl)\n        ror = Fraction(busy(rs - 5, rs), 5)\n        if gor >= Fraction(4, 5) and ror >= Fraction(4, 5):\n            fails.append(i)\n    return {'fails': fails, 'pct': len(fails) * 100 // len(x['cycles'])}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[({'cycles': [{'green': [1, 40], 'red_start': 44, 'occ': [[-9, -4], [-4, 1], [2, 5], [5, 9], [10, 15], [16, 19], [19, 24], [25, 30], [30, 35], [36, 40], [41, 47], [48, 54], [54, 60]]}, {'green': [73, 99], 'red_start': 102, 'occ': [[72, 74], [74, 80], [81, 87], [87, 88], [88, 94], [95, 96], [97, 99], [100, 105], [106, 107], [108, 113]]}, {'green': [132, 162], 'red_start': 166, 'occ': [[122, 123], [123, 126], [127, 129], [129, 134], [134, 135], [136, 139], [139, 141], [141, 144], [144, 145], [146, 151], [151, 157], [157, 160], [160, 166], [167, 170], [170, 174], [175, 179]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [6, 32], 'red_start': 35, 'occ': [[-2, 2], [3, 8], [9, 15], [15, 21], [22, 23], [23, 27], [28, 32], [33, 34], [34, 39], [39, 45], [46, 51]]}, {'green': [61, 85], 'red_start': 89, 'occ': [[54, 56], [60, 62], [66, 68], [75, 77], [83, 84], [90, 92], [98, 99]]}, {'green': [118, 150], 'red_start': 153, 'occ': [[111, 113], [114, 116], [120, 122], [130, 132], [134, 136], [137, 139], [144, 146], [148, 150], [154, 155], [156, 158]]}, {'green': [179, 189], 'red_start': 192, 'occ': [[170, 176], [176, 181], [181, 186], [186, 187], [188, 193], [194, 196], [196, 201], [201, 205]]}]}, {'fails': [0, 3], 'pct': 50}), ({'cycles': [{'green': [0, 20], 'red_start': 24, 'occ': [[0, 16], [23, 28]]}, {'green': [50, 70], 'red_start': 74, 'occ': [[50, 67], [74, 78]]}, {'green': [100, 120], 'red_start': 124, 'occ': [[100, 130]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [10, 44], 'red_start': 47, 'occ': [[6, 7], [7, 13], [14, 20], [20, 23], [24, 27], [27, 30], [30, 32], [33, 38], [39, 41], [42, 46], [47, 49], [49, 50], [50, 53], [54, 58], [58, 62]]}, {'green': [73, 96], 'red_start': 99, 'occ': [[65, 66], [67, 70], [71, 74], [74, 77], [77, 82], [83, 85], [85, 89], [90, 91], [91, 92], [93, 95], [96, 100], [100, 104], [104, 105], [105, 110], [110, 111]]}, {'green': [123, 143], 'red_start': 147, 'occ': [[113, 115], [122, 123], [126, 128], [129, 130], [135, 136], [141, 143], [144, 146], [151, 152], [155, 156]]}, {'green': [167, 182], 'red_start': 186, 'occ': [[159, 162], [162, 166], [166, 167], [167, 172], [172, 178], [178, 180], [180, 185], [185, 190], [191, 194], [194, 196], [197, 198]]}, {'green': [214, 251], 'red_start': 256, 'occ': [[206, 212], [213, 214], [215, 218], [219, 222], [222, 227], [228, 229], [230, 236], [237, 242], [243, 245], [246, 251], [252, 254], [255, 256], [257, 259], [259, 265], [266, 271]]}]}, {'fails': [0, 1, 3, 4], 'pct': 80}), ({'cycles': [{'green': [10, 36], 'red_start': 41, 'occ': [[10, 13], [14, 18], [19, 23], [23, 29], [30, 35], [35, 39], [40, 42], [43, 45], [46, 47], [47, 48], [48, 49], [50, 54]]}, {'green': [63, 75], 'red_start': 80, 'occ': [[53, 56], [57, 61], [62, 67], [67, 68], [69, 70], [70, 71], [72, 78], [78, 81], [82, 88], [88, 94]]}, {'green': [100, 135], 'red_start': 140, 'occ': [[97, 102], [103, 108], [108, 114], [115, 119], [119, 120], [121, 122], [123, 129], [130, 133], [133, 136], [137, 143], [144, 146], [146, 149], [150, 156]]}, {'green': [168, 200], 'red_start': 204, 'occ': [[165, 167], [168, 170], [170, 176], [177, 180], [181, 184], [185, 188], [188, 190], [191, 193], [193, 198], [198, 202], [202, 208], [208, 209], [210, 215]]}]}, {'fails': [1, 2, 3], 'pct': 75}), ({'cycles': [{'green': [10, 26], 'red_start': 30, 'occ': [[8, 12], [13, 15], [15, 16], [16, 22], [22, 28], [28, 34], [35, 36], [36, 38], [39, 42]]}, {'green': [51, 63], 'red_start': 68, 'occ': [[42, 46], [47, 50], [50, 52], [53, 56], [56, 61], [62, 65], [66, 71], [71, 77], [77, 80]]}, {'green': [95, 127], 'red_start': 132, 'occ': [[86, 88], [89, 95], [95, 101], [101, 106], [106, 109], [109, 113], [113, 119], [120, 125], [126, 129], [129, 133], [134, 137], [137, 143]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [7, 25], 'red_start': 28, 'occ': [[7, 8], [9, 11], [16, 17], [24, 25], [29, 30], [33, 34], [37, 39]]}]}, {'fails': [], 'pct': 0}), ({'cycles': [{'green': [1, 27], 'red_start': 32, 'occ': [[-7, -6], [0, 2], [8, 10], [15, 17], [22, 23], [27, 28], [31, 32], [33, 35], [40, 41]]}]}, {'fails': [], 'pct': 0})], [({'cycles': [{'green': [0, 26], 'red_start': 31, 'occ': [[-3, -1], [-1, 4], [5, 10], [10, 15], [15, 20], [20, 22], [23, 28], [28, 29], [29, 32], [33, 38], [38, 43]]}, {'green': [52, 84], 'red_start': 87, 'occ': [[48, 51], [51, 54], [54, 55], [55, 61], [61, 63], [64, 69], [70, 74], [74, 80], [81, 85], [86, 88], [89, 95], [95, 98]]}, {'green': [114, 134], 'red_start': 138, 'occ': [[105, 110], [110, 114], [114, 117], [117, 123], [124, 128], [128, 129], [129, 130], [130, 133], [133, 134], [134, 135], [135, 138], [138, 142], [143, 144], [145, 147], [147, 149]]}, {'green': [163, 194], 'red_start': 199, 'occ': [[161, 162], [168, 169], [176, 177], [180, 181], [184, 186], [191, 193], [194, 195], [201, 203]]}, {'green': [228, 256], 'red_start': 259, 'occ': [[224, 226], [226, 231], [231, 235], [235, 241], [242, 247], [248, 250], [251, 256], [257, 259], [259, 260], [260, 262], [262, 267], [267, 272]]}]}, {'fails': [0, 1, 2, 4], 'pct': 80}), ({'cycles': [{'green': [10, 23], 'red_start': 28, 'occ': [[8, 9], [12, 14], [18, 19], [23, 25], [27, 28], [34, 36], [39, 40]]}]}, {'fails': [], 'pct': 0}), ({'cycles': [{'green': [2, 39], 'red_start': 43, 'occ': [[-5, -4], [-3, -1], [3, 4], [8, 9], [14, 15], [22, 24], [32, 33], [39, 41], [44, 46], [48, 49]]}, {'green': [67, 106], 'red_start': 110, 'occ': [[60, 61], [63, 64], [69, 70], [74, 76], [78, 79], [80, 82], [87, 88], [93, 95], [102, 103], [110, 112], [117, 118]]}]}, {'fails': [], 'pct': 0}), ({'cycles': [{'green': [2, 40], 'red_start': 43, 'occ': [[-1, 1], [2, 6], [6, 12], [13, 16], [16, 22], [22, 27], [27, 28], [28, 34], [35, 38], [39, 44], [45, 51], [51, 53], [54, 58]]}, {'green': [66, 86], 'red_start': 89, 'occ': [[65, 66], [67, 70], [70, 73], [74, 79], [80, 82], [82, 86], [87, 88], [89, 92], [92, 94], [94, 95], [96, 102]]}, {'green': [117, 156], 'red_start': 161, 'occ': [[113, 115], [116, 121], [122, 126], [126, 127], [128, 133], [134, 135], [135, 136], [136, 142], [142, 148], [148, 150], [151, 157], [157, 163], [163, 168], [168, 172], [172, 176]]}, {'green': [190, 202], 'red_start': 205, 'occ': [[180, 182], [188, 190], [191, 192], [197, 198], [201, 202], [209, 210], [215, 216]]}, {'green': [229, 267], 'red_start': 271, 'occ': [[219, 220], [225, 226], [228, 229], [231, 232], [240, 242], [250, 252], [257, 259], [260, 262], [270, 272], [273, 274], [275, 277]]}]}, {'fails': [0, 1, 2], 'pct': 60}), ({'cycles': [{'green': [0, 20], 'red_start': 24, 'occ': [[0, 16], [23, 28]]}, {'green': [50, 70], 'red_start': 74, 'occ': [[50, 67], [74, 78]]}, {'green': [100, 120], 'red_start': 124, 'occ': [[100, 130]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [0, 36], 'red_start': 40, 'occ': [[-1, 0], [5, 6], [11, 12], [13, 14], [22, 24], [29, 31], [32, 33], [34, 36], [39, 40], [44, 45], [47, 49], [50, 51]]}, {'green': [69, 92], 'red_start': 96, 'occ': [[60, 61], [62, 63], [64, 65], [65, 66], [66, 69], [69, 72], [72, 74], [74, 76], [76, 82], [82, 88], [89, 91], [92, 93], [93, 94], [94, 99], [99, 105], [105, 111]]}, {'green': [125, 151], 'red_start': 156, 'occ': [[117, 121], [122, 127], [127, 129], [130, 136], [137, 138], [139, 143], [143, 147], [147, 152], [153, 159], [159, 161], [161, 167]]}, {'green': [185, 217], 'red_start': 222, 'occ': [[177, 179], [180, 183], [183, 186], [187, 188], [189, 193], [193, 194], [194, 198], [199, 204], [204, 209], [210, 212], [213, 215], [216, 219], [220, 224], [224, 230], [230, 233]]}, {'green': [250, 287], 'red_start': 292, 'occ': [[245, 246], [248, 250], [251, 252], [254, 255], [263, 264], [267, 268], [273, 274], [275, 276], [278, 280], [282, 283], [289, 291], [296, 297], [300, 301]]}]}, {'fails': [1, 2, 3], 'pct': 60}), ({'cycles': [{'green': [3, 18], 'red_start': 21, 'occ': [[1, 3], [4, 7], [8, 11], [12, 13], [14, 20], [21, 24], [25, 29], [29, 32]]}, {'green': [48, 77], 'red_start': 80, 'occ': [[45, 51], [52, 53], [53, 54], [55, 60], [60, 62], [62, 65], [65, 67], [67, 73], [74, 78], [78, 79], [80, 82], [83, 88], [89, 90], [91, 95]]}, {'green': [104, 124], 'red_start': 127, 'occ': [[100, 101], [106, 108], [111, 112], [117, 118], [120, 122], [126, 127], [134, 136]]}, {'green': [147, 159], 'red_start': 164, 'occ': [[143, 145], [152, 153], [157, 159], [161, 163], [165, 167], [174, 175]]}]}, {'fails': [1], 'pct': 25}), ({'cycles': [{'green': [8, 42], 'red_start': 47, 'occ': [[6, 8], [13, 15], [20, 21], [26, 28], [29, 30], [38, 39], [45, 46], [52, 54], [57, 58]]}, {'green': [75, 114], 'red_start': 119, 'occ': [[74, 75], [76, 77], [78, 79], [79, 85], [86, 88], [88, 91], [91, 94], [94, 98], [99, 103], [103, 106], [107, 112], [112, 113], [114, 116], [117, 123], [123, 124], [124, 130], [130, 134]]}, {'green': [143, 181], 'red_start': 186, 'occ': [[142, 144], [145, 147], [147, 153], [154, 159], [160, 166], [167, 173], [174, 180], [180, 186], [186, 190], [190, 194], [194, 198]]}, {'green': [211, 247], 'red_start': 250, 'occ': [[211, 214], [215, 217], [217, 221], [221, 227], [227, 231], [231, 235], [236, 242], [242, 247], [248, 251], [251, 254], [254, 258], [259, 265]]}]}, {'fails': [1, 2, 3], 'pct': 75})], [({'cycles': [{'green': [2, 21], 'red_start': 25, 'occ': [[1, 7], [8, 14], [15, 16], [17, 20], [21, 23], [24, 29], [29, 31], [31, 34], [35, 41]]}, {'green': [50, 67], 'red_start': 71, 'occ': [[49, 52], [52, 58], [58, 64], [64, 67], [68, 72], [73, 76], [76, 78], [79, 81], [81, 87]]}, {'green': [99, 137], 'red_start': 140, 'occ': [[92, 93], [99, 100], [105, 106], [111, 112], [116, 118], [122, 124], [129, 131], [138, 140], [148, 149]]}]}, {'fails': [1], 'pct': 33}), ({'cycles': [{'green': [1, 14], 'red_start': 17, 'occ': [[-7, -5], [3, 5], [13, 14], [17, 19], [20, 22], [25, 27]]}, {'green': [44, 74], 'red_start': 78, 'occ': [[38, 39], [47, 48], [49, 50], [52, 53], [57, 58], [59, 60], [65, 66], [72, 73], [78, 79], [83, 84], [87, 88]]}, {'green': [103, 115], 'red_start': 118, 'occ': [[94, 96], [100, 101], [104, 105], [110, 112], [120, 121], [123, 125], [127, 128]]}, {'green': [142, 162], 'red_start': 167, 'occ': [[135, 136], [136, 138], [138, 139], [140, 146], [147, 148], [148, 150], [150, 151], [151, 152], [152, 154], [155, 160], [160, 163], [164, 165], [166, 169], [169, 174], [174, 178]]}, {'green': [196, 210], 'red_start': 215, 'occ': [[190, 191], [192, 195], [196, 197], [198, 201], [201, 202], [203, 207], [208, 212], [213, 218], [218, 223], [224, 227]]}]}, {'fails': [3], 'pct': 20}), ({'cycles': [{'green': [7, 39], 'red_start': 43, 'occ': [[-1, 1], [1, 3], [3, 7], [7, 12], [13, 16], [16, 22], [22, 23], [23, 28], [28, 30], [31, 32], [32, 37], [38, 41], [41, 47], [48, 50], [50, 56]]}, {'green': [69, 80], 'red_start': 83, 'occ': [[64, 66], [67, 69], [69, 71], [72, 78], [78, 79], [79, 81], [82, 86], [86, 88], [88, 94], [94, 100]]}, {'green': [111, 139], 'red_start': 144, 'occ': [[109, 110], [110, 115], [115, 117], [118, 120], [121, 124], [124, 126], [126, 128], [128, 133], [134, 136], [137, 138], [138, 140], [141, 143], [144, 145], [146, 150], [150, 156]]}, {'green': [167, 177], 'red_start': 180, 'occ': [[166, 168], [172, 173], [181, 183], [190, 192]]}]}, {'fails': [0, 1, 2], 'pct': 75}), ({'cycles': [{'green': [6, 32], 'red_start': 37, 'occ': [[5, 6], [6, 12], [12, 17], [18, 22], [22, 26], [26, 31], [32, 35], [35, 39], [40, 44], [45, 49]]}, {'green': [58, 79], 'red_start': 83, 'occ': [[56, 59], [59, 60], [61, 65], [66, 68], [68, 70], [71, 76], [77, 80], [81, 85], [85, 86], [86, 92], [92, 96]]}, {'green': [108, 139], 'red_start': 143, 'occ': [[102, 104], [112, 114], [117, 118], [120, 121], [125, 127], [131, 132], [140, 142], [143, 145], [147, 148], [151, 152]]}, {'green': [171, 209], 'red_start': 213, 'occ': [[165, 168], [168, 174], [174, 178], [179, 184], [184, 186], [186, 190], [191, 193], [194, 195], [196, 199], [199, 202], [203, 207], [207, 212], [213, 218], [219, 220], [221, 225]]}]}, {'fails': [0, 1, 3], 'pct': 75}), ({'cycles': [{'green': [0, 20], 'red_start': 24, 'occ': [[0, 16], [23, 28]]}, {'green': [50, 70], 'red_start': 74, 'occ': [[50, 67], [74, 78]]}, {'green': [100, 120], 'red_start': 124, 'occ': [[100, 130]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [7, 28], 'red_start': 32, 'occ': [[3, 4], [6, 8], [13, 15], [22, 23], [24, 26], [32, 34], [39, 41]]}, {'green': [52, 92], 'red_start': 95, 'occ': [[42, 43], [50, 52], [58, 59], [63, 64], [68, 69], [75, 76], [78, 80], [86, 87], [94, 96], [100, 101], [104, 106]]}, {'green': [122, 134], 'red_start': 139, 'occ': [[114, 116], [124, 125], [127, 128], [133, 135], [139, 140], [146, 148]]}, {'green': [162, 179], 'red_start': 184, 'occ': [[159, 161], [161, 163], [163, 166], [167, 168], [168, 171], [172, 176], [177, 183], [184, 186], [187, 190], [190, 194], [194, 200]]}]}, {'fails': [3], 'pct': 25}), ({'cycles': [{'green': [4, 31], 'red_start': 35, 'occ': [[2, 4], [11, 12], [20, 21], [26, 28], [36, 38], [45, 46]]}, {'green': [57, 70], 'red_start': 73, 'occ': [[54, 56], [62, 64], [71, 72], [80, 82], [84, 85]]}, {'green': [98, 115], 'red_start': 119, 'occ': [[88, 89], [96, 97], [98, 99], [107, 108], [115, 117], [123, 125], [130, 132]]}, {'green': [147, 174], 'red_start': 178, 'occ': [[138, 142], [142, 143], [143, 145], [146, 147], [147, 152], [152, 158], [159, 162], [162, 166], [166, 168], [168, 171], [171, 173], [173, 179], [179, 180], [180, 181], [182, 184], [185, 186], [186, 188], [188, 189], [189, 194]]}]}, {'fails': [3], 'pct': 25}), ({'cycles': [{'green': [5, 35], 'red_start': 39, 'occ': [[-1, 4], [4, 6], [6, 10], [11, 12], [12, 17], [17, 19], [19, 20], [20, 24], [24, 30], [30, 36], [36, 41], [41, 45], [45, 47], [47, 49], [49, 55]]}, {'green': [62, 77], 'red_start': 81, 'occ': [[53, 56], [57, 61], [62, 65], [65, 70], [71, 75], [75, 81], [82, 88], [89, 92], [92, 93]]}, {'green': [108, 145], 'red_start': 150, 'occ': [[108, 114], [115, 116], [116, 121], [121, 123], [123, 129], [129, 134], [134, 135], [135, 139], [140, 141], [142, 144], [145, 149], [149, 151], [151, 157], [158, 159], [160, 163]]}, {'green': [171, 192], 'red_start': 195, 'occ': [[167, 168], [168, 172], [172, 176], [176, 177], [178, 179], [180, 185], [186, 187], [188, 194], [194, 200], [201, 202], [202, 207]]}, {'green': [217, 229], 'red_start': 234, 'occ': [[211, 212], [219, 220], [228, 229], [230, 231], [235, 237], [245, 246]]}]}, {'fails': [0, 1, 2, 3], 'pct': 80})], [({'cycles': [{'green': [6, 28], 'red_start': 33, 'occ': [[-4, -2], [5, 7], [15, 16], [22, 23], [27, 28], [35, 37], [43, 44]]}, {'green': [55, 93], 'red_start': 97, 'occ': [[50, 56], [56, 62], [62, 63], [63, 69], [69, 70], [71, 74], [74, 80], [80, 83], [83, 89], [90, 92], [92, 95], [95, 100], [101, 102], [102, 108]]}, {'green': [122, 156], 'red_start': 159, 'occ': [[121, 123], [131, 133], [135, 136], [138, 140], [145, 146], [149, 150], [156, 157], [164, 165], [168, 170]]}, {'green': [186, 196], 'red_start': 200, 'occ': [[180, 181], [181, 187], [188, 194], [195, 199], [199, 201], [202, 204], [204, 207], [207, 209], [210, 211], [211, 212]]}]}, {'fails': [1, 3], 'pct': 50}), ({'cycles': [{'green': [9, 41], 'red_start': 44, 'occ': [[3, 4], [5, 7], [15, 16], [24, 26], [29, 30], [34, 36], [37, 39], [46, 48]]}, {'green': [65, 87], 'red_start': 91, 'occ': [[58, 60], [60, 64], [65, 68], [68, 73], [74, 77], [78, 81], [82, 87], [87, 93], [93, 96], [97, 99], [100, 102]]}, {'green': [121, 149], 'red_start': 154, 'occ': [[121, 124], [124, 125], [125, 129], [130, 131], [131, 134], [134, 135], [135, 139], [140, 142], [142, 143], [143, 149], [150, 151], [152, 155], [156, 160], [160, 164], [164, 165], [165, 166]]}, {'green': [175, 192], 'red_start': 197, 'occ': [[173, 179], [179, 181], [181, 182], [182, 183], [184, 189], [189, 191], [191, 197], [197, 199], [200, 201], [202, 205], [205, 208]]}, {'green': [225, 255], 'red_start': 260, 'occ': [[220, 226], [226, 228], [229, 231], [232, 237], [238, 244], [244, 245], [245, 248], [248, 254], [254, 256], [256, 257], [258, 260], [261, 265], [266, 272]]}]}, {'fails': [1, 2, 4], 'pct': 60}), ({'cycles': [{'green': [0, 20], 'red_start': 24, 'occ': [[0, 16], [23, 28]]}, {'green': [50, 70], 'red_start': 74, 'occ': [[50, 67], [74, 78]]}, {'green': [100, 120], 'red_start': 124, 'occ': [[100, 130]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [4, 40], 'red_start': 45, 'occ': [[1, 3], [4, 6], [7, 8], [9, 14], [15, 20], [20, 25], [25, 26], [26, 28], [29, 33], [33, 34], [35, 36], [36, 38], [38, 43], [43, 47], [48, 49], [50, 54], [54, 59]]}, {'green': [72, 110], 'red_start': 115, 'occ': [[63, 65], [69, 71], [72, 73], [81, 83], [86, 88], [89, 91], [93, 94], [97, 99], [103, 105], [112, 113], [117, 118], [122, 123], [124, 126]]}, {'green': [137, 162], 'red_start': 166, 'occ': [[130, 131], [131, 136], [136, 138], [138, 140], [140, 145], [146, 147], [148, 152], [152, 155], [155, 161], [162, 164], [164, 167], [167, 171], [171, 175], [176, 179]]}, {'green': [195, 216], 'red_start': 219, 'occ': [[188, 189], [190, 192], [199, 200], [206, 208], [215, 217], [219, 220], [225, 226]]}, {'green': [240, 264], 'red_start': 267, 'occ': [[232, 237], [238, 240], [241, 245], [245, 250], [250, 254], [255, 257], [258, 261], [261, 265], [265, 268], [269, 270], [271, 276], [276, 278], [278, 283]]}]}, {'fails': [2], 'pct': 20}), ({'cycles': [{'green': [8, 46], 'red_start': 51, 'occ': [[4, 6], [6, 12], [12, 15], [16, 22], [23, 24], [25, 27], [27, 33], [33, 38], [38, 43], [43, 49], [49, 51], [52, 58], [58, 64]]}]}, {'fails': [0], 'pct': 100}), ({'cycles': [{'green': [4, 22], 'red_start': 27, 'occ': [[-4, -2], [6, 7], [12, 13], [19, 21], [24, 26], [27, 29], [37, 39]]}, {'green': [53, 87], 'red_start': 92, 'occ': [[53, 54], [60, 62], [67, 69], [76, 78], [82, 83], [88, 90], [94, 95], [96, 97]]}, {'green': [119, 154], 'red_start': 157, 'occ': [[115, 117], [118, 123], [123, 126], [126, 128], [129, 131], [132, 137], [138, 139], [139, 140], [141, 142], [143, 146], [146, 148], [148, 150], [150, 152], [152, 153], [154, 158], [159, 164], [164, 169]]}, {'green': [180, 216], 'red_start': 221, 'occ': [[180, 181], [182, 186], [186, 188], [189, 192], [193, 198], [199, 202], [203, 206], [207, 210], [211, 217], [218, 219], [219, 225], [225, 227], [227, 231], [231, 232]]}]}, {'fails': [2, 3], 'pct': 50}), ({'cycles': [{'green': [0, 33], 'red_start': 37, 'occ': [[-9, -4], [-3, 1], [2, 8], [9, 13], [14, 19], [20, 23], [23, 26], [27, 30], [31, 34], [35, 38], [38, 42], [42, 48]]}, {'green': [64, 93], 'red_start': 98, 'occ': [[58, 59], [60, 66], [66, 67], [68, 70], [71, 77], [78, 83], [83, 85], [85, 88], [88, 94], [95, 101], [101, 106], [106, 107], [108, 112]]}, {'green': [127, 165], 'red_start': 169, 'occ': [[117, 122], [123, 127], [128, 129], [130, 134], [134, 139], [140, 143], [143, 147], [148, 149], [149, 152], [152, 154], [154, 156], [156, 157], [158, 162], [162, 167], [168, 174], [174, 176], [177, 178], [179, 185]]}, {'green': [198, 234], 'red_start': 239, 'occ': [[189, 191], [198, 199], [203, 204], [208, 210], [218, 220], [227, 228], [233, 234], [241, 242], [247, 248]]}, {'green': [268, 306], 'red_start': 309, 'occ': [[268, 269], [277, 279], [280, 281], [282, 284], [287, 288], [293, 295], [300, 302], [304, 306], [310, 311], [312, 314]]}]}, {'fails': [0, 1, 2], 'pct': 60}), ({'cycles': [{'green': [3, 20], 'red_start': 24, 'occ': [[0, 2], [9, 11], [15, 17], [19, 20], [25, 27], [28, 30], [34, 36]]}, {'green': [51, 62], 'red_start': 65, 'occ': [[49, 54], [54, 56], [56, 60], [61, 65], [65, 70], [71, 77]]}, {'green': [93, 127], 'red_start': 131, 'occ': [[86, 88], [89, 92], [93, 94], [95, 98], [98, 99], [99, 100], [100, 106], [107, 111], [111, 113], [114, 117], [117, 121], [121, 122], [123, 128], [129, 130], [130, 132], [133, 136], [137, 140], [140, 142]]}]}, {'fails': [1, 2], 'pct': 66})], [({'cycles': [{'green': [0, 20], 'red_start': 25, 'occ': [[-5, -3], [-2, 0], [0, 5], [5, 8], [8, 13], [13, 15], [15, 19], [19, 25], [26, 28], [28, 31], [31, 36]]}, {'green': [50, 61], 'red_start': 65, 'occ': [[41, 42], [45, 47], [48, 50], [56, 57], [61, 63], [70, 71], [72, 74]]}, {'green': [86, 116], 'red_start': 119, 'occ': [[76, 82], [82, 83], [83, 89], [89, 93], [94, 95], [95, 100], [101, 107], [107, 113], [114, 120], [120, 125], [125, 126], [126, 130]]}, {'green': [147, 161], 'red_start': 165, 'occ': [[140, 141], [142, 146], [147, 149], [149, 152], [153, 154], [154, 157], [157, 160], [160, 164], [164, 167], [168, 169], [170, 171], [171, 175], [176, 178]]}, {'green': [190, 213], 'red_start': 216, 'occ': [[184, 186], [189, 190], [192, 194], [197, 199], [201, 203], [208, 209], [213, 214], [218, 220], [227, 228]]}]}, {'fails': [0, 2], 'pct': 40}), ({'cycles': [{'green': [10, 30], 'red_start': 33, 'occ': [[7, 8], [9, 14], [14, 18], [18, 20], [20, 21], [21, 25], [26, 27], [28, 32], [32, 33], [34, 38], [38, 40], [40, 46]]}, {'green': [57, 94], 'red_start': 97, 'occ': [[47, 51], [51, 55], [56, 60], [61, 64], [65, 71], [71, 72], [72, 74], [74, 76], [77, 82], [82, 88], [89, 92], [92, 96], [97, 101], [101, 104], [105, 107], [108, 112]]}, {'green': [119, 135], 'red_start': 140, 'occ': [[114, 116], [116, 117], [118, 119], [119, 122], [123, 129], [129, 132], [132, 134], [135, 137], [138, 141], [141, 145], [145, 148], [149, 150], [151, 154]]}, {'green': [170, 207], 'red_start': 211, 'occ': [[161, 165], [165, 171], [171, 173], [173, 174], [175, 178], [179, 183], [184, 186], [186, 188], [189, 192], [192, 194], [194, 198], [199, 203], [203, 204], [205, 209], [209, 213], [214, 217], [218, 223]]}, {'green': [240, 266], 'red_start': 270, 'occ': [[237, 238], [242, 243], [248, 250], [255, 256], [260, 261], [264, 266], [271, 272], [278, 279]]}]}, {'fails': [0, 1, 2, 3], 'pct': 80}), ({'cycles': [{'green': [2, 32], 'red_start': 37, 'occ': [[0, 2], [2, 6], [6, 10], [10, 12], [12, 14], [15, 21], [21, 26], [27, 33], [34, 38], [39, 44], [45, 46], [46, 52]]}, {'green': [66, 106], 'red_start': 111, 'occ': [[60, 62], [65, 66], [71, 72], [80, 82], [90, 92], [98, 100], [105, 107], [114, 115]]}, {'green': [141, 173], 'red_start': 177, 'occ': [[133, 135], [136, 142], [142, 145], [145, 146], [146, 152], [153, 154], [154, 159], [159, 163], [163, 168], [169, 170], [171, 175], [176, 180], [181, 185], [186, 188], [188, 193]]}, {'green': [199, 238], 'red_start': 242, 'occ': [[193, 194], [195, 196], [197, 199], [206, 207], [212, 214], [220, 221], [222, 223], [226, 227], [233, 234], [235, 236], [241, 243], [247, 249], [251, 253]]}, {'green': [269, 305], 'red_start': 309, 'occ': [[269, 272], [273, 276], [276, 282], [283, 287], [287, 290], [291, 296], [296, 298], [298, 301], [302, 306], [307, 308], [308, 310], [311, 315], [316, 319], [320, 321]]}]}, {'fails': [0, 2, 4], 'pct': 60}), ({'cycles': [{'green': [9, 30], 'red_start': 35, 'occ': [[4, 5], [5, 6], [7, 12], [13, 14], [14, 18], [18, 19], [19, 22], [22, 27], [27, 33], [33, 39], [39, 40], [41, 47]]}, {'green': [65, 100], 'red_start': 103, 'occ': [[62, 68], [69, 73], [73, 75], [75, 76], [77, 83], [84, 90], [90, 93], [93, 94], [95, 101], [101, 102], [102, 108], [108, 110], [111, 113], [113, 117]]}, {'green': [128, 145], 'red_start': 149, 'occ': [[127, 128], [135, 137], [143, 145], [147, 148], [156, 158]]}]}, {'fails': [0, 1], 'pct': 66}), ({'cycles': [{'green': [0, 15], 'red_start': 19, 'occ': [[-6, -4], [-3, 0], [1, 4], [5, 11], [12, 14], [15, 18], [19, 21], [22, 28], [28, 30], [30, 31]]}, {'green': [46, 71], 'red_start': 76, 'occ': [[36, 41], [41, 46], [46, 48], [49, 51], [52, 55], [55, 59], [59, 65], [65, 69], [70, 75], [76, 79], [79, 81], [81, 83], [83, 87]]}, {'green': [98, 122], 'red_start': 126, 'occ': [[89, 94], [94, 99], [100, 103], [104, 106], [107, 113], [113, 119], [119, 124], [124, 130], [130, 132], [132, 134], [135, 138]]}, {'green': [156, 177], 'red_start': 180, 'occ': [[148, 150], [155, 157], [161, 163], [164, 166], [170, 171], [175, 177], [181, 183], [188, 190]]}, {'green': [209, 248], 'red_start': 251, 'occ': [[199, 200], [201, 205], [206, 208], [209, 210], [211, 214], [214, 220], [221, 224], [224, 225], [225, 229], [229, 232], [233, 235], [235, 238], [238, 240], [240, 244], [245, 249], [250, 252], [253, 259], [260, 265]]}]}, {'fails': [1, 2, 4], 'pct': 60}), ({'cycles': [{'green': [2, 25], 'red_start': 28, 'occ': [[-3, -2], [1, 2], [5, 7], [12, 14], [18, 20], [25, 27], [34, 35]]}, {'green': [51, 87], 'red_start': 90, 'occ': [[43, 47], [48, 51], [51, 52], [52, 57], [58, 64], [65, 69], [70, 73], [73, 75], [76, 80], [80, 81], [81, 86], [87, 92], [92, 93], [94, 100], [101, 107]]}]}, {'fails': [1], 'pct': 50}), ({'cycles': [{'green': [0, 20], 'red_start': 24, 'occ': [[0, 16], [23, 28]]}, {'green': [50, 70], 'red_start': 74, 'occ': [[50, 67], [74, 78]]}, {'green': [100, 120], 'red_start': 124, 'occ': [[100, 130]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [5, 26], 'red_start': 31, 'occ': [[-5, 1], [2, 4], [4, 5], [5, 7], [8, 12], [13, 15], [15, 18], [18, 19], [19, 24], [24, 27], [27, 33], [34, 38], [38, 43]]}, {'green': [57, 94], 'red_start': 97, 'occ': [[48, 49], [51, 52], [55, 56], [61, 63], [66, 67], [74, 76], [83, 85], [90, 92], [96, 97], [101, 103], [104, 106]]}, {'green': [122, 149], 'red_start': 154, 'occ': [[113, 114], [118, 119], [121, 122], [124, 126], [131, 133], [140, 141], [143, 145], [149, 150], [152, 153], [156, 158], [164, 166]]}, {'green': [178, 211], 'red_start': 214, 'occ': [[175, 176], [176, 178], [179, 181], [181, 184], [184, 185], [185, 189], [190, 193], [193, 197], [198, 201], [202, 204], [204, 207], [207, 213], [214, 217], [218, 222], [223, 226]]}, {'green': [242, 271], 'red_start': 274, 'occ': [[238, 240], [245, 247], [251, 252], [258, 259], [264, 265], [269, 270], [275, 276], [284, 286]]}]}, {'fails': [0, 3], 'pct': 40})]]\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":"43ca29db55c78489663c28bd757a6c987007b4140feb69707c61473811af2bbd","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    fails = []\n    for i, cy in enumerate(x['cycles']):\n        gs, ge = cy['green']\n        rs = cy['red_start']\n        def busy(lo, hi):\n            return sum(max(0, min(off, hi) - max(on, lo)) for on, off in cy['occ'])\n        gl = ge - gs\n        gor = Fraction(busy(gs, ge), gl)\n        ror = Fraction(busy(ge, ge + 5), 5)\n        if gor >= Fraction(4, 5) and ror >= Fraction(4, 5):\n            fails.append(i)\n    return {'fails': fails, 'pct': len(fails) * 100 // len(x['cycles'])}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[({'cycles': [{'green': [1, 40], 'red_start': 44, 'occ': [[-9, -4], [-4, 1], [2, 5], [5, 9], [10, 15], [16, 19], [19, 24], [25, 30], [30, 35], [36, 40], [41, 47], [48, 54], [54, 60]]}, {'green': [73, 99], 'red_start': 102, 'occ': [[72, 74], [74, 80], [81, 87], [87, 88], [88, 94], [95, 96], [97, 99], [100, 105], [106, 107], [108, 113]]}, {'green': [132, 162], 'red_start': 166, 'occ': [[122, 123], [123, 126], [127, 129], [129, 134], [134, 135], [136, 139], [139, 141], [141, 144], [144, 145], [146, 151], [151, 157], [157, 160], [160, 166], [167, 170], [170, 174], [175, 179]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [6, 32], 'red_start': 35, 'occ': [[-2, 2], [3, 8], [9, 15], [15, 21], [22, 23], [23, 27], [28, 32], [33, 34], [34, 39], [39, 45], [46, 51]]}, {'green': [61, 85], 'red_start': 89, 'occ': [[54, 56], [60, 62], [66, 68], [75, 77], [83, 84], [90, 92], [98, 99]]}, {'green': [118, 150], 'red_start': 153, 'occ': [[111, 113], [114, 116], [120, 122], [130, 132], [134, 136], [137, 139], [144, 146], [148, 150], [154, 155], [156, 158]]}, {'green': [179, 189], 'red_start': 192, 'occ': [[170, 176], [176, 181], [181, 186], [186, 187], [188, 193], [194, 196], [196, 201], [201, 205]]}]}, {'fails': [0, 3], 'pct': 50}), ({'cycles': [{'green': [0, 20], 'red_start': 24, 'occ': [[0, 16], [23, 28]]}, {'green': [50, 70], 'red_start': 74, 'occ': [[50, 67], [74, 78]]}, {'green': [100, 120], 'red_start': 124, 'occ': [[100, 130]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [10, 44], 'red_start': 47, 'occ': [[6, 7], [7, 13], [14, 20], [20, 23], [24, 27], [27, 30], [30, 32], [33, 38], [39, 41], [42, 46], [47, 49], [49, 50], [50, 53], [54, 58], [58, 62]]}, {'green': [73, 96], 'red_start': 99, 'occ': [[65, 66], [67, 70], [71, 74], [74, 77], [77, 82], [83, 85], [85, 89], [90, 91], [91, 92], [93, 95], [96, 100], [100, 104], [104, 105], [105, 110], [110, 111]]}, {'green': [123, 143], 'red_start': 147, 'occ': [[113, 115], [122, 123], [126, 128], [129, 130], [135, 136], [141, 143], [144, 146], [151, 152], [155, 156]]}, {'green': [167, 182], 'red_start': 186, 'occ': [[159, 162], [162, 166], [166, 167], [167, 172], [172, 178], [178, 180], [180, 185], [185, 190], [191, 194], [194, 196], [197, 198]]}, {'green': [214, 251], 'red_start': 256, 'occ': [[206, 212], [213, 214], [215, 218], [219, 222], [222, 227], [228, 229], [230, 236], [237, 242], [243, 245], [246, 251], [252, 254], [255, 256], [257, 259], [259, 265], [266, 271]]}]}, {'fails': [0, 1, 3, 4], 'pct': 80}), ({'cycles': [{'green': [10, 36], 'red_start': 41, 'occ': [[10, 13], [14, 18], [19, 23], [23, 29], [30, 35], [35, 39], [40, 42], [43, 45], [46, 47], [47, 48], [48, 49], [50, 54]]}, {'green': [63, 75], 'red_start': 80, 'occ': [[53, 56], [57, 61], [62, 67], [67, 68], [69, 70], [70, 71], [72, 78], [78, 81], [82, 88], [88, 94]]}, {'green': [100, 135], 'red_start': 140, 'occ': [[97, 102], [103, 108], [108, 114], [115, 119], [119, 120], [121, 122], [123, 129], [130, 133], [133, 136], [137, 143], [144, 146], [146, 149], [150, 156]]}, {'green': [168, 200], 'red_start': 204, 'occ': [[165, 167], [168, 170], [170, 176], [177, 180], [181, 184], [185, 188], [188, 190], [191, 193], [193, 198], [198, 202], [202, 208], [208, 209], [210, 215]]}]}, {'fails': [1, 2, 3], 'pct': 75}), ({'cycles': [{'green': [10, 26], 'red_start': 30, 'occ': [[8, 12], [13, 15], [15, 16], [16, 22], [22, 28], [28, 34], [35, 36], [36, 38], [39, 42]]}, {'green': [51, 63], 'red_start': 68, 'occ': [[42, 46], [47, 50], [50, 52], [53, 56], [56, 61], [62, 65], [66, 71], [71, 77], [77, 80]]}, {'green': [95, 127], 'red_start': 132, 'occ': [[86, 88], [89, 95], [95, 101], [101, 106], [106, 109], [109, 113], [113, 119], [120, 125], [126, 129], [129, 133], [134, 137], [137, 143]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [7, 25], 'red_start': 28, 'occ': [[7, 8], [9, 11], [16, 17], [24, 25], [29, 30], [33, 34], [37, 39]]}]}, {'fails': [], 'pct': 0}), ({'cycles': [{'green': [1, 27], 'red_start': 32, 'occ': [[-7, -6], [0, 2], [8, 10], [15, 17], [22, 23], [27, 28], [31, 32], [33, 35], [40, 41]]}]}, {'fails': [], 'pct': 0})], [({'cycles': [{'green': [0, 26], 'red_start': 31, 'occ': [[-3, -1], [-1, 4], [5, 10], [10, 15], [15, 20], [20, 22], [23, 28], [28, 29], [29, 32], [33, 38], [38, 43]]}, {'green': [52, 84], 'red_start': 87, 'occ': [[48, 51], [51, 54], [54, 55], [55, 61], [61, 63], [64, 69], [70, 74], [74, 80], [81, 85], [86, 88], [89, 95], [95, 98]]}, {'green': [114, 134], 'red_start': 138, 'occ': [[105, 110], [110, 114], [114, 117], [117, 123], [124, 128], [128, 129], [129, 130], [130, 133], [133, 134], [134, 135], [135, 138], [138, 142], [143, 144], [145, 147], [147, 149]]}, {'green': [163, 194], 'red_start': 199, 'occ': [[161, 162], [168, 169], [176, 177], [180, 181], [184, 186], [191, 193], [194, 195], [201, 203]]}, {'green': [228, 256], 'red_start': 259, 'occ': [[224, 226], [226, 231], [231, 235], [235, 241], [242, 247], [248, 250], [251, 256], [257, 259], [259, 260], [260, 262], [262, 267], [267, 272]]}]}, {'fails': [0, 1, 2, 4], 'pct': 80}), ({'cycles': [{'green': [10, 23], 'red_start': 28, 'occ': [[8, 9], [12, 14], [18, 19], [23, 25], [27, 28], [34, 36], [39, 40]]}]}, {'fails': [], 'pct': 0}), ({'cycles': [{'green': [2, 39], 'red_start': 43, 'occ': [[-5, -4], [-3, -1], [3, 4], [8, 9], [14, 15], [22, 24], [32, 33], [39, 41], [44, 46], [48, 49]]}, {'green': [67, 106], 'red_start': 110, 'occ': [[60, 61], [63, 64], [69, 70], [74, 76], [78, 79], [80, 82], [87, 88], [93, 95], [102, 103], [110, 112], [117, 118]]}]}, {'fails': [], 'pct': 0}), ({'cycles': [{'green': [2, 40], 'red_start': 43, 'occ': [[-1, 1], [2, 6], [6, 12], [13, 16], [16, 22], [22, 27], [27, 28], [28, 34], [35, 38], [39, 44], [45, 51], [51, 53], [54, 58]]}, {'green': [66, 86], 'red_start': 89, 'occ': [[65, 66], [67, 70], [70, 73], [74, 79], [80, 82], [82, 86], [87, 88], [89, 92], [92, 94], [94, 95], [96, 102]]}, {'green': [117, 156], 'red_start': 161, 'occ': [[113, 115], [116, 121], [122, 126], [126, 127], [128, 133], [134, 135], [135, 136], [136, 142], [142, 148], [148, 150], [151, 157], [157, 163], [163, 168], [168, 172], [172, 176]]}, {'green': [190, 202], 'red_start': 205, 'occ': [[180, 182], [188, 190], [191, 192], [197, 198], [201, 202], [209, 210], [215, 216]]}, {'green': [229, 267], 'red_start': 271, 'occ': [[219, 220], [225, 226], [228, 229], [231, 232], [240, 242], [250, 252], [257, 259], [260, 262], [270, 272], [273, 274], [275, 277]]}]}, {'fails': [0, 1, 2], 'pct': 60}), ({'cycles': [{'green': [0, 20], 'red_start': 24, 'occ': [[0, 16], [23, 28]]}, {'green': [50, 70], 'red_start': 74, 'occ': [[50, 67], [74, 78]]}, {'green': [100, 120], 'red_start': 124, 'occ': [[100, 130]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [0, 36], 'red_start': 40, 'occ': [[-1, 0], [5, 6], [11, 12], [13, 14], [22, 24], [29, 31], [32, 33], [34, 36], [39, 40], [44, 45], [47, 49], [50, 51]]}, {'green': [69, 92], 'red_start': 96, 'occ': [[60, 61], [62, 63], [64, 65], [65, 66], [66, 69], [69, 72], [72, 74], [74, 76], [76, 82], [82, 88], [89, 91], [92, 93], [93, 94], [94, 99], [99, 105], [105, 111]]}, {'green': [125, 151], 'red_start': 156, 'occ': [[117, 121], [122, 127], [127, 129], [130, 136], [137, 138], [139, 143], [143, 147], [147, 152], [153, 159], [159, 161], [161, 167]]}, {'green': [185, 217], 'red_start': 222, 'occ': [[177, 179], [180, 183], [183, 186], [187, 188], [189, 193], [193, 194], [194, 198], [199, 204], [204, 209], [210, 212], [213, 215], [216, 219], [220, 224], [224, 230], [230, 233]]}, {'green': [250, 287], 'red_start': 292, 'occ': [[245, 246], [248, 250], [251, 252], [254, 255], [263, 264], [267, 268], [273, 274], [275, 276], [278, 280], [282, 283], [289, 291], [296, 297], [300, 301]]}]}, {'fails': [1, 2, 3], 'pct': 60}), ({'cycles': [{'green': [3, 18], 'red_start': 21, 'occ': [[1, 3], [4, 7], [8, 11], [12, 13], [14, 20], [21, 24], [25, 29], [29, 32]]}, {'green': [48, 77], 'red_start': 80, 'occ': [[45, 51], [52, 53], [53, 54], [55, 60], [60, 62], [62, 65], [65, 67], [67, 73], [74, 78], [78, 79], [80, 82], [83, 88], [89, 90], [91, 95]]}, {'green': [104, 124], 'red_start': 127, 'occ': [[100, 101], [106, 108], [111, 112], [117, 118], [120, 122], [126, 127], [134, 136]]}, {'green': [147, 159], 'red_start': 164, 'occ': [[143, 145], [152, 153], [157, 159], [161, 163], [165, 167], [174, 175]]}]}, {'fails': [1], 'pct': 25}), ({'cycles': [{'green': [8, 42], 'red_start': 47, 'occ': [[6, 8], [13, 15], [20, 21], [26, 28], [29, 30], [38, 39], [45, 46], [52, 54], [57, 58]]}, {'green': [75, 114], 'red_start': 119, 'occ': [[74, 75], [76, 77], [78, 79], [79, 85], [86, 88], [88, 91], [91, 94], [94, 98], [99, 103], [103, 106], [107, 112], [112, 113], [114, 116], [117, 123], [123, 124], [124, 130], [130, 134]]}, {'green': [143, 181], 'red_start': 186, 'occ': [[142, 144], [145, 147], [147, 153], [154, 159], [160, 166], [167, 173], [174, 180], [180, 186], [186, 190], [190, 194], [194, 198]]}, {'green': [211, 247], 'red_start': 250, 'occ': [[211, 214], [215, 217], [217, 221], [221, 227], [227, 231], [231, 235], [236, 242], [242, 247], [248, 251], [251, 254], [254, 258], [259, 265]]}]}, {'fails': [1, 2, 3], 'pct': 75})], [({'cycles': [{'green': [2, 21], 'red_start': 25, 'occ': [[1, 7], [8, 14], [15, 16], [17, 20], [21, 23], [24, 29], [29, 31], [31, 34], [35, 41]]}, {'green': [50, 67], 'red_start': 71, 'occ': [[49, 52], [52, 58], [58, 64], [64, 67], [68, 72], [73, 76], [76, 78], [79, 81], [81, 87]]}, {'green': [99, 137], 'red_start': 140, 'occ': [[92, 93], [99, 100], [105, 106], [111, 112], [116, 118], [122, 124], [129, 131], [138, 140], [148, 149]]}]}, {'fails': [1], 'pct': 33}), ({'cycles': [{'green': [1, 14], 'red_start': 17, 'occ': [[-7, -5], [3, 5], [13, 14], [17, 19], [20, 22], [25, 27]]}, {'green': [44, 74], 'red_start': 78, 'occ': [[38, 39], [47, 48], [49, 50], [52, 53], [57, 58], [59, 60], [65, 66], [72, 73], [78, 79], [83, 84], [87, 88]]}, {'green': [103, 115], 'red_start': 118, 'occ': [[94, 96], [100, 101], [104, 105], [110, 112], [120, 121], [123, 125], [127, 128]]}, {'green': [142, 162], 'red_start': 167, 'occ': [[135, 136], [136, 138], [138, 139], [140, 146], [147, 148], [148, 150], [150, 151], [151, 152], [152, 154], [155, 160], [160, 163], [164, 165], [166, 169], [169, 174], [174, 178]]}, {'green': [196, 210], 'red_start': 215, 'occ': [[190, 191], [192, 195], [196, 197], [198, 201], [201, 202], [203, 207], [208, 212], [213, 218], [218, 223], [224, 227]]}]}, {'fails': [3], 'pct': 20}), ({'cycles': [{'green': [7, 39], 'red_start': 43, 'occ': [[-1, 1], [1, 3], [3, 7], [7, 12], [13, 16], [16, 22], [22, 23], [23, 28], [28, 30], [31, 32], [32, 37], [38, 41], [41, 47], [48, 50], [50, 56]]}, {'green': [69, 80], 'red_start': 83, 'occ': [[64, 66], [67, 69], [69, 71], [72, 78], [78, 79], [79, 81], [82, 86], [86, 88], [88, 94], [94, 100]]}, {'green': [111, 139], 'red_start': 144, 'occ': [[109, 110], [110, 115], [115, 117], [118, 120], [121, 124], [124, 126], [126, 128], [128, 133], [134, 136], [137, 138], [138, 140], [141, 143], [144, 145], [146, 150], [150, 156]]}, {'green': [167, 177], 'red_start': 180, 'occ': [[166, 168], [172, 173], [181, 183], [190, 192]]}]}, {'fails': [0, 1, 2], 'pct': 75}), ({'cycles': [{'green': [6, 32], 'red_start': 37, 'occ': [[5, 6], [6, 12], [12, 17], [18, 22], [22, 26], [26, 31], [32, 35], [35, 39], [40, 44], [45, 49]]}, {'green': [58, 79], 'red_start': 83, 'occ': [[56, 59], [59, 60], [61, 65], [66, 68], [68, 70], [71, 76], [77, 80], [81, 85], [85, 86], [86, 92], [92, 96]]}, {'green': [108, 139], 'red_start': 143, 'occ': [[102, 104], [112, 114], [117, 118], [120, 121], [125, 127], [131, 132], [140, 142], [143, 145], [147, 148], [151, 152]]}, {'green': [171, 209], 'red_start': 213, 'occ': [[165, 168], [168, 174], [174, 178], [179, 184], [184, 186], [186, 190], [191, 193], [194, 195], [196, 199], [199, 202], [203, 207], [207, 212], [213, 218], [219, 220], [221, 225]]}]}, {'fails': [0, 1, 3], 'pct': 75}), ({'cycles': [{'green': [0, 20], 'red_start': 24, 'occ': [[0, 16], [23, 28]]}, {'green': [50, 70], 'red_start': 74, 'occ': [[50, 67], [74, 78]]}, {'green': [100, 120], 'red_start': 124, 'occ': [[100, 130]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [7, 28], 'red_start': 32, 'occ': [[3, 4], [6, 8], [13, 15], [22, 23], [24, 26], [32, 34], [39, 41]]}, {'green': [52, 92], 'red_start': 95, 'occ': [[42, 43], [50, 52], [58, 59], [63, 64], [68, 69], [75, 76], [78, 80], [86, 87], [94, 96], [100, 101], [104, 106]]}, {'green': [122, 134], 'red_start': 139, 'occ': [[114, 116], [124, 125], [127, 128], [133, 135], [139, 140], [146, 148]]}, {'green': [162, 179], 'red_start': 184, 'occ': [[159, 161], [161, 163], [163, 166], [167, 168], [168, 171], [172, 176], [177, 183], [184, 186], [187, 190], [190, 194], [194, 200]]}]}, {'fails': [3], 'pct': 25}), ({'cycles': [{'green': [4, 31], 'red_start': 35, 'occ': [[2, 4], [11, 12], [20, 21], [26, 28], [36, 38], [45, 46]]}, {'green': [57, 70], 'red_start': 73, 'occ': [[54, 56], [62, 64], [71, 72], [80, 82], [84, 85]]}, {'green': [98, 115], 'red_start': 119, 'occ': [[88, 89], [96, 97], [98, 99], [107, 108], [115, 117], [123, 125], [130, 132]]}, {'green': [147, 174], 'red_start': 178, 'occ': [[138, 142], [142, 143], [143, 145], [146, 147], [147, 152], [152, 158], [159, 162], [162, 166], [166, 168], [168, 171], [171, 173], [173, 179], [179, 180], [180, 181], [182, 184], [185, 186], [186, 188], [188, 189], [189, 194]]}]}, {'fails': [3], 'pct': 25}), ({'cycles': [{'green': [5, 35], 'red_start': 39, 'occ': [[-1, 4], [4, 6], [6, 10], [11, 12], [12, 17], [17, 19], [19, 20], [20, 24], [24, 30], [30, 36], [36, 41], [41, 45], [45, 47], [47, 49], [49, 55]]}, {'green': [62, 77], 'red_start': 81, 'occ': [[53, 56], [57, 61], [62, 65], [65, 70], [71, 75], [75, 81], [82, 88], [89, 92], [92, 93]]}, {'green': [108, 145], 'red_start': 150, 'occ': [[108, 114], [115, 116], [116, 121], [121, 123], [123, 129], [129, 134], [134, 135], [135, 139], [140, 141], [142, 144], [145, 149], [149, 151], [151, 157], [158, 159], [160, 163]]}, {'green': [171, 192], 'red_start': 195, 'occ': [[167, 168], [168, 172], [172, 176], [176, 177], [178, 179], [180, 185], [186, 187], [188, 194], [194, 200], [201, 202], [202, 207]]}, {'green': [217, 229], 'red_start': 234, 'occ': [[211, 212], [219, 220], [228, 229], [230, 231], [235, 237], [245, 246]]}]}, {'fails': [0, 1, 2, 3], 'pct': 80})], [({'cycles': [{'green': [6, 28], 'red_start': 33, 'occ': [[-4, -2], [5, 7], [15, 16], [22, 23], [27, 28], [35, 37], [43, 44]]}, {'green': [55, 93], 'red_start': 97, 'occ': [[50, 56], [56, 62], [62, 63], [63, 69], [69, 70], [71, 74], [74, 80], [80, 83], [83, 89], [90, 92], [92, 95], [95, 100], [101, 102], [102, 108]]}, {'green': [122, 156], 'red_start': 159, 'occ': [[121, 123], [131, 133], [135, 136], [138, 140], [145, 146], [149, 150], [156, 157], [164, 165], [168, 170]]}, {'green': [186, 196], 'red_start': 200, 'occ': [[180, 181], [181, 187], [188, 194], [195, 199], [199, 201], [202, 204], [204, 207], [207, 209], [210, 211], [211, 212]]}]}, {'fails': [1, 3], 'pct': 50}), ({'cycles': [{'green': [9, 41], 'red_start': 44, 'occ': [[3, 4], [5, 7], [15, 16], [24, 26], [29, 30], [34, 36], [37, 39], [46, 48]]}, {'green': [65, 87], 'red_start': 91, 'occ': [[58, 60], [60, 64], [65, 68], [68, 73], [74, 77], [78, 81], [82, 87], [87, 93], [93, 96], [97, 99], [100, 102]]}, {'green': [121, 149], 'red_start': 154, 'occ': [[121, 124], [124, 125], [125, 129], [130, 131], [131, 134], [134, 135], [135, 139], [140, 142], [142, 143], [143, 149], [150, 151], [152, 155], [156, 160], [160, 164], [164, 165], [165, 166]]}, {'green': [175, 192], 'red_start': 197, 'occ': [[173, 179], [179, 181], [181, 182], [182, 183], [184, 189], [189, 191], [191, 197], [197, 199], [200, 201], [202, 205], [205, 208]]}, {'green': [225, 255], 'red_start': 260, 'occ': [[220, 226], [226, 228], [229, 231], [232, 237], [238, 244], [244, 245], [245, 248], [248, 254], [254, 256], [256, 257], [258, 260], [261, 265], [266, 272]]}]}, {'fails': [1, 2, 4], 'pct': 60}), ({'cycles': [{'green': [0, 20], 'red_start': 24, 'occ': [[0, 16], [23, 28]]}, {'green': [50, 70], 'red_start': 74, 'occ': [[50, 67], [74, 78]]}, {'green': [100, 120], 'red_start': 124, 'occ': [[100, 130]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [4, 40], 'red_start': 45, 'occ': [[1, 3], [4, 6], [7, 8], [9, 14], [15, 20], [20, 25], [25, 26], [26, 28], [29, 33], [33, 34], [35, 36], [36, 38], [38, 43], [43, 47], [48, 49], [50, 54], [54, 59]]}, {'green': [72, 110], 'red_start': 115, 'occ': [[63, 65], [69, 71], [72, 73], [81, 83], [86, 88], [89, 91], [93, 94], [97, 99], [103, 105], [112, 113], [117, 118], [122, 123], [124, 126]]}, {'green': [137, 162], 'red_start': 166, 'occ': [[130, 131], [131, 136], [136, 138], [138, 140], [140, 145], [146, 147], [148, 152], [152, 155], [155, 161], [162, 164], [164, 167], [167, 171], [171, 175], [176, 179]]}, {'green': [195, 216], 'red_start': 219, 'occ': [[188, 189], [190, 192], [199, 200], [206, 208], [215, 217], [219, 220], [225, 226]]}, {'green': [240, 264], 'red_start': 267, 'occ': [[232, 237], [238, 240], [241, 245], [245, 250], [250, 254], [255, 257], [258, 261], [261, 265], [265, 268], [269, 270], [271, 276], [276, 278], [278, 283]]}]}, {'fails': [2], 'pct': 20}), ({'cycles': [{'green': [8, 46], 'red_start': 51, 'occ': [[4, 6], [6, 12], [12, 15], [16, 22], [23, 24], [25, 27], [27, 33], [33, 38], [38, 43], [43, 49], [49, 51], [52, 58], [58, 64]]}]}, {'fails': [0], 'pct': 100}), ({'cycles': [{'green': [4, 22], 'red_start': 27, 'occ': [[-4, -2], [6, 7], [12, 13], [19, 21], [24, 26], [27, 29], [37, 39]]}, {'green': [53, 87], 'red_start': 92, 'occ': [[53, 54], [60, 62], [67, 69], [76, 78], [82, 83], [88, 90], [94, 95], [96, 97]]}, {'green': [119, 154], 'red_start': 157, 'occ': [[115, 117], [118, 123], [123, 126], [126, 128], [129, 131], [132, 137], [138, 139], [139, 140], [141, 142], [143, 146], [146, 148], [148, 150], [150, 152], [152, 153], [154, 158], [159, 164], [164, 169]]}, {'green': [180, 216], 'red_start': 221, 'occ': [[180, 181], [182, 186], [186, 188], [189, 192], [193, 198], [199, 202], [203, 206], [207, 210], [211, 217], [218, 219], [219, 225], [225, 227], [227, 231], [231, 232]]}]}, {'fails': [2, 3], 'pct': 50}), ({'cycles': [{'green': [0, 33], 'red_start': 37, 'occ': [[-9, -4], [-3, 1], [2, 8], [9, 13], [14, 19], [20, 23], [23, 26], [27, 30], [31, 34], [35, 38], [38, 42], [42, 48]]}, {'green': [64, 93], 'red_start': 98, 'occ': [[58, 59], [60, 66], [66, 67], [68, 70], [71, 77], [78, 83], [83, 85], [85, 88], [88, 94], [95, 101], [101, 106], [106, 107], [108, 112]]}, {'green': [127, 165], 'red_start': 169, 'occ': [[117, 122], [123, 127], [128, 129], [130, 134], [134, 139], [140, 143], [143, 147], [148, 149], [149, 152], [152, 154], [154, 156], [156, 157], [158, 162], [162, 167], [168, 174], [174, 176], [177, 178], [179, 185]]}, {'green': [198, 234], 'red_start': 239, 'occ': [[189, 191], [198, 199], [203, 204], [208, 210], [218, 220], [227, 228], [233, 234], [241, 242], [247, 248]]}, {'green': [268, 306], 'red_start': 309, 'occ': [[268, 269], [277, 279], [280, 281], [282, 284], [287, 288], [293, 295], [300, 302], [304, 306], [310, 311], [312, 314]]}]}, {'fails': [0, 1, 2], 'pct': 60}), ({'cycles': [{'green': [3, 20], 'red_start': 24, 'occ': [[0, 2], [9, 11], [15, 17], [19, 20], [25, 27], [28, 30], [34, 36]]}, {'green': [51, 62], 'red_start': 65, 'occ': [[49, 54], [54, 56], [56, 60], [61, 65], [65, 70], [71, 77]]}, {'green': [93, 127], 'red_start': 131, 'occ': [[86, 88], [89, 92], [93, 94], [95, 98], [98, 99], [99, 100], [100, 106], [107, 111], [111, 113], [114, 117], [117, 121], [121, 122], [123, 128], [129, 130], [130, 132], [133, 136], [137, 140], [140, 142]]}]}, {'fails': [1, 2], 'pct': 66})], [({'cycles': [{'green': [0, 20], 'red_start': 25, 'occ': [[-5, -3], [-2, 0], [0, 5], [5, 8], [8, 13], [13, 15], [15, 19], [19, 25], [26, 28], [28, 31], [31, 36]]}, {'green': [50, 61], 'red_start': 65, 'occ': [[41, 42], [45, 47], [48, 50], [56, 57], [61, 63], [70, 71], [72, 74]]}, {'green': [86, 116], 'red_start': 119, 'occ': [[76, 82], [82, 83], [83, 89], [89, 93], [94, 95], [95, 100], [101, 107], [107, 113], [114, 120], [120, 125], [125, 126], [126, 130]]}, {'green': [147, 161], 'red_start': 165, 'occ': [[140, 141], [142, 146], [147, 149], [149, 152], [153, 154], [154, 157], [157, 160], [160, 164], [164, 167], [168, 169], [170, 171], [171, 175], [176, 178]]}, {'green': [190, 213], 'red_start': 216, 'occ': [[184, 186], [189, 190], [192, 194], [197, 199], [201, 203], [208, 209], [213, 214], [218, 220], [227, 228]]}]}, {'fails': [0, 2], 'pct': 40}), ({'cycles': [{'green': [10, 30], 'red_start': 33, 'occ': [[7, 8], [9, 14], [14, 18], [18, 20], [20, 21], [21, 25], [26, 27], [28, 32], [32, 33], [34, 38], [38, 40], [40, 46]]}, {'green': [57, 94], 'red_start': 97, 'occ': [[47, 51], [51, 55], [56, 60], [61, 64], [65, 71], [71, 72], [72, 74], [74, 76], [77, 82], [82, 88], [89, 92], [92, 96], [97, 101], [101, 104], [105, 107], [108, 112]]}, {'green': [119, 135], 'red_start': 140, 'occ': [[114, 116], [116, 117], [118, 119], [119, 122], [123, 129], [129, 132], [132, 134], [135, 137], [138, 141], [141, 145], [145, 148], [149, 150], [151, 154]]}, {'green': [170, 207], 'red_start': 211, 'occ': [[161, 165], [165, 171], [171, 173], [173, 174], [175, 178], [179, 183], [184, 186], [186, 188], [189, 192], [192, 194], [194, 198], [199, 203], [203, 204], [205, 209], [209, 213], [214, 217], [218, 223]]}, {'green': [240, 266], 'red_start': 270, 'occ': [[237, 238], [242, 243], [248, 250], [255, 256], [260, 261], [264, 266], [271, 272], [278, 279]]}]}, {'fails': [0, 1, 2, 3], 'pct': 80}), ({'cycles': [{'green': [2, 32], 'red_start': 37, 'occ': [[0, 2], [2, 6], [6, 10], [10, 12], [12, 14], [15, 21], [21, 26], [27, 33], [34, 38], [39, 44], [45, 46], [46, 52]]}, {'green': [66, 106], 'red_start': 111, 'occ': [[60, 62], [65, 66], [71, 72], [80, 82], [90, 92], [98, 100], [105, 107], [114, 115]]}, {'green': [141, 173], 'red_start': 177, 'occ': [[133, 135], [136, 142], [142, 145], [145, 146], [146, 152], [153, 154], [154, 159], [159, 163], [163, 168], [169, 170], [171, 175], [176, 180], [181, 185], [186, 188], [188, 193]]}, {'green': [199, 238], 'red_start': 242, 'occ': [[193, 194], [195, 196], [197, 199], [206, 207], [212, 214], [220, 221], [222, 223], [226, 227], [233, 234], [235, 236], [241, 243], [247, 249], [251, 253]]}, {'green': [269, 305], 'red_start': 309, 'occ': [[269, 272], [273, 276], [276, 282], [283, 287], [287, 290], [291, 296], [296, 298], [298, 301], [302, 306], [307, 308], [308, 310], [311, 315], [316, 319], [320, 321]]}]}, {'fails': [0, 2, 4], 'pct': 60}), ({'cycles': [{'green': [9, 30], 'red_start': 35, 'occ': [[4, 5], [5, 6], [7, 12], [13, 14], [14, 18], [18, 19], [19, 22], [22, 27], [27, 33], [33, 39], [39, 40], [41, 47]]}, {'green': [65, 100], 'red_start': 103, 'occ': [[62, 68], [69, 73], [73, 75], [75, 76], [77, 83], [84, 90], [90, 93], [93, 94], [95, 101], [101, 102], [102, 108], [108, 110], [111, 113], [113, 117]]}, {'green': [128, 145], 'red_start': 149, 'occ': [[127, 128], [135, 137], [143, 145], [147, 148], [156, 158]]}]}, {'fails': [0, 1], 'pct': 66}), ({'cycles': [{'green': [0, 15], 'red_start': 19, 'occ': [[-6, -4], [-3, 0], [1, 4], [5, 11], [12, 14], [15, 18], [19, 21], [22, 28], [28, 30], [30, 31]]}, {'green': [46, 71], 'red_start': 76, 'occ': [[36, 41], [41, 46], [46, 48], [49, 51], [52, 55], [55, 59], [59, 65], [65, 69], [70, 75], [76, 79], [79, 81], [81, 83], [83, 87]]}, {'green': [98, 122], 'red_start': 126, 'occ': [[89, 94], [94, 99], [100, 103], [104, 106], [107, 113], [113, 119], [119, 124], [124, 130], [130, 132], [132, 134], [135, 138]]}, {'green': [156, 177], 'red_start': 180, 'occ': [[148, 150], [155, 157], [161, 163], [164, 166], [170, 171], [175, 177], [181, 183], [188, 190]]}, {'green': [209, 248], 'red_start': 251, 'occ': [[199, 200], [201, 205], [206, 208], [209, 210], [211, 214], [214, 220], [221, 224], [224, 225], [225, 229], [229, 232], [233, 235], [235, 238], [238, 240], [240, 244], [245, 249], [250, 252], [253, 259], [260, 265]]}]}, {'fails': [1, 2, 4], 'pct': 60}), ({'cycles': [{'green': [2, 25], 'red_start': 28, 'occ': [[-3, -2], [1, 2], [5, 7], [12, 14], [18, 20], [25, 27], [34, 35]]}, {'green': [51, 87], 'red_start': 90, 'occ': [[43, 47], [48, 51], [51, 52], [52, 57], [58, 64], [65, 69], [70, 73], [73, 75], [76, 80], [80, 81], [81, 86], [87, 92], [92, 93], [94, 100], [101, 107]]}]}, {'fails': [1], 'pct': 50}), ({'cycles': [{'green': [0, 20], 'red_start': 24, 'occ': [[0, 16], [23, 28]]}, {'green': [50, 70], 'red_start': 74, 'occ': [[50, 67], [74, 78]]}, {'green': [100, 120], 'red_start': 124, 'occ': [[100, 130]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [5, 26], 'red_start': 31, 'occ': [[-5, 1], [2, 4], [4, 5], [5, 7], [8, 12], [13, 15], [15, 18], [18, 19], [19, 24], [24, 27], [27, 33], [34, 38], [38, 43]]}, {'green': [57, 94], 'red_start': 97, 'occ': [[48, 49], [51, 52], [55, 56], [61, 63], [66, 67], [74, 76], [83, 85], [90, 92], [96, 97], [101, 103], [104, 106]]}, {'green': [122, 149], 'red_start': 154, 'occ': [[113, 114], [118, 119], [121, 122], [124, 126], [131, 133], [140, 141], [143, 145], [149, 150], [152, 153], [156, 158], [164, 166]]}, {'green': [178, 211], 'red_start': 214, 'occ': [[175, 176], [176, 178], [179, 181], [181, 184], [184, 185], [185, 189], [190, 193], [193, 197], [198, 201], [202, 204], [204, 207], [207, 213], [214, 217], [218, 222], [223, 226]]}, {'green': [242, 271], 'red_start': 274, 'occ': [[238, 240], [245, 247], [251, 252], [258, 259], [264, 265], [269, 270], [275, 276], [284, 286]]}]}, {'fails': [0, 3], 'pct': 40})]]\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":"362f7913870964763070b236bcf4664715d87b7547b26747c16e7b79e3c77744","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    fails = []\n    for i, cy in enumerate(x['cycles']):\n        gs, ge = cy['green']\n        rs = cy['red_start']\n        def busy(lo, hi):\n            return sum(max(0, min(off, hi) - max(on, lo)) for on, off in cy['occ'])\n        gl = ge - gs\n        gor = Fraction(busy(gs, ge), gl)\n        ror = Fraction(busy(rs, rs + 5), 5)\n        if gor >= Fraction(4, 5) and ror >= Fraction(4, 5):\n            fails.append(i)\n    return {'fails': fails, 'pct': len(fails) * 100 // len(x['cycles'])}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[({'cycles': [{'green': [1, 40], 'red_start': 44, 'occ': [[-9, -4], [-4, 1], [2, 5], [5, 9], [10, 15], [16, 19], [19, 24], [25, 30], [30, 35], [36, 40], [41, 47], [48, 54], [54, 60]]}, {'green': [73, 99], 'red_start': 102, 'occ': [[72, 74], [74, 80], [81, 87], [87, 88], [88, 94], [95, 96], [97, 99], [100, 105], [106, 107], [108, 113]]}, {'green': [132, 162], 'red_start': 166, 'occ': [[122, 123], [123, 126], [127, 129], [129, 134], [134, 135], [136, 139], [139, 141], [141, 144], [144, 145], [146, 151], [151, 157], [157, 160], [160, 166], [167, 170], [170, 174], [175, 179]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [6, 32], 'red_start': 35, 'occ': [[-2, 2], [3, 8], [9, 15], [15, 21], [22, 23], [23, 27], [28, 32], [33, 34], [34, 39], [39, 45], [46, 51]]}, {'green': [61, 85], 'red_start': 89, 'occ': [[54, 56], [60, 62], [66, 68], [75, 77], [83, 84], [90, 92], [98, 99]]}, {'green': [118, 150], 'red_start': 153, 'occ': [[111, 113], [114, 116], [120, 122], [130, 132], [134, 136], [137, 139], [144, 146], [148, 150], [154, 155], [156, 158]]}, {'green': [179, 189], 'red_start': 192, 'occ': [[170, 176], [176, 181], [181, 186], [186, 187], [188, 193], [194, 196], [196, 201], [201, 205]]}]}, {'fails': [0, 3], 'pct': 50}), ({'cycles': [{'green': [0, 20], 'red_start': 24, 'occ': [[0, 16], [23, 28]]}, {'green': [50, 70], 'red_start': 74, 'occ': [[50, 67], [74, 78]]}, {'green': [100, 120], 'red_start': 124, 'occ': [[100, 130]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [10, 44], 'red_start': 47, 'occ': [[6, 7], [7, 13], [14, 20], [20, 23], [24, 27], [27, 30], [30, 32], [33, 38], [39, 41], [42, 46], [47, 49], [49, 50], [50, 53], [54, 58], [58, 62]]}, {'green': [73, 96], 'red_start': 99, 'occ': [[65, 66], [67, 70], [71, 74], [74, 77], [77, 82], [83, 85], [85, 89], [90, 91], [91, 92], [93, 95], [96, 100], [100, 104], [104, 105], [105, 110], [110, 111]]}, {'green': [123, 143], 'red_start': 147, 'occ': [[113, 115], [122, 123], [126, 128], [129, 130], [135, 136], [141, 143], [144, 146], [151, 152], [155, 156]]}, {'green': [167, 182], 'red_start': 186, 'occ': [[159, 162], [162, 166], [166, 167], [167, 172], [172, 178], [178, 180], [180, 185], [185, 190], [191, 194], [194, 196], [197, 198]]}, {'green': [214, 251], 'red_start': 256, 'occ': [[206, 212], [213, 214], [215, 218], [219, 222], [222, 227], [228, 229], [230, 236], [237, 242], [243, 245], [246, 251], [252, 254], [255, 256], [257, 259], [259, 265], [266, 271]]}]}, {'fails': [0, 1, 3, 4], 'pct': 80}), ({'cycles': [{'green': [10, 36], 'red_start': 41, 'occ': [[10, 13], [14, 18], [19, 23], [23, 29], [30, 35], [35, 39], [40, 42], [43, 45], [46, 47], [47, 48], [48, 49], [50, 54]]}, {'green': [63, 75], 'red_start': 80, 'occ': [[53, 56], [57, 61], [62, 67], [67, 68], [69, 70], [70, 71], [72, 78], [78, 81], [82, 88], [88, 94]]}, {'green': [100, 135], 'red_start': 140, 'occ': [[97, 102], [103, 108], [108, 114], [115, 119], [119, 120], [121, 122], [123, 129], [130, 133], [133, 136], [137, 143], [144, 146], [146, 149], [150, 156]]}, {'green': [168, 200], 'red_start': 204, 'occ': [[165, 167], [168, 170], [170, 176], [177, 180], [181, 184], [185, 188], [188, 190], [191, 193], [193, 198], [198, 202], [202, 208], [208, 209], [210, 215]]}]}, {'fails': [1, 2, 3], 'pct': 75}), ({'cycles': [{'green': [10, 26], 'red_start': 30, 'occ': [[8, 12], [13, 15], [15, 16], [16, 22], [22, 28], [28, 34], [35, 36], [36, 38], [39, 42]]}, {'green': [51, 63], 'red_start': 68, 'occ': [[42, 46], [47, 50], [50, 52], [53, 56], [56, 61], [62, 65], [66, 71], [71, 77], [77, 80]]}, {'green': [95, 127], 'red_start': 132, 'occ': [[86, 88], [89, 95], [95, 101], [101, 106], [106, 109], [109, 113], [113, 119], [120, 125], [126, 129], [129, 133], [134, 137], [137, 143]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [7, 25], 'red_start': 28, 'occ': [[7, 8], [9, 11], [16, 17], [24, 25], [29, 30], [33, 34], [37, 39]]}]}, {'fails': [], 'pct': 0}), ({'cycles': [{'green': [1, 27], 'red_start': 32, 'occ': [[-7, -6], [0, 2], [8, 10], [15, 17], [22, 23], [27, 28], [31, 32], [33, 35], [40, 41]]}]}, {'fails': [], 'pct': 0})], [({'cycles': [{'green': [0, 26], 'red_start': 31, 'occ': [[-3, -1], [-1, 4], [5, 10], [10, 15], [15, 20], [20, 22], [23, 28], [28, 29], [29, 32], [33, 38], [38, 43]]}, {'green': [52, 84], 'red_start': 87, 'occ': [[48, 51], [51, 54], [54, 55], [55, 61], [61, 63], [64, 69], [70, 74], [74, 80], [81, 85], [86, 88], [89, 95], [95, 98]]}, {'green': [114, 134], 'red_start': 138, 'occ': [[105, 110], [110, 114], [114, 117], [117, 123], [124, 128], [128, 129], [129, 130], [130, 133], [133, 134], [134, 135], [135, 138], [138, 142], [143, 144], [145, 147], [147, 149]]}, {'green': [163, 194], 'red_start': 199, 'occ': [[161, 162], [168, 169], [176, 177], [180, 181], [184, 186], [191, 193], [194, 195], [201, 203]]}, {'green': [228, 256], 'red_start': 259, 'occ': [[224, 226], [226, 231], [231, 235], [235, 241], [242, 247], [248, 250], [251, 256], [257, 259], [259, 260], [260, 262], [262, 267], [267, 272]]}]}, {'fails': [0, 1, 2, 4], 'pct': 80}), ({'cycles': [{'green': [10, 23], 'red_start': 28, 'occ': [[8, 9], [12, 14], [18, 19], [23, 25], [27, 28], [34, 36], [39, 40]]}]}, {'fails': [], 'pct': 0}), ({'cycles': [{'green': [2, 39], 'red_start': 43, 'occ': [[-5, -4], [-3, -1], [3, 4], [8, 9], [14, 15], [22, 24], [32, 33], [39, 41], [44, 46], [48, 49]]}, {'green': [67, 106], 'red_start': 110, 'occ': [[60, 61], [63, 64], [69, 70], [74, 76], [78, 79], [80, 82], [87, 88], [93, 95], [102, 103], [110, 112], [117, 118]]}]}, {'fails': [], 'pct': 0}), ({'cycles': [{'green': [2, 40], 'red_start': 43, 'occ': [[-1, 1], [2, 6], [6, 12], [13, 16], [16, 22], [22, 27], [27, 28], [28, 34], [35, 38], [39, 44], [45, 51], [51, 53], [54, 58]]}, {'green': [66, 86], 'red_start': 89, 'occ': [[65, 66], [67, 70], [70, 73], [74, 79], [80, 82], [82, 86], [87, 88], [89, 92], [92, 94], [94, 95], [96, 102]]}, {'green': [117, 156], 'red_start': 161, 'occ': [[113, 115], [116, 121], [122, 126], [126, 127], [128, 133], [134, 135], [135, 136], [136, 142], [142, 148], [148, 150], [151, 157], [157, 163], [163, 168], [168, 172], [172, 176]]}, {'green': [190, 202], 'red_start': 205, 'occ': [[180, 182], [188, 190], [191, 192], [197, 198], [201, 202], [209, 210], [215, 216]]}, {'green': [229, 267], 'red_start': 271, 'occ': [[219, 220], [225, 226], [228, 229], [231, 232], [240, 242], [250, 252], [257, 259], [260, 262], [270, 272], [273, 274], [275, 277]]}]}, {'fails': [0, 1, 2], 'pct': 60}), ({'cycles': [{'green': [0, 20], 'red_start': 24, 'occ': [[0, 16], [23, 28]]}, {'green': [50, 70], 'red_start': 74, 'occ': [[50, 67], [74, 78]]}, {'green': [100, 120], 'red_start': 124, 'occ': [[100, 130]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [0, 36], 'red_start': 40, 'occ': [[-1, 0], [5, 6], [11, 12], [13, 14], [22, 24], [29, 31], [32, 33], [34, 36], [39, 40], [44, 45], [47, 49], [50, 51]]}, {'green': [69, 92], 'red_start': 96, 'occ': [[60, 61], [62, 63], [64, 65], [65, 66], [66, 69], [69, 72], [72, 74], [74, 76], [76, 82], [82, 88], [89, 91], [92, 93], [93, 94], [94, 99], [99, 105], [105, 111]]}, {'green': [125, 151], 'red_start': 156, 'occ': [[117, 121], [122, 127], [127, 129], [130, 136], [137, 138], [139, 143], [143, 147], [147, 152], [153, 159], [159, 161], [161, 167]]}, {'green': [185, 217], 'red_start': 222, 'occ': [[177, 179], [180, 183], [183, 186], [187, 188], [189, 193], [193, 194], [194, 198], [199, 204], [204, 209], [210, 212], [213, 215], [216, 219], [220, 224], [224, 230], [230, 233]]}, {'green': [250, 287], 'red_start': 292, 'occ': [[245, 246], [248, 250], [251, 252], [254, 255], [263, 264], [267, 268], [273, 274], [275, 276], [278, 280], [282, 283], [289, 291], [296, 297], [300, 301]]}]}, {'fails': [1, 2, 3], 'pct': 60}), ({'cycles': [{'green': [3, 18], 'red_start': 21, 'occ': [[1, 3], [4, 7], [8, 11], [12, 13], [14, 20], [21, 24], [25, 29], [29, 32]]}, {'green': [48, 77], 'red_start': 80, 'occ': [[45, 51], [52, 53], [53, 54], [55, 60], [60, 62], [62, 65], [65, 67], [67, 73], [74, 78], [78, 79], [80, 82], [83, 88], [89, 90], [91, 95]]}, {'green': [104, 124], 'red_start': 127, 'occ': [[100, 101], [106, 108], [111, 112], [117, 118], [120, 122], [126, 127], [134, 136]]}, {'green': [147, 159], 'red_start': 164, 'occ': [[143, 145], [152, 153], [157, 159], [161, 163], [165, 167], [174, 175]]}]}, {'fails': [1], 'pct': 25}), ({'cycles': [{'green': [8, 42], 'red_start': 47, 'occ': [[6, 8], [13, 15], [20, 21], [26, 28], [29, 30], [38, 39], [45, 46], [52, 54], [57, 58]]}, {'green': [75, 114], 'red_start': 119, 'occ': [[74, 75], [76, 77], [78, 79], [79, 85], [86, 88], [88, 91], [91, 94], [94, 98], [99, 103], [103, 106], [107, 112], [112, 113], [114, 116], [117, 123], [123, 124], [124, 130], [130, 134]]}, {'green': [143, 181], 'red_start': 186, 'occ': [[142, 144], [145, 147], [147, 153], [154, 159], [160, 166], [167, 173], [174, 180], [180, 186], [186, 190], [190, 194], [194, 198]]}, {'green': [211, 247], 'red_start': 250, 'occ': [[211, 214], [215, 217], [217, 221], [221, 227], [227, 231], [231, 235], [236, 242], [242, 247], [248, 251], [251, 254], [254, 258], [259, 265]]}]}, {'fails': [1, 2, 3], 'pct': 75})], [({'cycles': [{'green': [2, 21], 'red_start': 25, 'occ': [[1, 7], [8, 14], [15, 16], [17, 20], [21, 23], [24, 29], [29, 31], [31, 34], [35, 41]]}, {'green': [50, 67], 'red_start': 71, 'occ': [[49, 52], [52, 58], [58, 64], [64, 67], [68, 72], [73, 76], [76, 78], [79, 81], [81, 87]]}, {'green': [99, 137], 'red_start': 140, 'occ': [[92, 93], [99, 100], [105, 106], [111, 112], [116, 118], [122, 124], [129, 131], [138, 140], [148, 149]]}]}, {'fails': [1], 'pct': 33}), ({'cycles': [{'green': [1, 14], 'red_start': 17, 'occ': [[-7, -5], [3, 5], [13, 14], [17, 19], [20, 22], [25, 27]]}, {'green': [44, 74], 'red_start': 78, 'occ': [[38, 39], [47, 48], [49, 50], [52, 53], [57, 58], [59, 60], [65, 66], [72, 73], [78, 79], [83, 84], [87, 88]]}, {'green': [103, 115], 'red_start': 118, 'occ': [[94, 96], [100, 101], [104, 105], [110, 112], [120, 121], [123, 125], [127, 128]]}, {'green': [142, 162], 'red_start': 167, 'occ': [[135, 136], [136, 138], [138, 139], [140, 146], [147, 148], [148, 150], [150, 151], [151, 152], [152, 154], [155, 160], [160, 163], [164, 165], [166, 169], [169, 174], [174, 178]]}, {'green': [196, 210], 'red_start': 215, 'occ': [[190, 191], [192, 195], [196, 197], [198, 201], [201, 202], [203, 207], [208, 212], [213, 218], [218, 223], [224, 227]]}]}, {'fails': [3], 'pct': 20}), ({'cycles': [{'green': [7, 39], 'red_start': 43, 'occ': [[-1, 1], [1, 3], [3, 7], [7, 12], [13, 16], [16, 22], [22, 23], [23, 28], [28, 30], [31, 32], [32, 37], [38, 41], [41, 47], [48, 50], [50, 56]]}, {'green': [69, 80], 'red_start': 83, 'occ': [[64, 66], [67, 69], [69, 71], [72, 78], [78, 79], [79, 81], [82, 86], [86, 88], [88, 94], [94, 100]]}, {'green': [111, 139], 'red_start': 144, 'occ': [[109, 110], [110, 115], [115, 117], [118, 120], [121, 124], [124, 126], [126, 128], [128, 133], [134, 136], [137, 138], [138, 140], [141, 143], [144, 145], [146, 150], [150, 156]]}, {'green': [167, 177], 'red_start': 180, 'occ': [[166, 168], [172, 173], [181, 183], [190, 192]]}]}, {'fails': [0, 1, 2], 'pct': 75}), ({'cycles': [{'green': [6, 32], 'red_start': 37, 'occ': [[5, 6], [6, 12], [12, 17], [18, 22], [22, 26], [26, 31], [32, 35], [35, 39], [40, 44], [45, 49]]}, {'green': [58, 79], 'red_start': 83, 'occ': [[56, 59], [59, 60], [61, 65], [66, 68], [68, 70], [71, 76], [77, 80], [81, 85], [85, 86], [86, 92], [92, 96]]}, {'green': [108, 139], 'red_start': 143, 'occ': [[102, 104], [112, 114], [117, 118], [120, 121], [125, 127], [131, 132], [140, 142], [143, 145], [147, 148], [151, 152]]}, {'green': [171, 209], 'red_start': 213, 'occ': [[165, 168], [168, 174], [174, 178], [179, 184], [184, 186], [186, 190], [191, 193], [194, 195], [196, 199], [199, 202], [203, 207], [207, 212], [213, 218], [219, 220], [221, 225]]}]}, {'fails': [0, 1, 3], 'pct': 75}), ({'cycles': [{'green': [0, 20], 'red_start': 24, 'occ': [[0, 16], [23, 28]]}, {'green': [50, 70], 'red_start': 74, 'occ': [[50, 67], [74, 78]]}, {'green': [100, 120], 'red_start': 124, 'occ': [[100, 130]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [7, 28], 'red_start': 32, 'occ': [[3, 4], [6, 8], [13, 15], [22, 23], [24, 26], [32, 34], [39, 41]]}, {'green': [52, 92], 'red_start': 95, 'occ': [[42, 43], [50, 52], [58, 59], [63, 64], [68, 69], [75, 76], [78, 80], [86, 87], [94, 96], [100, 101], [104, 106]]}, {'green': [122, 134], 'red_start': 139, 'occ': [[114, 116], [124, 125], [127, 128], [133, 135], [139, 140], [146, 148]]}, {'green': [162, 179], 'red_start': 184, 'occ': [[159, 161], [161, 163], [163, 166], [167, 168], [168, 171], [172, 176], [177, 183], [184, 186], [187, 190], [190, 194], [194, 200]]}]}, {'fails': [3], 'pct': 25}), ({'cycles': [{'green': [4, 31], 'red_start': 35, 'occ': [[2, 4], [11, 12], [20, 21], [26, 28], [36, 38], [45, 46]]}, {'green': [57, 70], 'red_start': 73, 'occ': [[54, 56], [62, 64], [71, 72], [80, 82], [84, 85]]}, {'green': [98, 115], 'red_start': 119, 'occ': [[88, 89], [96, 97], [98, 99], [107, 108], [115, 117], [123, 125], [130, 132]]}, {'green': [147, 174], 'red_start': 178, 'occ': [[138, 142], [142, 143], [143, 145], [146, 147], [147, 152], [152, 158], [159, 162], [162, 166], [166, 168], [168, 171], [171, 173], [173, 179], [179, 180], [180, 181], [182, 184], [185, 186], [186, 188], [188, 189], [189, 194]]}]}, {'fails': [3], 'pct': 25}), ({'cycles': [{'green': [5, 35], 'red_start': 39, 'occ': [[-1, 4], [4, 6], [6, 10], [11, 12], [12, 17], [17, 19], [19, 20], [20, 24], [24, 30], [30, 36], [36, 41], [41, 45], [45, 47], [47, 49], [49, 55]]}, {'green': [62, 77], 'red_start': 81, 'occ': [[53, 56], [57, 61], [62, 65], [65, 70], [71, 75], [75, 81], [82, 88], [89, 92], [92, 93]]}, {'green': [108, 145], 'red_start': 150, 'occ': [[108, 114], [115, 116], [116, 121], [121, 123], [123, 129], [129, 134], [134, 135], [135, 139], [140, 141], [142, 144], [145, 149], [149, 151], [151, 157], [158, 159], [160, 163]]}, {'green': [171, 192], 'red_start': 195, 'occ': [[167, 168], [168, 172], [172, 176], [176, 177], [178, 179], [180, 185], [186, 187], [188, 194], [194, 200], [201, 202], [202, 207]]}, {'green': [217, 229], 'red_start': 234, 'occ': [[211, 212], [219, 220], [228, 229], [230, 231], [235, 237], [245, 246]]}]}, {'fails': [0, 1, 2, 3], 'pct': 80})], [({'cycles': [{'green': [6, 28], 'red_start': 33, 'occ': [[-4, -2], [5, 7], [15, 16], [22, 23], [27, 28], [35, 37], [43, 44]]}, {'green': [55, 93], 'red_start': 97, 'occ': [[50, 56], [56, 62], [62, 63], [63, 69], [69, 70], [71, 74], [74, 80], [80, 83], [83, 89], [90, 92], [92, 95], [95, 100], [101, 102], [102, 108]]}, {'green': [122, 156], 'red_start': 159, 'occ': [[121, 123], [131, 133], [135, 136], [138, 140], [145, 146], [149, 150], [156, 157], [164, 165], [168, 170]]}, {'green': [186, 196], 'red_start': 200, 'occ': [[180, 181], [181, 187], [188, 194], [195, 199], [199, 201], [202, 204], [204, 207], [207, 209], [210, 211], [211, 212]]}]}, {'fails': [1, 3], 'pct': 50}), ({'cycles': [{'green': [9, 41], 'red_start': 44, 'occ': [[3, 4], [5, 7], [15, 16], [24, 26], [29, 30], [34, 36], [37, 39], [46, 48]]}, {'green': [65, 87], 'red_start': 91, 'occ': [[58, 60], [60, 64], [65, 68], [68, 73], [74, 77], [78, 81], [82, 87], [87, 93], [93, 96], [97, 99], [100, 102]]}, {'green': [121, 149], 'red_start': 154, 'occ': [[121, 124], [124, 125], [125, 129], [130, 131], [131, 134], [134, 135], [135, 139], [140, 142], [142, 143], [143, 149], [150, 151], [152, 155], [156, 160], [160, 164], [164, 165], [165, 166]]}, {'green': [175, 192], 'red_start': 197, 'occ': [[173, 179], [179, 181], [181, 182], [182, 183], [184, 189], [189, 191], [191, 197], [197, 199], [200, 201], [202, 205], [205, 208]]}, {'green': [225, 255], 'red_start': 260, 'occ': [[220, 226], [226, 228], [229, 231], [232, 237], [238, 244], [244, 245], [245, 248], [248, 254], [254, 256], [256, 257], [258, 260], [261, 265], [266, 272]]}]}, {'fails': [1, 2, 4], 'pct': 60}), ({'cycles': [{'green': [0, 20], 'red_start': 24, 'occ': [[0, 16], [23, 28]]}, {'green': [50, 70], 'red_start': 74, 'occ': [[50, 67], [74, 78]]}, {'green': [100, 120], 'red_start': 124, 'occ': [[100, 130]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [4, 40], 'red_start': 45, 'occ': [[1, 3], [4, 6], [7, 8], [9, 14], [15, 20], [20, 25], [25, 26], [26, 28], [29, 33], [33, 34], [35, 36], [36, 38], [38, 43], [43, 47], [48, 49], [50, 54], [54, 59]]}, {'green': [72, 110], 'red_start': 115, 'occ': [[63, 65], [69, 71], [72, 73], [81, 83], [86, 88], [89, 91], [93, 94], [97, 99], [103, 105], [112, 113], [117, 118], [122, 123], [124, 126]]}, {'green': [137, 162], 'red_start': 166, 'occ': [[130, 131], [131, 136], [136, 138], [138, 140], [140, 145], [146, 147], [148, 152], [152, 155], [155, 161], [162, 164], [164, 167], [167, 171], [171, 175], [176, 179]]}, {'green': [195, 216], 'red_start': 219, 'occ': [[188, 189], [190, 192], [199, 200], [206, 208], [215, 217], [219, 220], [225, 226]]}, {'green': [240, 264], 'red_start': 267, 'occ': [[232, 237], [238, 240], [241, 245], [245, 250], [250, 254], [255, 257], [258, 261], [261, 265], [265, 268], [269, 270], [271, 276], [276, 278], [278, 283]]}]}, {'fails': [2], 'pct': 20}), ({'cycles': [{'green': [8, 46], 'red_start': 51, 'occ': [[4, 6], [6, 12], [12, 15], [16, 22], [23, 24], [25, 27], [27, 33], [33, 38], [38, 43], [43, 49], [49, 51], [52, 58], [58, 64]]}]}, {'fails': [0], 'pct': 100}), ({'cycles': [{'green': [4, 22], 'red_start': 27, 'occ': [[-4, -2], [6, 7], [12, 13], [19, 21], [24, 26], [27, 29], [37, 39]]}, {'green': [53, 87], 'red_start': 92, 'occ': [[53, 54], [60, 62], [67, 69], [76, 78], [82, 83], [88, 90], [94, 95], [96, 97]]}, {'green': [119, 154], 'red_start': 157, 'occ': [[115, 117], [118, 123], [123, 126], [126, 128], [129, 131], [132, 137], [138, 139], [139, 140], [141, 142], [143, 146], [146, 148], [148, 150], [150, 152], [152, 153], [154, 158], [159, 164], [164, 169]]}, {'green': [180, 216], 'red_start': 221, 'occ': [[180, 181], [182, 186], [186, 188], [189, 192], [193, 198], [199, 202], [203, 206], [207, 210], [211, 217], [218, 219], [219, 225], [225, 227], [227, 231], [231, 232]]}]}, {'fails': [2, 3], 'pct': 50}), ({'cycles': [{'green': [0, 33], 'red_start': 37, 'occ': [[-9, -4], [-3, 1], [2, 8], [9, 13], [14, 19], [20, 23], [23, 26], [27, 30], [31, 34], [35, 38], [38, 42], [42, 48]]}, {'green': [64, 93], 'red_start': 98, 'occ': [[58, 59], [60, 66], [66, 67], [68, 70], [71, 77], [78, 83], [83, 85], [85, 88], [88, 94], [95, 101], [101, 106], [106, 107], [108, 112]]}, {'green': [127, 165], 'red_start': 169, 'occ': [[117, 122], [123, 127], [128, 129], [130, 134], [134, 139], [140, 143], [143, 147], [148, 149], [149, 152], [152, 154], [154, 156], [156, 157], [158, 162], [162, 167], [168, 174], [174, 176], [177, 178], [179, 185]]}, {'green': [198, 234], 'red_start': 239, 'occ': [[189, 191], [198, 199], [203, 204], [208, 210], [218, 220], [227, 228], [233, 234], [241, 242], [247, 248]]}, {'green': [268, 306], 'red_start': 309, 'occ': [[268, 269], [277, 279], [280, 281], [282, 284], [287, 288], [293, 295], [300, 302], [304, 306], [310, 311], [312, 314]]}]}, {'fails': [0, 1, 2], 'pct': 60}), ({'cycles': [{'green': [3, 20], 'red_start': 24, 'occ': [[0, 2], [9, 11], [15, 17], [19, 20], [25, 27], [28, 30], [34, 36]]}, {'green': [51, 62], 'red_start': 65, 'occ': [[49, 54], [54, 56], [56, 60], [61, 65], [65, 70], [71, 77]]}, {'green': [93, 127], 'red_start': 131, 'occ': [[86, 88], [89, 92], [93, 94], [95, 98], [98, 99], [99, 100], [100, 106], [107, 111], [111, 113], [114, 117], [117, 121], [121, 122], [123, 128], [129, 130], [130, 132], [133, 136], [137, 140], [140, 142]]}]}, {'fails': [1, 2], 'pct': 66})], [({'cycles': [{'green': [0, 20], 'red_start': 25, 'occ': [[-5, -3], [-2, 0], [0, 5], [5, 8], [8, 13], [13, 15], [15, 19], [19, 25], [26, 28], [28, 31], [31, 36]]}, {'green': [50, 61], 'red_start': 65, 'occ': [[41, 42], [45, 47], [48, 50], [56, 57], [61, 63], [70, 71], [72, 74]]}, {'green': [86, 116], 'red_start': 119, 'occ': [[76, 82], [82, 83], [83, 89], [89, 93], [94, 95], [95, 100], [101, 107], [107, 113], [114, 120], [120, 125], [125, 126], [126, 130]]}, {'green': [147, 161], 'red_start': 165, 'occ': [[140, 141], [142, 146], [147, 149], [149, 152], [153, 154], [154, 157], [157, 160], [160, 164], [164, 167], [168, 169], [170, 171], [171, 175], [176, 178]]}, {'green': [190, 213], 'red_start': 216, 'occ': [[184, 186], [189, 190], [192, 194], [197, 199], [201, 203], [208, 209], [213, 214], [218, 220], [227, 228]]}]}, {'fails': [0, 2], 'pct': 40}), ({'cycles': [{'green': [10, 30], 'red_start': 33, 'occ': [[7, 8], [9, 14], [14, 18], [18, 20], [20, 21], [21, 25], [26, 27], [28, 32], [32, 33], [34, 38], [38, 40], [40, 46]]}, {'green': [57, 94], 'red_start': 97, 'occ': [[47, 51], [51, 55], [56, 60], [61, 64], [65, 71], [71, 72], [72, 74], [74, 76], [77, 82], [82, 88], [89, 92], [92, 96], [97, 101], [101, 104], [105, 107], [108, 112]]}, {'green': [119, 135], 'red_start': 140, 'occ': [[114, 116], [116, 117], [118, 119], [119, 122], [123, 129], [129, 132], [132, 134], [135, 137], [138, 141], [141, 145], [145, 148], [149, 150], [151, 154]]}, {'green': [170, 207], 'red_start': 211, 'occ': [[161, 165], [165, 171], [171, 173], [173, 174], [175, 178], [179, 183], [184, 186], [186, 188], [189, 192], [192, 194], [194, 198], [199, 203], [203, 204], [205, 209], [209, 213], [214, 217], [218, 223]]}, {'green': [240, 266], 'red_start': 270, 'occ': [[237, 238], [242, 243], [248, 250], [255, 256], [260, 261], [264, 266], [271, 272], [278, 279]]}]}, {'fails': [0, 1, 2, 3], 'pct': 80}), ({'cycles': [{'green': [2, 32], 'red_start': 37, 'occ': [[0, 2], [2, 6], [6, 10], [10, 12], [12, 14], [15, 21], [21, 26], [27, 33], [34, 38], [39, 44], [45, 46], [46, 52]]}, {'green': [66, 106], 'red_start': 111, 'occ': [[60, 62], [65, 66], [71, 72], [80, 82], [90, 92], [98, 100], [105, 107], [114, 115]]}, {'green': [141, 173], 'red_start': 177, 'occ': [[133, 135], [136, 142], [142, 145], [145, 146], [146, 152], [153, 154], [154, 159], [159, 163], [163, 168], [169, 170], [171, 175], [176, 180], [181, 185], [186, 188], [188, 193]]}, {'green': [199, 238], 'red_start': 242, 'occ': [[193, 194], [195, 196], [197, 199], [206, 207], [212, 214], [220, 221], [222, 223], [226, 227], [233, 234], [235, 236], [241, 243], [247, 249], [251, 253]]}, {'green': [269, 305], 'red_start': 309, 'occ': [[269, 272], [273, 276], [276, 282], [283, 287], [287, 290], [291, 296], [296, 298], [298, 301], [302, 306], [307, 308], [308, 310], [311, 315], [316, 319], [320, 321]]}]}, {'fails': [0, 2, 4], 'pct': 60}), ({'cycles': [{'green': [9, 30], 'red_start': 35, 'occ': [[4, 5], [5, 6], [7, 12], [13, 14], [14, 18], [18, 19], [19, 22], [22, 27], [27, 33], [33, 39], [39, 40], [41, 47]]}, {'green': [65, 100], 'red_start': 103, 'occ': [[62, 68], [69, 73], [73, 75], [75, 76], [77, 83], [84, 90], [90, 93], [93, 94], [95, 101], [101, 102], [102, 108], [108, 110], [111, 113], [113, 117]]}, {'green': [128, 145], 'red_start': 149, 'occ': [[127, 128], [135, 137], [143, 145], [147, 148], [156, 158]]}]}, {'fails': [0, 1], 'pct': 66}), ({'cycles': [{'green': [0, 15], 'red_start': 19, 'occ': [[-6, -4], [-3, 0], [1, 4], [5, 11], [12, 14], [15, 18], [19, 21], [22, 28], [28, 30], [30, 31]]}, {'green': [46, 71], 'red_start': 76, 'occ': [[36, 41], [41, 46], [46, 48], [49, 51], [52, 55], [55, 59], [59, 65], [65, 69], [70, 75], [76, 79], [79, 81], [81, 83], [83, 87]]}, {'green': [98, 122], 'red_start': 126, 'occ': [[89, 94], [94, 99], [100, 103], [104, 106], [107, 113], [113, 119], [119, 124], [124, 130], [130, 132], [132, 134], [135, 138]]}, {'green': [156, 177], 'red_start': 180, 'occ': [[148, 150], [155, 157], [161, 163], [164, 166], [170, 171], [175, 177], [181, 183], [188, 190]]}, {'green': [209, 248], 'red_start': 251, 'occ': [[199, 200], [201, 205], [206, 208], [209, 210], [211, 214], [214, 220], [221, 224], [224, 225], [225, 229], [229, 232], [233, 235], [235, 238], [238, 240], [240, 244], [245, 249], [250, 252], [253, 259], [260, 265]]}]}, {'fails': [1, 2, 4], 'pct': 60}), ({'cycles': [{'green': [2, 25], 'red_start': 28, 'occ': [[-3, -2], [1, 2], [5, 7], [12, 14], [18, 20], [25, 27], [34, 35]]}, {'green': [51, 87], 'red_start': 90, 'occ': [[43, 47], [48, 51], [51, 52], [52, 57], [58, 64], [65, 69], [70, 73], [73, 75], [76, 80], [80, 81], [81, 86], [87, 92], [92, 93], [94, 100], [101, 107]]}]}, {'fails': [1], 'pct': 50}), ({'cycles': [{'green': [0, 20], 'red_start': 24, 'occ': [[0, 16], [23, 28]]}, {'green': [50, 70], 'red_start': 74, 'occ': [[50, 67], [74, 78]]}, {'green': [100, 120], 'red_start': 124, 'occ': [[100, 130]]}]}, {'fails': [0, 1, 2], 'pct': 100}), ({'cycles': [{'green': [5, 26], 'red_start': 31, 'occ': [[-5, 1], [2, 4], [4, 5], [5, 7], [8, 12], [13, 15], [15, 18], [18, 19], [19, 24], [24, 27], [27, 33], [34, 38], [38, 43]]}, {'green': [57, 94], 'red_start': 97, 'occ': [[48, 49], [51, 52], [55, 56], [61, 63], [66, 67], [74, 76], [83, 85], [90, 92], [96, 97], [101, 103], [104, 106]]}, {'green': [122, 149], 'red_start': 154, 'occ': [[113, 114], [118, 119], [121, 122], [124, 126], [131, 133], [140, 141], [143, 145], [149, 150], [152, 153], [156, 158], [164, 166]]}, {'green': [178, 211], 'red_start': 214, 'occ': [[175, 176], [176, 178], [179, 181], [181, 184], [184, 185], [185, 189], [190, 193], [193, 197], [198, 201], [202, 204], [204, 207], [207, 213], [214, 217], [218, 222], [223, 226]]}, {'green': [242, 271], 'red_start': 274, 'occ': [[238, 240], [245, 247], [251, 252], [258, 259], [264, 265], [269, 270], [275, 276], [284, 286]]}]}, {'fails': [0, 3], 'pct': 40})]]\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-split-failure-ror-window","generated_at":"2026-09-29T14:48:00.522370+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 red occupancy window rule so that the step reads `busy(rs, rs + 5)`.","root_cause":"ROR5 is measured from the end of green, so the window covers the yellow instead of the start of red.","sha256":"81a6c5ad538a4654b2bb9b6ff2e74467a8854ecdccc520e9ef9bcc3af3d67343","title":"Split failure detection: the red occupancy window starts at yellow onset · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":48.85,"exit_code":1,"observations":[{"actual":{"fails":[0,1,2],"pct":100},"check":"timing oracle 0","expected":{"fails":[0,1,2],"pct":100},"passed":true},{"actual":{"fails":[0,3],"pct":50},"check":"timing oracle 1","expected":{"fails":[0,3],"pct":50},"passed":true},{"actual":{"fails":[2],"pct":33},"check":"timing oracle 2","expected":{"fails":[0,1,2],"pct":100},"passed":false},{"actual":{"fails":[0,1,3],"pct":60},"check":"timing oracle 3","expected":{"fails":[0,1,3,4],"pct":80},"passed":false},{"actual":{"fails":[0,1,2,3],"pct":100},"check":"timing oracle 4","expected":{"fails":[1,2,3],"pct":75},"passed":false},{"actual":{"fails":[0,1,2],"pct":100},"check":"timing oracle 5","expected":{"fails":[0,1,2],"pct":100},"passed":true},{"actual":{"fails":[],"pct":0},"check":"timing oracle 6","expected":{"fails":[],"pct":0},"passed":true},{"actual":{"fails":[],"pct":0},"check":"timing oracle 7","expected":{"fails":[],"pct":0},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"timing oracle 0\", \"actual\": {\"fails\": [0, 1, 2], \"pct\": 100}, \"expected\": {\"fails\": [0, 1, 2], \"pct\": 100}, \"passed\": true}, {\"check\": \"timing oracle 1\", \"actual\": {\"fails\": [0, 3], \"pct\": 50}, \"expected\": {\"fails\": [0, 3], \"pct\": 50}, \"passed\": true}, {\"check\": \"timing oracle 2\", \"actual\": {\"fails\": [2], \"pct\": 33}, \"expected\": {\"fails\": [0, 1, 2], \"pct\": 100}, \"passed\": false}, {\"check\": \"timing oracle 3\", \"actual\": {\"fails\": [0, 1, 3], \"pct\": 60}, \"expected\": {\"fails\": [0, 1, 3, 4], \"pct\": 80}, \"passed\": false}, {\"check\": \"timing oracle 4\", \"actual\": {\"fails\": [0, 1, 2, 3], \"pct\": 100}, \"expected\": {\"fails\": [1, 2, 3], \"pct\": 75}, \"passed\": false}, {\"check\": \"timing oracle 5\", \"actual\": {\"fails\": [0, 1, 2], \"pct\": 100}, \"expected\": {\"fails\": [0, 1, 2], \"pct\": 100}, \"passed\": true}, {\"check\": \"timing oracle 6\", \"actual\": {\"fails\": [], \"pct\": 0}, \"expected\": {\"fails\": [], \"pct\": 0}, \"passed\": true}, {\"check\": \"timing oracle 7\", \"actual\": {\"fails\": [], \"pct\": 0}, \"expected\": {\"fails\": [], \"pct\": 0}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":50.338,"exit_code":1,"observations":[{"actual":{"fails":[0,1,2],"pct":100},"check":"timing oracle 0","expected":{"fails":[0,1,2],"pct":100},"passed":true},{"actual":{"fails":[0,3],"pct":50},"check":"timing oracle 1","expected":{"fails":[0,3],"pct":50},"passed":true},{"actual":{"fails":[2],"pct":33},"check":"timing oracle 2","expected":{"fails":[0,1,2],"pct":100},"passed":false},{"actual":{"fails":[0,1,3],"pct":60},"check":"timing oracle 3","expected":{"fails":[0,1,3,4],"pct":80},"passed":false},{"actual":{"fails":[0,1,2,3],"pct":100},"check":"timing oracle 4","expected":{"fails":[1,2,3],"pct":75},"passed":false},{"actual":{"fails":[0,1,2],"pct":100},"check":"timing oracle 5","expected":{"fails":[0,1,2],"pct":100},"passed":true},{"actual":{"fails":[],"pct":0},"check":"timing oracle 6","expected":{"fails":[],"pct":0},"passed":true},{"actual":{"fails":[],"pct":0},"check":"timing oracle 7","expected":{"fails":[],"pct":0},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"timing oracle 0\", \"actual\": {\"fails\": [0, 1, 2], \"pct\": 100}, \"expected\": {\"fails\": [0, 1, 2], \"pct\": 100}, \"passed\": true}, {\"check\": \"timing oracle 1\", \"actual\": {\"fails\": [0, 3], \"pct\": 50}, \"expected\": {\"fails\": [0, 3], \"pct\": 50}, \"passed\": true}, {\"check\": \"timing oracle 2\", \"actual\": {\"fails\": [2], \"pct\": 33}, \"expected\": {\"fails\": [0, 1, 2], \"pct\": 100}, \"passed\": false}, {\"check\": \"timing oracle 3\", \"actual\": {\"fails\": [0, 1, 3], \"pct\": 60}, \"expected\": {\"fails\": [0, 1, 3, 4], \"pct\": 80}, \"passed\": false}, {\"check\": \"timing oracle 4\", \"actual\": {\"fails\": [0, 1, 2, 3], \"pct\": 100}, \"expected\": {\"fails\": [1, 2, 3], \"pct\": 75}, \"passed\": false}, {\"check\": \"timing oracle 5\", \"actual\": {\"fails\": [0, 1, 2], \"pct\": 100}, \"expected\": {\"fails\": [0, 1, 2], \"pct\": 100}, \"passed\": true}, {\"check\": \"timing oracle 6\", \"actual\": {\"fails\": [], \"pct\": 0}, \"expected\": {\"fails\": [], \"pct\": 0}, \"passed\": true}, {\"check\": \"timing oracle 7\", \"actual\": {\"fails\": [], \"pct\": 0}, \"expected\": {\"fails\": [], \"pct\": 0}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":49.222,"exit_code":0,"observations":[{"actual":{"fails":[0,1,2],"pct":100},"check":"timing oracle 0","expected":{"fails":[0,1,2],"pct":100},"passed":true},{"actual":{"fails":[0,3],"pct":50},"check":"timing oracle 1","expected":{"fails":[0,3],"pct":50},"passed":true},{"actual":{"fails":[0,1,2],"pct":100},"check":"timing oracle 2","expected":{"fails":[0,1,2],"pct":100},"passed":true},{"actual":{"fails":[0,1,3,4],"pct":80},"check":"timing oracle 3","expected":{"fails":[0,1,3,4],"pct":80},"passed":true},{"actual":{"fails":[1,2,3],"pct":75},"check":"timing oracle 4","expected":{"fails":[1,2,3],"pct":75},"passed":true},{"actual":{"fails":[0,1,2],"pct":100},"check":"timing oracle 5","expected":{"fails":[0,1,2],"pct":100},"passed":true},{"actual":{"fails":[],"pct":0},"check":"timing oracle 6","expected":{"fails":[],"pct":0},"passed":true},{"actual":{"fails":[],"pct":0},"check":"timing oracle 7","expected":{"fails":[],"pct":0},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"timing oracle 0\", \"actual\": {\"fails\": [0, 1, 2], \"pct\": 100}, \"expected\": {\"fails\": [0, 1, 2], \"pct\": 100}, \"passed\": true}, {\"check\": \"timing oracle 1\", \"actual\": {\"fails\": [0, 3], \"pct\": 50}, \"expected\": {\"fails\": [0, 3], \"pct\": 50}, \"passed\": true}, {\"check\": \"timing oracle 2\", \"actual\": {\"fails\": [0, 1, 2], \"pct\": 100}, \"expected\": {\"fails\": [0, 1, 2], \"pct\": 100}, \"passed\": true}, {\"check\": \"timing oracle 3\", \"actual\": {\"fails\": [0, 1, 3, 4], \"pct\": 80}, \"expected\": {\"fails\": [0, 1, 3, 4], \"pct\": 80}, \"passed\": true}, {\"check\": \"timing oracle 4\", \"actual\": {\"fails\": [1, 2, 3], \"pct\": 75}, \"expected\": {\"fails\": [1, 2, 3], \"pct\": 75}, \"passed\": true}, {\"check\": \"timing oracle 5\", \"actual\": {\"fails\": [0, 1, 2], \"pct\": 100}, \"expected\": {\"fails\": [0, 1, 2], \"pct\": 100}, \"passed\": true}, {\"check\": \"timing oracle 6\", \"actual\": {\"fails\": [], \"pct\": 0}, \"expected\": {\"fails\": [], \"pct\": 0}, \"passed\": true}, {\"check\": \"timing oracle 7\", \"actual\": {\"fails\": [], \"pct\": 0}, \"expected\": {\"fails\": [], \"pct\": 0}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}