{"abstract":"Conflict monitor fault scan returns a wrong result when a yellow of exactly 2.7 s is flagged as short.","category":"Traffic signal timing plans","checks":8,"contract":"Input {channels: [[channel, lit colors string over R/Y/G, enabled]], compat: unordered compatible pairs, yellow_durations: [[channel, tenths]]}. Disabled channels are ignored entirely. A channel with more than one lit color is 'multi'; with none lit is 'red-fail'; any channel showing G or Y takes part in the conflict check, and every live pair not listed as compatible is 'conflict:a-b' (a<b). A completed yellow shorter than 2.7 s is 'short-yellow'. Return the sorted fault strings.","evaluation_group":"w2-traffic_signal_timing_plans-conflict-monitor","failed_approach":"Using 3.0 s as the limit flags legal yellows between 2.7 and 3.0 s.","family":"w2-traffic_signal_timing_plans-conflict-monitor-short-yellow","id":"FA-68301","implementations":{"attempt":{"sha256":"404474075f791a71861708ceeabfe1ddbdc613146f11b472a3339d7b0cd235fa","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    ok = {(min(a, b), max(a, b)) for a, b in x['compat']}\n    faults = []\n    live = []\n    for ch, col, en in x['channels']:\n        if not en:\n            continue\n        if len(col) > 1:\n            faults.append('multi:%d' % ch)\n        if col == '':\n            faults.append('red-fail:%d' % ch)\n        if 'G' in col or 'Y' in col:\n            live.append(ch)\n    live.sort()\n    for i in range(len(live)):\n        for j in range(i + 1, len(live)):\n            if (live[i], live[j]) not in ok:\n                faults.append('conflict:%d-%d' % (live[i], live[j]))\n    for ch, tenths in x['yellow_durations']:\n        if tenths < 30:\n            faults.append('short-yellow:%d' % ch)\n    return sorted(faults)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[({'channels': [[1, 'RY', True], [2, 'RG', True], [3, '', False], [4, 'R', True], [5, 'RG', True], [6, 'GY', True]], 'compat': [[2, 3], [2, 5], [4, 6], [6, 5]], 'yellow_durations': [[2, 27], [4, 26]]}, ['conflict:1-2', 'conflict:1-5', 'conflict:1-6', 'conflict:2-6', 'multi:1', 'multi:2', 'multi:5', 'multi:6', 'short-yellow:4']), ({'channels': [[1, 'RG', False], [2, 'GY', True], [3, 'Y', True], [4, 'R', True]], 'compat': [[4, 1], [4, 2], [4, 3]], 'yellow_durations': [[1, 25], [2, 26], [4, 30]]}, ['conflict:2-3', 'multi:2', 'short-yellow:1', 'short-yellow:2']), ({'channels': [[1, 'G', True], [2, 'GY', True], [3, 'RY', True], [4, '', True], [5, 'R', True], [6, '', True]], 'compat': [[1, 3], [3, 4], [5, 4]], 'yellow_durations': []}, ['conflict:1-2', 'conflict:2-3', 'multi:2', 'multi:3', 'red-fail:4', 'red-fail:6']), ({'channels': [[1, 'GY', True], [2, 'G', True], [3, '', True]], 'compat': [], 'yellow_durations': [[1, 26]]}, ['conflict:1-2', 'multi:1', 'red-fail:3', 'short-yellow:1']), ({'channels': [[1, 'G', True], [2, 'R', True], [3, 'Y', True], [4, 'G', False]], 'compat': [[3, 1]], 'yellow_durations': [[2, 27]]}, []), ({'channels': [[1, 'G', True], [2, 'R', True], [3, '', True], [4, 'RY', True], [5, 'R', True]], 'compat': [[1, 3]], 'yellow_durations': [[1, 28], [3, 27], [5, 27]]}, ['conflict:1-4', 'multi:4', 'red-fail:3']), ({'channels': [[1, 'R', True], [2, 'Y', True], [3, 'RG', True], [4, 'Y', True], [5, 'R', True]], 'compat': [[4, 2], [2, 5], [3, 4], [3, 5]], 'yellow_durations': []}, ['conflict:2-3', 'multi:3']), ({'channels': [[1, '', True], [2, 'G', False], [3, 'RY', True], [4, 'GY', False], [5, 'R', False]], 'compat': [[2, 3], [2, 5], [4, 3]], 'yellow_durations': [[5, 28]]}, ['multi:3', 'red-fail:1'])], [({'channels': [[1, 'G', True], [2, 'R', True], [3, 'Y', True], [4, 'G', False]], 'compat': [[3, 1]], 'yellow_durations': [[2, 27]]}, []), ({'channels': [[1, 'RY', True], [2, 'Y', True], [3, 'R', True], [4, 'Y', True], [5, 'GY', True], [6, 'Y', True]], 'compat': [[4, 1], [5, 1], [4, 3]], 'yellow_durations': [[3, 27], [4, 26]]}, ['conflict:1-2', 'conflict:1-6', 'conflict:2-4', 'conflict:2-5', 'conflict:2-6', 'conflict:4-5', 'conflict:4-6', 'conflict:5-6', 'multi:1', 'multi:5', 'short-yellow:4']), ({'channels': [[1, '', True], [2, 'R', True], [3, 'G', True]], 'compat': [[3, 1], [2, 3]], 'yellow_durations': []}, ['red-fail:1']), ({'channels': [[1, 'R', True], [2, 'R', True], [3, 'GY', True]], 'compat': [[1, 2], [2, 3]], 'yellow_durations': []}, ['multi:3']), ({'channels': [[1, '', True], [2, 'Y', False], [3, 'RY', True]], 'compat': [[2, 1], [3, 1]], 'yellow_durations': [[3, 35]]}, ['multi:3', 'red-fail:1']), ({'channels': [[1, 'GY', True], [2, 'G', True], [3, '', True]], 'compat': [], 'yellow_durations': [[1, 26]]}, ['conflict:1-2', 'multi:1', 'red-fail:3', 'short-yellow:1']), ({'channels': [[1, '', True], [2, 'G', False], [3, 'G', True], [4, 'GY', False]], 'compat': [[2, 1], [2, 4]], 'yellow_durations': [[4, 27]]}, ['red-fail:1']), ({'channels': [[1, 'GY', True], [2, '', True], [3, 'R', True]], 'compat': [[3, 1], [3, 2]], 'yellow_durations': [[1, 35], [3, 35]]}, ['multi:1', 'red-fail:2'])], [({'channels': [[1, 'RY', True], [2, 'RG', True], [3, 'R', False]], 'compat': [[2, 1]], 'yellow_durations': [[2, 27]]}, ['multi:1', 'multi:2']), ({'channels': [[1, 'G', True], [2, 'R', True], [3, 'Y', True], [4, 'G', False]], 'compat': [[3, 1]], 'yellow_durations': [[2, 27]]}, []), ({'channels': [[1, 'GY', True], [2, 'G', True], [3, '', True]], 'compat': [], 'yellow_durations': [[1, 26]]}, ['conflict:1-2', 'multi:1', 'red-fail:3', 'short-yellow:1']), ({'channels': [[1, 'R', False], [2, 'R', True], [3, '', True], [4, 'R', True], [5, 'GY', True]], 'compat': [[1, 5], [2, 5], [3, 4]], 'yellow_durations': [[4, 28]]}, ['multi:5', 'red-fail:3']), ({'channels': [[1, 'R', True], [2, 'GY', True], [3, '', True], [4, 'GY', True], [5, 'R', True], [6, 'Y', False]], 'compat': [[1, 2], [3, 1], [5, 1], [4, 3], [5, 4]], 'yellow_durations': [[1, 35]]}, ['conflict:2-4', 'multi:2', 'multi:4', 'red-fail:3']), ({'channels': [[1, 'R', True], [2, 'G', True], [3, 'GY', True], [4, 'RG', False]], 'compat': [[4, 2]], 'yellow_durations': []}, ['conflict:2-3', 'multi:3']), ({'channels': [[1, 'G', True], [2, 'Y', True], [3, 'R', True], [4, '', True], [5, 'RG', True], [6, '', True]], 'compat': [[6, 2], [4, 5]], 'yellow_durations': [[1, 25], [3, 27], [5, 35]]}, ['conflict:1-2', 'conflict:1-5', 'conflict:2-5', 'multi:5', 'red-fail:4', 'red-fail:6', 'short-yellow:1']), ({'channels': [[1, 'Y', True], [2, '', True], [3, 'GY', True], [4, 'Y', True]], 'compat': [[1, 2], [4, 3]], 'yellow_durations': []}, ['conflict:1-3', 'conflict:1-4', 'multi:3', 'red-fail:2'])], [({'channels': [[1, 'RG', False], [2, 'R', False], [3, 'G', True]], 'compat': [[1, 2]], 'yellow_durations': []}, []), ({'channels': [[1, '', True], [2, 'R', False], [3, 'RY', False], [4, '', True], [5, 'GY', True], [6, 'Y', True]], 'compat': [[1, 2], [4, 1], [1, 5], [1, 6], [5, 2], [3, 5], [3, 6]], 'yellow_durations': [[4, 27], [5, 26]]}, ['conflict:5-6', 'multi:5', 'red-fail:1', 'red-fail:4', 'short-yellow:5']), ({'channels': [[1, 'Y', True], [2, 'G', True], [3, 'GY', True], [4, 'R', True], [5, 'R', True], [6, 'G', False]], 'compat': [[2, 1], [6, 1], [3, 2], [2, 4], [3, 4], [3, 6], [6, 5]], 'yellow_durations': []}, ['conflict:1-3', 'multi:3']), ({'channels': [[1, 'G', True], [2, 'R', True], [3, 'Y', True], [4, 'G', False]], 'compat': [[3, 1]], 'yellow_durations': [[2, 27]]}, []), ({'channels': [[1, 'GY', True], [2, 'G', True], [3, 'R', True], [4, 'RY', True]], 'compat': [[4, 1], [4, 2], [3, 4]], 'yellow_durations': [[3, 27]]}, ['conflict:1-2', 'multi:1', 'multi:4']), ({'channels': [[1, 'R', True], [2, 'R', False], [3, 'R', True], [4, 'R', True], [5, 'R', True], [6, 'R', True]], 'compat': [[4, 2], [2, 6], [3, 4], [5, 3], [6, 4]], 'yellow_durations': [[1, 26], [2, 35]]}, ['short-yellow:1']), ({'channels': [[1, 'GY', True], [2, 'G', True], [3, '', True]], 'compat': [], 'yellow_durations': [[1, 26]]}, ['conflict:1-2', 'multi:1', 'red-fail:3', 'short-yellow:1']), ({'channels': [[1, 'G', True], [2, 'Y', True], [3, 'R', True], [4, 'R', True]], 'compat': [[1, 2], [1, 3], [4, 1], [3, 4]], 'yellow_durations': [[1, 28], [4, 27]]}, [])], [({'channels': [[1, 'G', True], [2, '', True], [3, 'R', True]], 'compat': [], 'yellow_durations': [[1, 25]]}, ['red-fail:2', 'short-yellow:1']), ({'channels': [[1, 'G', True], [2, 'R', True], [3, 'Y', True], [4, 'G', False]], 'compat': [[3, 1]], 'yellow_durations': [[2, 27]]}, []), ({'channels': [[1, 'G', False], [2, 'G', True], [3, 'R', False], [4, 'R', True], [5, 'Y', False]], 'compat': [[1, 2], [1, 3], [5, 1], [3, 2], [5, 2]], 'yellow_durations': [[3, 28]]}, []), ({'channels': [[1, 'Y', False], [2, 'R', False], [3, 'GY', True], [4, 'R', False], [5, 'R', True]], 'compat': [[2, 1], [3, 1], [4, 1], [2, 5], [3, 5], [4, 5]], 'yellow_durations': [[1, 25]]}, ['multi:3', 'short-yellow:1']), ({'channels': [[1, 'RY', True], [2, 'R', True], [3, 'GY', True], [4, 'R', True], [5, 'GY', True], [6, 'GY', True]], 'compat': [[2, 1], [1, 4], [5, 1], [6, 1], [3, 2], [3, 5], [3, 6]], 'yellow_durations': [[2, 26], [3, 27], [4, 28]]}, ['conflict:1-3', 'conflict:5-6', 'multi:1', 'multi:3', 'multi:5', 'multi:6', 'short-yellow:2']), ({'channels': [[1, 'R', True], [2, 'G', True], [3, 'G', False]], 'compat': [], 'yellow_durations': []}, []), ({'channels': [[1, '', True], [2, 'G', True], [3, 'RG', True], [4, 'R', True]], 'compat': [[3, 2], [4, 2], [3, 4]], 'yellow_durations': [[1, 27]]}, ['multi:3', 'red-fail:1']), ({'channels': [[1, 'GY', True], [2, 'G', True], [3, '', True]], 'compat': [], 'yellow_durations': [[1, 26]]}, ['conflict:1-2', 'multi:1', 'red-fail:3', 'short-yellow:1'])]]\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":"6dddece15cc26653a5ab7e9f4d941c93043345245af9de4632c329c21f7e3871","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    ok = {(min(a, b), max(a, b)) for a, b in x['compat']}\n    faults = []\n    live = []\n    for ch, col, en in x['channels']:\n        if not en:\n            continue\n        if len(col) > 1:\n            faults.append('multi:%d' % ch)\n        if col == '':\n            faults.append('red-fail:%d' % ch)\n        if 'G' in col or 'Y' in col:\n            live.append(ch)\n    live.sort()\n    for i in range(len(live)):\n        for j in range(i + 1, len(live)):\n            if (live[i], live[j]) not in ok:\n                faults.append('conflict:%d-%d' % (live[i], live[j]))\n    for ch, tenths in x['yellow_durations']:\n        if tenths <= 27:\n            faults.append('short-yellow:%d' % ch)\n    return sorted(faults)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[({'channels': [[1, 'RY', True], [2, 'RG', True], [3, '', False], [4, 'R', True], [5, 'RG', True], [6, 'GY', True]], 'compat': [[2, 3], [2, 5], [4, 6], [6, 5]], 'yellow_durations': [[2, 27], [4, 26]]}, ['conflict:1-2', 'conflict:1-5', 'conflict:1-6', 'conflict:2-6', 'multi:1', 'multi:2', 'multi:5', 'multi:6', 'short-yellow:4']), ({'channels': [[1, 'RG', False], [2, 'GY', True], [3, 'Y', True], [4, 'R', True]], 'compat': [[4, 1], [4, 2], [4, 3]], 'yellow_durations': [[1, 25], [2, 26], [4, 30]]}, ['conflict:2-3', 'multi:2', 'short-yellow:1', 'short-yellow:2']), ({'channels': [[1, 'G', True], [2, 'GY', True], [3, 'RY', True], [4, '', True], [5, 'R', True], [6, '', True]], 'compat': [[1, 3], [3, 4], [5, 4]], 'yellow_durations': []}, ['conflict:1-2', 'conflict:2-3', 'multi:2', 'multi:3', 'red-fail:4', 'red-fail:6']), ({'channels': [[1, 'GY', True], [2, 'G', True], [3, '', True]], 'compat': [], 'yellow_durations': [[1, 26]]}, ['conflict:1-2', 'multi:1', 'red-fail:3', 'short-yellow:1']), ({'channels': [[1, 'G', True], [2, 'R', True], [3, 'Y', True], [4, 'G', False]], 'compat': [[3, 1]], 'yellow_durations': [[2, 27]]}, []), ({'channels': [[1, 'G', True], [2, 'R', True], [3, '', True], [4, 'RY', True], [5, 'R', True]], 'compat': [[1, 3]], 'yellow_durations': [[1, 28], [3, 27], [5, 27]]}, ['conflict:1-4', 'multi:4', 'red-fail:3']), ({'channels': [[1, 'R', True], [2, 'Y', True], [3, 'RG', True], [4, 'Y', True], [5, 'R', True]], 'compat': [[4, 2], [2, 5], [3, 4], [3, 5]], 'yellow_durations': []}, ['conflict:2-3', 'multi:3']), ({'channels': [[1, '', True], [2, 'G', False], [3, 'RY', True], [4, 'GY', False], [5, 'R', False]], 'compat': [[2, 3], [2, 5], [4, 3]], 'yellow_durations': [[5, 28]]}, ['multi:3', 'red-fail:1'])], [({'channels': [[1, 'G', True], [2, 'R', True], [3, 'Y', True], [4, 'G', False]], 'compat': [[3, 1]], 'yellow_durations': [[2, 27]]}, []), ({'channels': [[1, 'RY', True], [2, 'Y', True], [3, 'R', True], [4, 'Y', True], [5, 'GY', True], [6, 'Y', True]], 'compat': [[4, 1], [5, 1], [4, 3]], 'yellow_durations': [[3, 27], [4, 26]]}, ['conflict:1-2', 'conflict:1-6', 'conflict:2-4', 'conflict:2-5', 'conflict:2-6', 'conflict:4-5', 'conflict:4-6', 'conflict:5-6', 'multi:1', 'multi:5', 'short-yellow:4']), ({'channels': [[1, '', True], [2, 'R', True], [3, 'G', True]], 'compat': [[3, 1], [2, 3]], 'yellow_durations': []}, ['red-fail:1']), ({'channels': [[1, 'R', True], [2, 'R', True], [3, 'GY', True]], 'compat': [[1, 2], [2, 3]], 'yellow_durations': []}, ['multi:3']), ({'channels': [[1, '', True], [2, 'Y', False], [3, 'RY', True]], 'compat': [[2, 1], [3, 1]], 'yellow_durations': [[3, 35]]}, ['multi:3', 'red-fail:1']), ({'channels': [[1, 'GY', True], [2, 'G', True], [3, '', True]], 'compat': [], 'yellow_durations': [[1, 26]]}, ['conflict:1-2', 'multi:1', 'red-fail:3', 'short-yellow:1']), ({'channels': [[1, '', True], [2, 'G', False], [3, 'G', True], [4, 'GY', False]], 'compat': [[2, 1], [2, 4]], 'yellow_durations': [[4, 27]]}, ['red-fail:1']), ({'channels': [[1, 'GY', True], [2, '', True], [3, 'R', True]], 'compat': [[3, 1], [3, 2]], 'yellow_durations': [[1, 35], [3, 35]]}, ['multi:1', 'red-fail:2'])], [({'channels': [[1, 'RY', True], [2, 'RG', True], [3, 'R', False]], 'compat': [[2, 1]], 'yellow_durations': [[2, 27]]}, ['multi:1', 'multi:2']), ({'channels': [[1, 'G', True], [2, 'R', True], [3, 'Y', True], [4, 'G', False]], 'compat': [[3, 1]], 'yellow_durations': [[2, 27]]}, []), ({'channels': [[1, 'GY', True], [2, 'G', True], [3, '', True]], 'compat': [], 'yellow_durations': [[1, 26]]}, ['conflict:1-2', 'multi:1', 'red-fail:3', 'short-yellow:1']), ({'channels': [[1, 'R', False], [2, 'R', True], [3, '', True], [4, 'R', True], [5, 'GY', True]], 'compat': [[1, 5], [2, 5], [3, 4]], 'yellow_durations': [[4, 28]]}, ['multi:5', 'red-fail:3']), ({'channels': [[1, 'R', True], [2, 'GY', True], [3, '', True], [4, 'GY', True], [5, 'R', True], [6, 'Y', False]], 'compat': [[1, 2], [3, 1], [5, 1], [4, 3], [5, 4]], 'yellow_durations': [[1, 35]]}, ['conflict:2-4', 'multi:2', 'multi:4', 'red-fail:3']), ({'channels': [[1, 'R', True], [2, 'G', True], [3, 'GY', True], [4, 'RG', False]], 'compat': [[4, 2]], 'yellow_durations': []}, ['conflict:2-3', 'multi:3']), ({'channels': [[1, 'G', True], [2, 'Y', True], [3, 'R', True], [4, '', True], [5, 'RG', True], [6, '', True]], 'compat': [[6, 2], [4, 5]], 'yellow_durations': [[1, 25], [3, 27], [5, 35]]}, ['conflict:1-2', 'conflict:1-5', 'conflict:2-5', 'multi:5', 'red-fail:4', 'red-fail:6', 'short-yellow:1']), ({'channels': [[1, 'Y', True], [2, '', True], [3, 'GY', True], [4, 'Y', True]], 'compat': [[1, 2], [4, 3]], 'yellow_durations': []}, ['conflict:1-3', 'conflict:1-4', 'multi:3', 'red-fail:2'])], [({'channels': [[1, 'RG', False], [2, 'R', False], [3, 'G', True]], 'compat': [[1, 2]], 'yellow_durations': []}, []), ({'channels': [[1, '', True], [2, 'R', False], [3, 'RY', False], [4, '', True], [5, 'GY', True], [6, 'Y', True]], 'compat': [[1, 2], [4, 1], [1, 5], [1, 6], [5, 2], [3, 5], [3, 6]], 'yellow_durations': [[4, 27], [5, 26]]}, ['conflict:5-6', 'multi:5', 'red-fail:1', 'red-fail:4', 'short-yellow:5']), ({'channels': [[1, 'Y', True], [2, 'G', True], [3, 'GY', True], [4, 'R', True], [5, 'R', True], [6, 'G', False]], 'compat': [[2, 1], [6, 1], [3, 2], [2, 4], [3, 4], [3, 6], [6, 5]], 'yellow_durations': []}, ['conflict:1-3', 'multi:3']), ({'channels': [[1, 'G', True], [2, 'R', True], [3, 'Y', True], [4, 'G', False]], 'compat': [[3, 1]], 'yellow_durations': [[2, 27]]}, []), ({'channels': [[1, 'GY', True], [2, 'G', True], [3, 'R', True], [4, 'RY', True]], 'compat': [[4, 1], [4, 2], [3, 4]], 'yellow_durations': [[3, 27]]}, ['conflict:1-2', 'multi:1', 'multi:4']), ({'channels': [[1, 'R', True], [2, 'R', False], [3, 'R', True], [4, 'R', True], [5, 'R', True], [6, 'R', True]], 'compat': [[4, 2], [2, 6], [3, 4], [5, 3], [6, 4]], 'yellow_durations': [[1, 26], [2, 35]]}, ['short-yellow:1']), ({'channels': [[1, 'GY', True], [2, 'G', True], [3, '', True]], 'compat': [], 'yellow_durations': [[1, 26]]}, ['conflict:1-2', 'multi:1', 'red-fail:3', 'short-yellow:1']), ({'channels': [[1, 'G', True], [2, 'Y', True], [3, 'R', True], [4, 'R', True]], 'compat': [[1, 2], [1, 3], [4, 1], [3, 4]], 'yellow_durations': [[1, 28], [4, 27]]}, [])], [({'channels': [[1, 'G', True], [2, '', True], [3, 'R', True]], 'compat': [], 'yellow_durations': [[1, 25]]}, ['red-fail:2', 'short-yellow:1']), ({'channels': [[1, 'G', True], [2, 'R', True], [3, 'Y', True], [4, 'G', False]], 'compat': [[3, 1]], 'yellow_durations': [[2, 27]]}, []), ({'channels': [[1, 'G', False], [2, 'G', True], [3, 'R', False], [4, 'R', True], [5, 'Y', False]], 'compat': [[1, 2], [1, 3], [5, 1], [3, 2], [5, 2]], 'yellow_durations': [[3, 28]]}, []), ({'channels': [[1, 'Y', False], [2, 'R', False], [3, 'GY', True], [4, 'R', False], [5, 'R', True]], 'compat': [[2, 1], [3, 1], [4, 1], [2, 5], [3, 5], [4, 5]], 'yellow_durations': [[1, 25]]}, ['multi:3', 'short-yellow:1']), ({'channels': [[1, 'RY', True], [2, 'R', True], [3, 'GY', True], [4, 'R', True], [5, 'GY', True], [6, 'GY', True]], 'compat': [[2, 1], [1, 4], [5, 1], [6, 1], [3, 2], [3, 5], [3, 6]], 'yellow_durations': [[2, 26], [3, 27], [4, 28]]}, ['conflict:1-3', 'conflict:5-6', 'multi:1', 'multi:3', 'multi:5', 'multi:6', 'short-yellow:2']), ({'channels': [[1, 'R', True], [2, 'G', True], [3, 'G', False]], 'compat': [], 'yellow_durations': []}, []), ({'channels': [[1, '', True], [2, 'G', True], [3, 'RG', True], [4, 'R', True]], 'compat': [[3, 2], [4, 2], [3, 4]], 'yellow_durations': [[1, 27]]}, ['multi:3', 'red-fail:1']), ({'channels': [[1, 'GY', True], [2, 'G', True], [3, '', True]], 'compat': [], 'yellow_durations': [[1, 26]]}, ['conflict:1-2', 'multi:1', 'red-fail:3', 'short-yellow:1'])]]\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":"20d855a1c5b8ccde48dbbe2d28d5ed3052527d54de324868057b55dacd1d48ef","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    ok = {(min(a, b), max(a, b)) for a, b in x['compat']}\n    faults = []\n    live = []\n    for ch, col, en in x['channels']:\n        if not en:\n            continue\n        if len(col) > 1:\n            faults.append('multi:%d' % ch)\n        if col == '':\n            faults.append('red-fail:%d' % ch)\n        if 'G' in col or 'Y' in col:\n            live.append(ch)\n    live.sort()\n    for i in range(len(live)):\n        for j in range(i + 1, len(live)):\n            if (live[i], live[j]) not in ok:\n                faults.append('conflict:%d-%d' % (live[i], live[j]))\n    for ch, tenths in x['yellow_durations']:\n        if tenths < 27:\n            faults.append('short-yellow:%d' % ch)\n    return sorted(faults)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[({'channels': [[1, 'RY', True], [2, 'RG', True], [3, '', False], [4, 'R', True], [5, 'RG', True], [6, 'GY', True]], 'compat': [[2, 3], [2, 5], [4, 6], [6, 5]], 'yellow_durations': [[2, 27], [4, 26]]}, ['conflict:1-2', 'conflict:1-5', 'conflict:1-6', 'conflict:2-6', 'multi:1', 'multi:2', 'multi:5', 'multi:6', 'short-yellow:4']), ({'channels': [[1, 'RG', False], [2, 'GY', True], [3, 'Y', True], [4, 'R', True]], 'compat': [[4, 1], [4, 2], [4, 3]], 'yellow_durations': [[1, 25], [2, 26], [4, 30]]}, ['conflict:2-3', 'multi:2', 'short-yellow:1', 'short-yellow:2']), ({'channels': [[1, 'G', True], [2, 'GY', True], [3, 'RY', True], [4, '', True], [5, 'R', True], [6, '', True]], 'compat': [[1, 3], [3, 4], [5, 4]], 'yellow_durations': []}, ['conflict:1-2', 'conflict:2-3', 'multi:2', 'multi:3', 'red-fail:4', 'red-fail:6']), ({'channels': [[1, 'GY', True], [2, 'G', True], [3, '', True]], 'compat': [], 'yellow_durations': [[1, 26]]}, ['conflict:1-2', 'multi:1', 'red-fail:3', 'short-yellow:1']), ({'channels': [[1, 'G', True], [2, 'R', True], [3, 'Y', True], [4, 'G', False]], 'compat': [[3, 1]], 'yellow_durations': [[2, 27]]}, []), ({'channels': [[1, 'G', True], [2, 'R', True], [3, '', True], [4, 'RY', True], [5, 'R', True]], 'compat': [[1, 3]], 'yellow_durations': [[1, 28], [3, 27], [5, 27]]}, ['conflict:1-4', 'multi:4', 'red-fail:3']), ({'channels': [[1, 'R', True], [2, 'Y', True], [3, 'RG', True], [4, 'Y', True], [5, 'R', True]], 'compat': [[4, 2], [2, 5], [3, 4], [3, 5]], 'yellow_durations': []}, ['conflict:2-3', 'multi:3']), ({'channels': [[1, '', True], [2, 'G', False], [3, 'RY', True], [4, 'GY', False], [5, 'R', False]], 'compat': [[2, 3], [2, 5], [4, 3]], 'yellow_durations': [[5, 28]]}, ['multi:3', 'red-fail:1'])], [({'channels': [[1, 'G', True], [2, 'R', True], [3, 'Y', True], [4, 'G', False]], 'compat': [[3, 1]], 'yellow_durations': [[2, 27]]}, []), ({'channels': [[1, 'RY', True], [2, 'Y', True], [3, 'R', True], [4, 'Y', True], [5, 'GY', True], [6, 'Y', True]], 'compat': [[4, 1], [5, 1], [4, 3]], 'yellow_durations': [[3, 27], [4, 26]]}, ['conflict:1-2', 'conflict:1-6', 'conflict:2-4', 'conflict:2-5', 'conflict:2-6', 'conflict:4-5', 'conflict:4-6', 'conflict:5-6', 'multi:1', 'multi:5', 'short-yellow:4']), ({'channels': [[1, '', True], [2, 'R', True], [3, 'G', True]], 'compat': [[3, 1], [2, 3]], 'yellow_durations': []}, ['red-fail:1']), ({'channels': [[1, 'R', True], [2, 'R', True], [3, 'GY', True]], 'compat': [[1, 2], [2, 3]], 'yellow_durations': []}, ['multi:3']), ({'channels': [[1, '', True], [2, 'Y', False], [3, 'RY', True]], 'compat': [[2, 1], [3, 1]], 'yellow_durations': [[3, 35]]}, ['multi:3', 'red-fail:1']), ({'channels': [[1, 'GY', True], [2, 'G', True], [3, '', True]], 'compat': [], 'yellow_durations': [[1, 26]]}, ['conflict:1-2', 'multi:1', 'red-fail:3', 'short-yellow:1']), ({'channels': [[1, '', True], [2, 'G', False], [3, 'G', True], [4, 'GY', False]], 'compat': [[2, 1], [2, 4]], 'yellow_durations': [[4, 27]]}, ['red-fail:1']), ({'channels': [[1, 'GY', True], [2, '', True], [3, 'R', True]], 'compat': [[3, 1], [3, 2]], 'yellow_durations': [[1, 35], [3, 35]]}, ['multi:1', 'red-fail:2'])], [({'channels': [[1, 'RY', True], [2, 'RG', True], [3, 'R', False]], 'compat': [[2, 1]], 'yellow_durations': [[2, 27]]}, ['multi:1', 'multi:2']), ({'channels': [[1, 'G', True], [2, 'R', True], [3, 'Y', True], [4, 'G', False]], 'compat': [[3, 1]], 'yellow_durations': [[2, 27]]}, []), ({'channels': [[1, 'GY', True], [2, 'G', True], [3, '', True]], 'compat': [], 'yellow_durations': [[1, 26]]}, ['conflict:1-2', 'multi:1', 'red-fail:3', 'short-yellow:1']), ({'channels': [[1, 'R', False], [2, 'R', True], [3, '', True], [4, 'R', True], [5, 'GY', True]], 'compat': [[1, 5], [2, 5], [3, 4]], 'yellow_durations': [[4, 28]]}, ['multi:5', 'red-fail:3']), ({'channels': [[1, 'R', True], [2, 'GY', True], [3, '', True], [4, 'GY', True], [5, 'R', True], [6, 'Y', False]], 'compat': [[1, 2], [3, 1], [5, 1], [4, 3], [5, 4]], 'yellow_durations': [[1, 35]]}, ['conflict:2-4', 'multi:2', 'multi:4', 'red-fail:3']), ({'channels': [[1, 'R', True], [2, 'G', True], [3, 'GY', True], [4, 'RG', False]], 'compat': [[4, 2]], 'yellow_durations': []}, ['conflict:2-3', 'multi:3']), ({'channels': [[1, 'G', True], [2, 'Y', True], [3, 'R', True], [4, '', True], [5, 'RG', True], [6, '', True]], 'compat': [[6, 2], [4, 5]], 'yellow_durations': [[1, 25], [3, 27], [5, 35]]}, ['conflict:1-2', 'conflict:1-5', 'conflict:2-5', 'multi:5', 'red-fail:4', 'red-fail:6', 'short-yellow:1']), ({'channels': [[1, 'Y', True], [2, '', True], [3, 'GY', True], [4, 'Y', True]], 'compat': [[1, 2], [4, 3]], 'yellow_durations': []}, ['conflict:1-3', 'conflict:1-4', 'multi:3', 'red-fail:2'])], [({'channels': [[1, 'RG', False], [2, 'R', False], [3, 'G', True]], 'compat': [[1, 2]], 'yellow_durations': []}, []), ({'channels': [[1, '', True], [2, 'R', False], [3, 'RY', False], [4, '', True], [5, 'GY', True], [6, 'Y', True]], 'compat': [[1, 2], [4, 1], [1, 5], [1, 6], [5, 2], [3, 5], [3, 6]], 'yellow_durations': [[4, 27], [5, 26]]}, ['conflict:5-6', 'multi:5', 'red-fail:1', 'red-fail:4', 'short-yellow:5']), ({'channels': [[1, 'Y', True], [2, 'G', True], [3, 'GY', True], [4, 'R', True], [5, 'R', True], [6, 'G', False]], 'compat': [[2, 1], [6, 1], [3, 2], [2, 4], [3, 4], [3, 6], [6, 5]], 'yellow_durations': []}, ['conflict:1-3', 'multi:3']), ({'channels': [[1, 'G', True], [2, 'R', True], [3, 'Y', True], [4, 'G', False]], 'compat': [[3, 1]], 'yellow_durations': [[2, 27]]}, []), ({'channels': [[1, 'GY', True], [2, 'G', True], [3, 'R', True], [4, 'RY', True]], 'compat': [[4, 1], [4, 2], [3, 4]], 'yellow_durations': [[3, 27]]}, ['conflict:1-2', 'multi:1', 'multi:4']), ({'channels': [[1, 'R', True], [2, 'R', False], [3, 'R', True], [4, 'R', True], [5, 'R', True], [6, 'R', True]], 'compat': [[4, 2], [2, 6], [3, 4], [5, 3], [6, 4]], 'yellow_durations': [[1, 26], [2, 35]]}, ['short-yellow:1']), ({'channels': [[1, 'GY', True], [2, 'G', True], [3, '', True]], 'compat': [], 'yellow_durations': [[1, 26]]}, ['conflict:1-2', 'multi:1', 'red-fail:3', 'short-yellow:1']), ({'channels': [[1, 'G', True], [2, 'Y', True], [3, 'R', True], [4, 'R', True]], 'compat': [[1, 2], [1, 3], [4, 1], [3, 4]], 'yellow_durations': [[1, 28], [4, 27]]}, [])], [({'channels': [[1, 'G', True], [2, '', True], [3, 'R', True]], 'compat': [], 'yellow_durations': [[1, 25]]}, ['red-fail:2', 'short-yellow:1']), ({'channels': [[1, 'G', True], [2, 'R', True], [3, 'Y', True], [4, 'G', False]], 'compat': [[3, 1]], 'yellow_durations': [[2, 27]]}, []), ({'channels': [[1, 'G', False], [2, 'G', True], [3, 'R', False], [4, 'R', True], [5, 'Y', False]], 'compat': [[1, 2], [1, 3], [5, 1], [3, 2], [5, 2]], 'yellow_durations': [[3, 28]]}, []), ({'channels': [[1, 'Y', False], [2, 'R', False], [3, 'GY', True], [4, 'R', False], [5, 'R', True]], 'compat': [[2, 1], [3, 1], [4, 1], [2, 5], [3, 5], [4, 5]], 'yellow_durations': [[1, 25]]}, ['multi:3', 'short-yellow:1']), ({'channels': [[1, 'RY', True], [2, 'R', True], [3, 'GY', True], [4, 'R', True], [5, 'GY', True], [6, 'GY', True]], 'compat': [[2, 1], [1, 4], [5, 1], [6, 1], [3, 2], [3, 5], [3, 6]], 'yellow_durations': [[2, 26], [3, 27], [4, 28]]}, ['conflict:1-3', 'conflict:5-6', 'multi:1', 'multi:3', 'multi:5', 'multi:6', 'short-yellow:2']), ({'channels': [[1, 'R', True], [2, 'G', True], [3, 'G', False]], 'compat': [], 'yellow_durations': []}, []), ({'channels': [[1, '', True], [2, 'G', True], [3, 'RG', True], [4, 'R', True]], 'compat': [[3, 2], [4, 2], [3, 4]], 'yellow_durations': [[1, 27]]}, ['multi:3', 'red-fail:1']), ({'channels': [[1, 'GY', True], [2, 'G', True], [3, '', True]], 'compat': [], 'yellow_durations': [[1, 26]]}, ['conflict:1-2', 'multi:1', 'red-fail:3', 'short-yellow:1'])]]\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-conflict-monitor-short-yellow","generated_at":"2026-09-29T14:48:00.935869+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 short yellow limit rule so that the step reads `if tenths < 27:`.","root_cause":"The inclusive comparison flags the permitted minimum yellow as a fault.","sha256":"a198c6bfdb0dcd1a11a4ef552b00c349e6f31fe3f62abd4e3034e388bf9e689b","title":"Conflict monitor fault scan: a yellow of exactly 2.7 s is flagged as short · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.887,"exit_code":1,"observations":[{"actual":["conflict:1-2","conflict:1-5","conflict:1-6","conflict:2-6","multi:1","multi:2","multi:5","multi:6","short-yellow:2","short-yellow:4"],"check":"timing oracle 0","expected":["conflict:1-2","conflict:1-5","conflict:1-6","conflict:2-6","multi:1","multi:2","multi:5","multi:6","short-yellow:4"],"passed":false},{"actual":["conflict:2-3","multi:2","short-yellow:1","short-yellow:2"],"check":"timing oracle 1","expected":["conflict:2-3","multi:2","short-yellow:1","short-yellow:2"],"passed":true},{"actual":["conflict:1-2","conflict:2-3","multi:2","multi:3","red-fail:4","red-fail:6"],"check":"timing oracle 2","expected":["conflict:1-2","conflict:2-3","multi:2","multi:3","red-fail:4","red-fail:6"],"passed":true},{"actual":["conflict:1-2","multi:1","red-fail:3","short-yellow:1"],"check":"timing oracle 3","expected":["conflict:1-2","multi:1","red-fail:3","short-yellow:1"],"passed":true},{"actual":["short-yellow:2"],"check":"timing oracle 4","expected":[],"passed":false},{"actual":["conflict:1-4","multi:4","red-fail:3","short-yellow:1","short-yellow:3","short-yellow:5"],"check":"timing oracle 5","expected":["conflict:1-4","multi:4","red-fail:3"],"passed":false},{"actual":["conflict:2-3","multi:3"],"check":"timing oracle 6","expected":["conflict:2-3","multi:3"],"passed":true},{"actual":["multi:3","red-fail:1","short-yellow:5"],"check":"timing oracle 7","expected":["multi:3","red-fail:1"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"timing oracle 0\", \"actual\": [\"conflict:1-2\", \"conflict:1-5\", \"conflict:1-6\", \"conflict:2-6\", \"multi:1\", \"multi:2\", \"multi:5\", \"multi:6\", \"short-yellow:2\", \"short-yellow:4\"], \"expected\": [\"conflict:1-2\", \"conflict:1-5\", \"conflict:1-6\", \"conflict:2-6\", \"multi:1\", \"multi:2\", \"multi:5\", \"multi:6\", \"short-yellow:4\"], \"passed\": false}, {\"check\": \"timing oracle 1\", \"actual\": [\"conflict:2-3\", \"multi:2\", \"short-yellow:1\", \"short-yellow:2\"], \"expected\": [\"conflict:2-3\", \"multi:2\", \"short-yellow:1\", \"short-yellow:2\"], \"passed\": true}, {\"check\": \"timing oracle 2\", \"actual\": [\"conflict:1-2\", \"conflict:2-3\", \"multi:2\", \"multi:3\", \"red-fail:4\", \"red-fail:6\"], \"expected\": [\"conflict:1-2\", \"conflict:2-3\", \"multi:2\", \"multi:3\", \"red-fail:4\", \"red-fail:6\"], \"passed\": true}, {\"check\": \"timing oracle 3\", \"actual\": [\"conflict:1-2\", \"multi:1\", \"red-fail:3\", \"short-yellow:1\"], \"expected\": [\"conflict:1-2\", \"multi:1\", \"red-fail:3\", \"short-yellow:1\"], \"passed\": true}, {\"check\": \"timing oracle 4\", \"actual\": [\"short-yellow:2\"], \"expected\": [], \"passed\": false}, {\"check\": \"timing oracle 5\", \"actual\": [\"conflict:1-4\", \"multi:4\", \"red-fail:3\", \"short-yellow:1\", \"short-yellow:3\", \"short-yellow:5\"], \"expected\": [\"conflict:1-4\", \"multi:4\", \"red-fail:3\"], \"passed\": false}, {\"check\": \"timing oracle 6\", \"actual\": [\"conflict:2-3\", \"multi:3\"], \"expected\": [\"conflict:2-3\", \"multi:3\"], \"passed\": true}, {\"check\": \"timing oracle 7\", \"actual\": [\"multi:3\", \"red-fail:1\", \"short-yellow:5\"], \"expected\": [\"multi:3\", \"red-fail:1\"], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.525,"exit_code":1,"observations":[{"actual":["conflict:1-2","conflict:1-5","conflict:1-6","conflict:2-6","multi:1","multi:2","multi:5","multi:6","short-yellow:2","short-yellow:4"],"check":"timing oracle 0","expected":["conflict:1-2","conflict:1-5","conflict:1-6","conflict:2-6","multi:1","multi:2","multi:5","multi:6","short-yellow:4"],"passed":false},{"actual":["conflict:2-3","multi:2","short-yellow:1","short-yellow:2"],"check":"timing oracle 1","expected":["conflict:2-3","multi:2","short-yellow:1","short-yellow:2"],"passed":true},{"actual":["conflict:1-2","conflict:2-3","multi:2","multi:3","red-fail:4","red-fail:6"],"check":"timing oracle 2","expected":["conflict:1-2","conflict:2-3","multi:2","multi:3","red-fail:4","red-fail:6"],"passed":true},{"actual":["conflict:1-2","multi:1","red-fail:3","short-yellow:1"],"check":"timing oracle 3","expected":["conflict:1-2","multi:1","red-fail:3","short-yellow:1"],"passed":true},{"actual":["short-yellow:2"],"check":"timing oracle 4","expected":[],"passed":false},{"actual":["conflict:1-4","multi:4","red-fail:3","short-yellow:3","short-yellow:5"],"check":"timing oracle 5","expected":["conflict:1-4","multi:4","red-fail:3"],"passed":false},{"actual":["conflict:2-3","multi:3"],"check":"timing oracle 6","expected":["conflict:2-3","multi:3"],"passed":true},{"actual":["multi:3","red-fail:1"],"check":"timing oracle 7","expected":["multi:3","red-fail:1"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"timing oracle 0\", \"actual\": [\"conflict:1-2\", \"conflict:1-5\", \"conflict:1-6\", \"conflict:2-6\", \"multi:1\", \"multi:2\", \"multi:5\", \"multi:6\", \"short-yellow:2\", \"short-yellow:4\"], \"expected\": [\"conflict:1-2\", \"conflict:1-5\", \"conflict:1-6\", \"conflict:2-6\", \"multi:1\", \"multi:2\", \"multi:5\", \"multi:6\", \"short-yellow:4\"], \"passed\": false}, {\"check\": \"timing oracle 1\", \"actual\": [\"conflict:2-3\", \"multi:2\", \"short-yellow:1\", \"short-yellow:2\"], \"expected\": [\"conflict:2-3\", \"multi:2\", \"short-yellow:1\", \"short-yellow:2\"], \"passed\": true}, {\"check\": \"timing oracle 2\", \"actual\": [\"conflict:1-2\", \"conflict:2-3\", \"multi:2\", \"multi:3\", \"red-fail:4\", \"red-fail:6\"], \"expected\": [\"conflict:1-2\", \"conflict:2-3\", \"multi:2\", \"multi:3\", \"red-fail:4\", \"red-fail:6\"], \"passed\": true}, {\"check\": \"timing oracle 3\", \"actual\": [\"conflict:1-2\", \"multi:1\", \"red-fail:3\", \"short-yellow:1\"], \"expected\": [\"conflict:1-2\", \"multi:1\", \"red-fail:3\", \"short-yellow:1\"], \"passed\": true}, {\"check\": \"timing oracle 4\", \"actual\": [\"short-yellow:2\"], \"expected\": [], \"passed\": false}, {\"check\": \"timing oracle 5\", \"actual\": [\"conflict:1-4\", \"multi:4\", \"red-fail:3\", \"short-yellow:3\", \"short-yellow:5\"], \"expected\": [\"conflict:1-4\", \"multi:4\", \"red-fail:3\"], \"passed\": false}, {\"check\": \"timing oracle 6\", \"actual\": [\"conflict:2-3\", \"multi:3\"], \"expected\": [\"conflict:2-3\", \"multi:3\"], \"passed\": true}, {\"check\": \"timing oracle 7\", \"actual\": [\"multi:3\", \"red-fail:1\"], \"expected\": [\"multi:3\", \"red-fail:1\"], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.648,"exit_code":0,"observations":[{"actual":["conflict:1-2","conflict:1-5","conflict:1-6","conflict:2-6","multi:1","multi:2","multi:5","multi:6","short-yellow:4"],"check":"timing oracle 0","expected":["conflict:1-2","conflict:1-5","conflict:1-6","conflict:2-6","multi:1","multi:2","multi:5","multi:6","short-yellow:4"],"passed":true},{"actual":["conflict:2-3","multi:2","short-yellow:1","short-yellow:2"],"check":"timing oracle 1","expected":["conflict:2-3","multi:2","short-yellow:1","short-yellow:2"],"passed":true},{"actual":["conflict:1-2","conflict:2-3","multi:2","multi:3","red-fail:4","red-fail:6"],"check":"timing oracle 2","expected":["conflict:1-2","conflict:2-3","multi:2","multi:3","red-fail:4","red-fail:6"],"passed":true},{"actual":["conflict:1-2","multi:1","red-fail:3","short-yellow:1"],"check":"timing oracle 3","expected":["conflict:1-2","multi:1","red-fail:3","short-yellow:1"],"passed":true},{"actual":[],"check":"timing oracle 4","expected":[],"passed":true},{"actual":["conflict:1-4","multi:4","red-fail:3"],"check":"timing oracle 5","expected":["conflict:1-4","multi:4","red-fail:3"],"passed":true},{"actual":["conflict:2-3","multi:3"],"check":"timing oracle 6","expected":["conflict:2-3","multi:3"],"passed":true},{"actual":["multi:3","red-fail:1"],"check":"timing oracle 7","expected":["multi:3","red-fail:1"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"timing oracle 0\", \"actual\": [\"conflict:1-2\", \"conflict:1-5\", \"conflict:1-6\", \"conflict:2-6\", \"multi:1\", \"multi:2\", \"multi:5\", \"multi:6\", \"short-yellow:4\"], \"expected\": [\"conflict:1-2\", \"conflict:1-5\", \"conflict:1-6\", \"conflict:2-6\", \"multi:1\", \"multi:2\", \"multi:5\", \"multi:6\", \"short-yellow:4\"], \"passed\": true}, {\"check\": \"timing oracle 1\", \"actual\": [\"conflict:2-3\", \"multi:2\", \"short-yellow:1\", \"short-yellow:2\"], \"expected\": [\"conflict:2-3\", \"multi:2\", \"short-yellow:1\", \"short-yellow:2\"], \"passed\": true}, {\"check\": \"timing oracle 2\", \"actual\": [\"conflict:1-2\", \"conflict:2-3\", \"multi:2\", \"multi:3\", \"red-fail:4\", \"red-fail:6\"], \"expected\": [\"conflict:1-2\", \"conflict:2-3\", \"multi:2\", \"multi:3\", \"red-fail:4\", \"red-fail:6\"], \"passed\": true}, {\"check\": \"timing oracle 3\", \"actual\": [\"conflict:1-2\", \"multi:1\", \"red-fail:3\", \"short-yellow:1\"], \"expected\": [\"conflict:1-2\", \"multi:1\", \"red-fail:3\", \"short-yellow:1\"], \"passed\": true}, {\"check\": \"timing oracle 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"timing oracle 5\", \"actual\": [\"conflict:1-4\", \"multi:4\", \"red-fail:3\"], \"expected\": [\"conflict:1-4\", \"multi:4\", \"red-fail:3\"], \"passed\": true}, {\"check\": \"timing oracle 6\", \"actual\": [\"conflict:2-3\", \"multi:3\"], \"expected\": [\"conflict:2-3\", \"multi:3\"], \"passed\": true}, {\"check\": \"timing oracle 7\", \"actual\": [\"multi:3\", \"red-fail:1\"], \"expected\": [\"multi:3\", \"red-fail:1\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}