{"abstract":"The protecting signal clears although the obstacle detector never confirmed the crossing empty.","category":"Railway interlocking logic","checks":8,"contract":"Strike-in at t0 starts amber; red follows 3 s later; entrance barriers are down 4 s after red plus lower_s; exit barriers 4 s after that. Half-barrier crossings are proven at entrance-down, four-quadrant crossings at exit-down. Train arrival is t0 + floor(distance*3.6/speed). The protecting signal clears at max(proven, obstacle clear) and never without an obstacle confirmation (None). warning_ok needs arrival-red >= min_warning_s and a clear time no later than arrival - sighting_s.","evaluation_group":"w2-railway_interlocking_logic-level-crossing-timeline","failed_approach":"Testing truthiness discards a legitimate confirmation at time zero.","family":"w2-railway_interlocking_logic-level-crossing-timeline-obstacle-confirmation","id":"FA-67006","implementations":{"attempt":{"sha256":"0c922f2286058a3622178f9e1c49c93b6bc1e3dcf0de124e8115e36a51ea6e9c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    t0 = x['strike_in_s']\n    arrive = t0 + (x['distance_m'] * 36) // (x['speed_kmh'] * 10)\n    red = t0 + 3\n    entry_down = red + 4 + x['lower_s']\n    exit_down = entry_down + 4\n    proved = exit_down if x['four_quadrant'] else entry_down\n    obstacle = x['obstacle_clear_s']\n    clear_sig = max(proved, obstacle) if obstacle else None\n    warning = arrive - red\n    ok = warning >= x['min_warning_s'] and clear_sig is not None and clear_sig <= arrive - x['sighting_s']\n    return {'arrive': arrive, 'proved': proved, 'signal_clear': clear_sig, 'warning_ok': ok}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: obstacle detector silent', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': None, 'warning_ok': False}), ('boundary: obstacle confirmed at strike-in', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': 15, 'warning_ok': True}), ('sampled regression 42', {'strike_in_s': 12, 'distance_m': 2400, 'speed_kmh': 160, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 35, 'sighting_s': 10}, {'arrive': 66, 'proved': 29, 'signal_clear': None, 'warning_ok': False}), ('control 9', {'strike_in_s': 0, 'distance_m': 800, 'speed_kmh': 40, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 5}, {'arrive': 72, 'proved': 19, 'signal_clear': 19, 'warning_ok': True}), ('boundary: fast train on a short approach', {'strike_in_s': 0, 'distance_m': 1000, 'speed_kmh': 160, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 25, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 22, 'proved': 15, 'signal_clear': 25, 'warning_ok': False}), ('control 1', {'strike_in_s': 5, 'distance_m': 800, 'speed_kmh': 60, 'lower_s': 10, 'four_quadrant': True, 'obstacle_clear_s': 40, 'min_warning_s': 20, 'sighting_s': 10}, {'arrive': 53, 'proved': 26, 'signal_clear': 40, 'warning_ok': True}), ('control 4', {'strike_in_s': 0, 'distance_m': 2400, 'speed_kmh': 120, 'lower_s': 10, 'four_quadrant': True, 'obstacle_clear_s': 60, 'min_warning_s': 35, 'sighting_s': 5}, {'arrive': 72, 'proved': 21, 'signal_clear': 60, 'warning_ok': True}), ('control 7', {'strike_in_s': 30, 'distance_m': 2000, 'speed_kmh': 160, 'lower_s': 6, 'four_quadrant': False, 'obstacle_clear_s': 40, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 75, 'proved': 43, 'signal_clear': 43, 'warning_ok': True})], [('regression: obstacle detector silent', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': None, 'warning_ok': False}), ('boundary: obstacle confirmed at strike-in', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': 15, 'warning_ok': True}), ('sampled regression 23', {'strike_in_s': 0, 'distance_m': 800, 'speed_kmh': 60, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 48, 'proved': 17, 'signal_clear': None, 'warning_ok': False}), ('control 76', {'strike_in_s': 30, 'distance_m': 1250, 'speed_kmh': 40, 'lower_s': 6, 'four_quadrant': True, 'obstacle_clear_s': 0, 'min_warning_s': 35, 'sighting_s': 15}, {'arrive': 142, 'proved': 47, 'signal_clear': 47, 'warning_ok': True}), ('boundary: four-quadrant proving', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': 25, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 19, 'signal_clear': 25, 'warning_ok': True}), ('control 12', {'strike_in_s': 12, 'distance_m': 800, 'speed_kmh': 60, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': 25, 'min_warning_s': 20, 'sighting_s': 5}, {'arrive': 60, 'proved': 31, 'signal_clear': 31, 'warning_ok': True}), ('control 15', {'strike_in_s': 5, 'distance_m': 2000, 'speed_kmh': 120, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': 30, 'min_warning_s': 27, 'sighting_s': 15}, {'arrive': 65, 'proved': 24, 'signal_clear': 30, 'warning_ok': True}), ('control 18', {'strike_in_s': 30, 'distance_m': 1000, 'speed_kmh': 160, 'lower_s': 6, 'four_quadrant': False, 'obstacle_clear_s': 25, 'min_warning_s': 20, 'sighting_s': 15}, {'arrive': 52, 'proved': 43, 'signal_clear': 43, 'warning_ok': False})], [('regression: obstacle detector silent', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': None, 'warning_ok': False}), ('boundary: obstacle confirmed at strike-in', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': 15, 'warning_ok': True}), ('sampled regression 13', {'strike_in_s': 30, 'distance_m': 2000, 'speed_kmh': 40, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': None, 'min_warning_s': 35, 'sighting_s': 15}, {'arrive': 210, 'proved': 49, 'signal_clear': None, 'warning_ok': False}), ('control 45', {'strike_in_s': 0, 'distance_m': 1000, 'speed_kmh': 90, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 35, 'sighting_s': 10}, {'arrive': 40, 'proved': 17, 'signal_clear': 17, 'warning_ok': True}), ('boundary: warning measured from red', {'strike_in_s': 0, 'distance_m': 1000, 'speed_kmh': 120, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 25, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 30, 'proved': 15, 'signal_clear': 25, 'warning_ok': False}), ('sampled regression 23', {'strike_in_s': 0, 'distance_m': 800, 'speed_kmh': 60, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 48, 'proved': 17, 'signal_clear': None, 'warning_ok': False}), ('control 26', {'strike_in_s': 0, 'distance_m': 1500, 'speed_kmh': 160, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': 25, 'min_warning_s': 20, 'sighting_s': 10}, {'arrive': 33, 'proved': 17, 'signal_clear': 25, 'warning_ok': False}), ('control 29', {'strike_in_s': 5, 'distance_m': 1250, 'speed_kmh': 120, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': 60, 'min_warning_s': 35, 'sighting_s': 10}, {'arrive': 42, 'proved': 24, 'signal_clear': 60, 'warning_ok': False})], [('regression: obstacle detector silent', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': None, 'warning_ok': False}), ('boundary: obstacle confirmed at strike-in', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': 15, 'warning_ok': True}), ('control 24', {'strike_in_s': 0, 'distance_m': 800, 'speed_kmh': 160, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 15}, {'arrive': 18, 'proved': 15, 'signal_clear': 15, 'warning_ok': False}), ('boundary: clear exactly at the sighting point', {'strike_in_s': 0, 'distance_m': 1000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 30, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 40, 'proved': 15, 'signal_clear': 30, 'warning_ok': True}), ('boundary: late obstacle confirmation', {'strike_in_s': 5, 'distance_m': 2400, 'speed_kmh': 120, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 60, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 77, 'proved': 20, 'signal_clear': 60, 'warning_ok': True}), ('control 34', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 160, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': 20, 'min_warning_s': 20, 'sighting_s': 5}, {'arrive': 45, 'proved': 17, 'signal_clear': 20, 'warning_ok': True}), ('control 37', {'strike_in_s': 30, 'distance_m': 800, 'speed_kmh': 160, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': 40, 'min_warning_s': 35, 'sighting_s': 15}, {'arrive': 48, 'proved': 49, 'signal_clear': 49, 'warning_ok': False}), ('control 40', {'strike_in_s': 12, 'distance_m': 800, 'speed_kmh': 160, 'lower_s': 6, 'four_quadrant': True, 'obstacle_clear_s': 40, 'min_warning_s': 35, 'sighting_s': 15}, {'arrive': 30, 'proved': 29, 'signal_clear': 40, 'warning_ok': False})], [('regression: obstacle detector silent', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': None, 'warning_ok': False}), ('boundary: obstacle confirmed at strike-in', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': 15, 'warning_ok': True}), ('sampled regression 80', {'strike_in_s': 30, 'distance_m': 800, 'speed_kmh': 120, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 15}, {'arrive': 54, 'proved': 49, 'signal_clear': None, 'warning_ok': False}), ('boundary: fast train on a short approach', {'strike_in_s': 0, 'distance_m': 1000, 'speed_kmh': 160, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 25, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 22, 'proved': 15, 'signal_clear': 25, 'warning_ok': False}), ('boundary: arrival rounding', {'strike_in_s': 0, 'distance_m': 1250, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 25, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 50, 'proved': 15, 'signal_clear': 25, 'warning_ok': True}), ('control 45', {'strike_in_s': 0, 'distance_m': 1000, 'speed_kmh': 90, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 35, 'sighting_s': 10}, {'arrive': 40, 'proved': 17, 'signal_clear': 17, 'warning_ok': True}), ('control 48', {'strike_in_s': 30, 'distance_m': 800, 'speed_kmh': 160, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': 30, 'min_warning_s': 20, 'sighting_s': 15}, {'arrive': 48, 'proved': 47, 'signal_clear': 47, 'warning_ok': False}), ('control 51', {'strike_in_s': 0, 'distance_m': 1250, 'speed_kmh': 90, 'lower_s': 10, 'four_quadrant': True, 'obstacle_clear_s': 20, 'min_warning_s': 20, 'sighting_s': 5}, {'arrive': 50, 'proved': 21, 'signal_clear': 21, 'warning_ok': True})]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, 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":"c5668c99503509381c5ca52552c86c5c60109ae3bbe8508cb39cb0e3b86be4da","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    t0 = x['strike_in_s']\n    arrive = t0 + (x['distance_m'] * 36) // (x['speed_kmh'] * 10)\n    red = t0 + 3\n    entry_down = red + 4 + x['lower_s']\n    exit_down = entry_down + 4\n    proved = exit_down if x['four_quadrant'] else entry_down\n    obstacle = x['obstacle_clear_s']\n    clear_sig = max(proved, obstacle or 0)\n    warning = arrive - red\n    ok = warning >= x['min_warning_s'] and clear_sig is not None and clear_sig <= arrive - x['sighting_s']\n    return {'arrive': arrive, 'proved': proved, 'signal_clear': clear_sig, 'warning_ok': ok}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: obstacle detector silent', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': None, 'warning_ok': False}), ('boundary: obstacle confirmed at strike-in', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': 15, 'warning_ok': True}), ('sampled regression 42', {'strike_in_s': 12, 'distance_m': 2400, 'speed_kmh': 160, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 35, 'sighting_s': 10}, {'arrive': 66, 'proved': 29, 'signal_clear': None, 'warning_ok': False}), ('control 9', {'strike_in_s': 0, 'distance_m': 800, 'speed_kmh': 40, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 5}, {'arrive': 72, 'proved': 19, 'signal_clear': 19, 'warning_ok': True}), ('boundary: fast train on a short approach', {'strike_in_s': 0, 'distance_m': 1000, 'speed_kmh': 160, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 25, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 22, 'proved': 15, 'signal_clear': 25, 'warning_ok': False}), ('control 1', {'strike_in_s': 5, 'distance_m': 800, 'speed_kmh': 60, 'lower_s': 10, 'four_quadrant': True, 'obstacle_clear_s': 40, 'min_warning_s': 20, 'sighting_s': 10}, {'arrive': 53, 'proved': 26, 'signal_clear': 40, 'warning_ok': True}), ('control 4', {'strike_in_s': 0, 'distance_m': 2400, 'speed_kmh': 120, 'lower_s': 10, 'four_quadrant': True, 'obstacle_clear_s': 60, 'min_warning_s': 35, 'sighting_s': 5}, {'arrive': 72, 'proved': 21, 'signal_clear': 60, 'warning_ok': True}), ('control 7', {'strike_in_s': 30, 'distance_m': 2000, 'speed_kmh': 160, 'lower_s': 6, 'four_quadrant': False, 'obstacle_clear_s': 40, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 75, 'proved': 43, 'signal_clear': 43, 'warning_ok': True})], [('regression: obstacle detector silent', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': None, 'warning_ok': False}), ('boundary: obstacle confirmed at strike-in', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': 15, 'warning_ok': True}), ('sampled regression 23', {'strike_in_s': 0, 'distance_m': 800, 'speed_kmh': 60, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 48, 'proved': 17, 'signal_clear': None, 'warning_ok': False}), ('control 76', {'strike_in_s': 30, 'distance_m': 1250, 'speed_kmh': 40, 'lower_s': 6, 'four_quadrant': True, 'obstacle_clear_s': 0, 'min_warning_s': 35, 'sighting_s': 15}, {'arrive': 142, 'proved': 47, 'signal_clear': 47, 'warning_ok': True}), ('boundary: four-quadrant proving', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': 25, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 19, 'signal_clear': 25, 'warning_ok': True}), ('control 12', {'strike_in_s': 12, 'distance_m': 800, 'speed_kmh': 60, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': 25, 'min_warning_s': 20, 'sighting_s': 5}, {'arrive': 60, 'proved': 31, 'signal_clear': 31, 'warning_ok': True}), ('control 15', {'strike_in_s': 5, 'distance_m': 2000, 'speed_kmh': 120, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': 30, 'min_warning_s': 27, 'sighting_s': 15}, {'arrive': 65, 'proved': 24, 'signal_clear': 30, 'warning_ok': True}), ('control 18', {'strike_in_s': 30, 'distance_m': 1000, 'speed_kmh': 160, 'lower_s': 6, 'four_quadrant': False, 'obstacle_clear_s': 25, 'min_warning_s': 20, 'sighting_s': 15}, {'arrive': 52, 'proved': 43, 'signal_clear': 43, 'warning_ok': False})], [('regression: obstacle detector silent', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': None, 'warning_ok': False}), ('boundary: obstacle confirmed at strike-in', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': 15, 'warning_ok': True}), ('sampled regression 13', {'strike_in_s': 30, 'distance_m': 2000, 'speed_kmh': 40, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': None, 'min_warning_s': 35, 'sighting_s': 15}, {'arrive': 210, 'proved': 49, 'signal_clear': None, 'warning_ok': False}), ('control 45', {'strike_in_s': 0, 'distance_m': 1000, 'speed_kmh': 90, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 35, 'sighting_s': 10}, {'arrive': 40, 'proved': 17, 'signal_clear': 17, 'warning_ok': True}), ('boundary: warning measured from red', {'strike_in_s': 0, 'distance_m': 1000, 'speed_kmh': 120, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 25, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 30, 'proved': 15, 'signal_clear': 25, 'warning_ok': False}), ('sampled regression 23', {'strike_in_s': 0, 'distance_m': 800, 'speed_kmh': 60, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 48, 'proved': 17, 'signal_clear': None, 'warning_ok': False}), ('control 26', {'strike_in_s': 0, 'distance_m': 1500, 'speed_kmh': 160, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': 25, 'min_warning_s': 20, 'sighting_s': 10}, {'arrive': 33, 'proved': 17, 'signal_clear': 25, 'warning_ok': False}), ('control 29', {'strike_in_s': 5, 'distance_m': 1250, 'speed_kmh': 120, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': 60, 'min_warning_s': 35, 'sighting_s': 10}, {'arrive': 42, 'proved': 24, 'signal_clear': 60, 'warning_ok': False})], [('regression: obstacle detector silent', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': None, 'warning_ok': False}), ('boundary: obstacle confirmed at strike-in', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': 15, 'warning_ok': True}), ('control 24', {'strike_in_s': 0, 'distance_m': 800, 'speed_kmh': 160, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 15}, {'arrive': 18, 'proved': 15, 'signal_clear': 15, 'warning_ok': False}), ('boundary: clear exactly at the sighting point', {'strike_in_s': 0, 'distance_m': 1000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 30, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 40, 'proved': 15, 'signal_clear': 30, 'warning_ok': True}), ('boundary: late obstacle confirmation', {'strike_in_s': 5, 'distance_m': 2400, 'speed_kmh': 120, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 60, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 77, 'proved': 20, 'signal_clear': 60, 'warning_ok': True}), ('control 34', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 160, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': 20, 'min_warning_s': 20, 'sighting_s': 5}, {'arrive': 45, 'proved': 17, 'signal_clear': 20, 'warning_ok': True}), ('control 37', {'strike_in_s': 30, 'distance_m': 800, 'speed_kmh': 160, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': 40, 'min_warning_s': 35, 'sighting_s': 15}, {'arrive': 48, 'proved': 49, 'signal_clear': 49, 'warning_ok': False}), ('control 40', {'strike_in_s': 12, 'distance_m': 800, 'speed_kmh': 160, 'lower_s': 6, 'four_quadrant': True, 'obstacle_clear_s': 40, 'min_warning_s': 35, 'sighting_s': 15}, {'arrive': 30, 'proved': 29, 'signal_clear': 40, 'warning_ok': False})], [('regression: obstacle detector silent', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': None, 'warning_ok': False}), ('boundary: obstacle confirmed at strike-in', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': 15, 'warning_ok': True}), ('sampled regression 80', {'strike_in_s': 30, 'distance_m': 800, 'speed_kmh': 120, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 15}, {'arrive': 54, 'proved': 49, 'signal_clear': None, 'warning_ok': False}), ('boundary: fast train on a short approach', {'strike_in_s': 0, 'distance_m': 1000, 'speed_kmh': 160, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 25, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 22, 'proved': 15, 'signal_clear': 25, 'warning_ok': False}), ('boundary: arrival rounding', {'strike_in_s': 0, 'distance_m': 1250, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 25, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 50, 'proved': 15, 'signal_clear': 25, 'warning_ok': True}), ('control 45', {'strike_in_s': 0, 'distance_m': 1000, 'speed_kmh': 90, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 35, 'sighting_s': 10}, {'arrive': 40, 'proved': 17, 'signal_clear': 17, 'warning_ok': True}), ('control 48', {'strike_in_s': 30, 'distance_m': 800, 'speed_kmh': 160, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': 30, 'min_warning_s': 20, 'sighting_s': 15}, {'arrive': 48, 'proved': 47, 'signal_clear': 47, 'warning_ok': False}), ('control 51', {'strike_in_s': 0, 'distance_m': 1250, 'speed_kmh': 90, 'lower_s': 10, 'four_quadrant': True, 'obstacle_clear_s': 20, 'min_warning_s': 20, 'sighting_s': 5}, {'arrive': 50, 'proved': 21, 'signal_clear': 21, 'warning_ok': True})]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, 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":"bb0133e39735608e86f59c4b575ee0d093a985444ba513ba638240467e917c0e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    t0 = x['strike_in_s']\n    arrive = t0 + (x['distance_m'] * 36) // (x['speed_kmh'] * 10)\n    red = t0 + 3\n    entry_down = red + 4 + x['lower_s']\n    exit_down = entry_down + 4\n    proved = exit_down if x['four_quadrant'] else entry_down\n    obstacle = x['obstacle_clear_s']\n    clear_sig = max(proved, obstacle) if obstacle is not None else None\n    warning = arrive - red\n    ok = warning >= x['min_warning_s'] and clear_sig is not None and clear_sig <= arrive - x['sighting_s']\n    return {'arrive': arrive, 'proved': proved, 'signal_clear': clear_sig, 'warning_ok': ok}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: obstacle detector silent', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': None, 'warning_ok': False}), ('boundary: obstacle confirmed at strike-in', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': 15, 'warning_ok': True}), ('sampled regression 42', {'strike_in_s': 12, 'distance_m': 2400, 'speed_kmh': 160, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 35, 'sighting_s': 10}, {'arrive': 66, 'proved': 29, 'signal_clear': None, 'warning_ok': False}), ('control 9', {'strike_in_s': 0, 'distance_m': 800, 'speed_kmh': 40, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 5}, {'arrive': 72, 'proved': 19, 'signal_clear': 19, 'warning_ok': True}), ('boundary: fast train on a short approach', {'strike_in_s': 0, 'distance_m': 1000, 'speed_kmh': 160, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 25, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 22, 'proved': 15, 'signal_clear': 25, 'warning_ok': False}), ('control 1', {'strike_in_s': 5, 'distance_m': 800, 'speed_kmh': 60, 'lower_s': 10, 'four_quadrant': True, 'obstacle_clear_s': 40, 'min_warning_s': 20, 'sighting_s': 10}, {'arrive': 53, 'proved': 26, 'signal_clear': 40, 'warning_ok': True}), ('control 4', {'strike_in_s': 0, 'distance_m': 2400, 'speed_kmh': 120, 'lower_s': 10, 'four_quadrant': True, 'obstacle_clear_s': 60, 'min_warning_s': 35, 'sighting_s': 5}, {'arrive': 72, 'proved': 21, 'signal_clear': 60, 'warning_ok': True}), ('control 7', {'strike_in_s': 30, 'distance_m': 2000, 'speed_kmh': 160, 'lower_s': 6, 'four_quadrant': False, 'obstacle_clear_s': 40, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 75, 'proved': 43, 'signal_clear': 43, 'warning_ok': True})], [('regression: obstacle detector silent', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': None, 'warning_ok': False}), ('boundary: obstacle confirmed at strike-in', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': 15, 'warning_ok': True}), ('sampled regression 23', {'strike_in_s': 0, 'distance_m': 800, 'speed_kmh': 60, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 48, 'proved': 17, 'signal_clear': None, 'warning_ok': False}), ('control 76', {'strike_in_s': 30, 'distance_m': 1250, 'speed_kmh': 40, 'lower_s': 6, 'four_quadrant': True, 'obstacle_clear_s': 0, 'min_warning_s': 35, 'sighting_s': 15}, {'arrive': 142, 'proved': 47, 'signal_clear': 47, 'warning_ok': True}), ('boundary: four-quadrant proving', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': 25, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 19, 'signal_clear': 25, 'warning_ok': True}), ('control 12', {'strike_in_s': 12, 'distance_m': 800, 'speed_kmh': 60, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': 25, 'min_warning_s': 20, 'sighting_s': 5}, {'arrive': 60, 'proved': 31, 'signal_clear': 31, 'warning_ok': True}), ('control 15', {'strike_in_s': 5, 'distance_m': 2000, 'speed_kmh': 120, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': 30, 'min_warning_s': 27, 'sighting_s': 15}, {'arrive': 65, 'proved': 24, 'signal_clear': 30, 'warning_ok': True}), ('control 18', {'strike_in_s': 30, 'distance_m': 1000, 'speed_kmh': 160, 'lower_s': 6, 'four_quadrant': False, 'obstacle_clear_s': 25, 'min_warning_s': 20, 'sighting_s': 15}, {'arrive': 52, 'proved': 43, 'signal_clear': 43, 'warning_ok': False})], [('regression: obstacle detector silent', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': None, 'warning_ok': False}), ('boundary: obstacle confirmed at strike-in', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': 15, 'warning_ok': True}), ('sampled regression 13', {'strike_in_s': 30, 'distance_m': 2000, 'speed_kmh': 40, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': None, 'min_warning_s': 35, 'sighting_s': 15}, {'arrive': 210, 'proved': 49, 'signal_clear': None, 'warning_ok': False}), ('control 45', {'strike_in_s': 0, 'distance_m': 1000, 'speed_kmh': 90, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 35, 'sighting_s': 10}, {'arrive': 40, 'proved': 17, 'signal_clear': 17, 'warning_ok': True}), ('boundary: warning measured from red', {'strike_in_s': 0, 'distance_m': 1000, 'speed_kmh': 120, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 25, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 30, 'proved': 15, 'signal_clear': 25, 'warning_ok': False}), ('sampled regression 23', {'strike_in_s': 0, 'distance_m': 800, 'speed_kmh': 60, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 48, 'proved': 17, 'signal_clear': None, 'warning_ok': False}), ('control 26', {'strike_in_s': 0, 'distance_m': 1500, 'speed_kmh': 160, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': 25, 'min_warning_s': 20, 'sighting_s': 10}, {'arrive': 33, 'proved': 17, 'signal_clear': 25, 'warning_ok': False}), ('control 29', {'strike_in_s': 5, 'distance_m': 1250, 'speed_kmh': 120, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': 60, 'min_warning_s': 35, 'sighting_s': 10}, {'arrive': 42, 'proved': 24, 'signal_clear': 60, 'warning_ok': False})], [('regression: obstacle detector silent', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': None, 'warning_ok': False}), ('boundary: obstacle confirmed at strike-in', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': 15, 'warning_ok': True}), ('control 24', {'strike_in_s': 0, 'distance_m': 800, 'speed_kmh': 160, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 15}, {'arrive': 18, 'proved': 15, 'signal_clear': 15, 'warning_ok': False}), ('boundary: clear exactly at the sighting point', {'strike_in_s': 0, 'distance_m': 1000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 30, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 40, 'proved': 15, 'signal_clear': 30, 'warning_ok': True}), ('boundary: late obstacle confirmation', {'strike_in_s': 5, 'distance_m': 2400, 'speed_kmh': 120, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 60, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 77, 'proved': 20, 'signal_clear': 60, 'warning_ok': True}), ('control 34', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 160, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': 20, 'min_warning_s': 20, 'sighting_s': 5}, {'arrive': 45, 'proved': 17, 'signal_clear': 20, 'warning_ok': True}), ('control 37', {'strike_in_s': 30, 'distance_m': 800, 'speed_kmh': 160, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': 40, 'min_warning_s': 35, 'sighting_s': 15}, {'arrive': 48, 'proved': 49, 'signal_clear': 49, 'warning_ok': False}), ('control 40', {'strike_in_s': 12, 'distance_m': 800, 'speed_kmh': 160, 'lower_s': 6, 'four_quadrant': True, 'obstacle_clear_s': 40, 'min_warning_s': 35, 'sighting_s': 15}, {'arrive': 30, 'proved': 29, 'signal_clear': 40, 'warning_ok': False})], [('regression: obstacle detector silent', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': None, 'warning_ok': False}), ('boundary: obstacle confirmed at strike-in', {'strike_in_s': 0, 'distance_m': 2000, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 80, 'proved': 15, 'signal_clear': 15, 'warning_ok': True}), ('sampled regression 80', {'strike_in_s': 30, 'distance_m': 800, 'speed_kmh': 120, 'lower_s': 8, 'four_quadrant': True, 'obstacle_clear_s': None, 'min_warning_s': 27, 'sighting_s': 15}, {'arrive': 54, 'proved': 49, 'signal_clear': None, 'warning_ok': False}), ('boundary: fast train on a short approach', {'strike_in_s': 0, 'distance_m': 1000, 'speed_kmh': 160, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 25, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 22, 'proved': 15, 'signal_clear': 25, 'warning_ok': False}), ('boundary: arrival rounding', {'strike_in_s': 0, 'distance_m': 1250, 'speed_kmh': 90, 'lower_s': 8, 'four_quadrant': False, 'obstacle_clear_s': 25, 'min_warning_s': 27, 'sighting_s': 10}, {'arrive': 50, 'proved': 15, 'signal_clear': 25, 'warning_ok': True}), ('control 45', {'strike_in_s': 0, 'distance_m': 1000, 'speed_kmh': 90, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': 0, 'min_warning_s': 35, 'sighting_s': 10}, {'arrive': 40, 'proved': 17, 'signal_clear': 17, 'warning_ok': True}), ('control 48', {'strike_in_s': 30, 'distance_m': 800, 'speed_kmh': 160, 'lower_s': 10, 'four_quadrant': False, 'obstacle_clear_s': 30, 'min_warning_s': 20, 'sighting_s': 15}, {'arrive': 48, 'proved': 47, 'signal_clear': 47, 'warning_ok': False}), ('control 51', {'strike_in_s': 0, 'distance_m': 1250, 'speed_kmh': 90, 'lower_s': 10, 'four_quadrant': True, 'obstacle_clear_s': 20, 'min_warning_s': 20, 'sighting_s': 5}, {'arrive': 50, 'proved': 21, 'signal_clear': 21, 'warning_ok': True})]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, 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":"Stipulated toy interlocking contract for a bounded teaching model; it makes no claim of conformance to any railway signalling standard and omits real safety cases. 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-railway_interlocking_logic-level-crossing-timeline-obstacle-confirmation","generated_at":"2026-09-29T14:47:48.817042+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Interlocking logic decides whether trains may be given authority; a wrong decision at this point either grants unsafe movements or strands traffic.","repair":"Keep the signal at danger (None) until the obstacle detector confirms.","root_cause":"A missing obstacle confirmation is coerced to time zero.","sha256":"19e00436ad501b7d23ad30e9946d64d392c5c0d79458c81dca09d38ecf8b7a38","title":"Level crossing warning timeline: obstacle confirmation · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.35,"exit_code":1,"observations":[{"actual":{"arrive":80,"proved":15,"signal_clear":null,"warning_ok":false},"check":"regression: obstacle detector silent","expected":{"arrive":80,"proved":15,"signal_clear":null,"warning_ok":false},"passed":true},{"actual":{"arrive":80,"proved":15,"signal_clear":null,"warning_ok":false},"check":"boundary: obstacle confirmed at strike-in","expected":{"arrive":80,"proved":15,"signal_clear":15,"warning_ok":true},"passed":false},{"actual":{"arrive":66,"proved":29,"signal_clear":null,"warning_ok":false},"check":"sampled regression 42","expected":{"arrive":66,"proved":29,"signal_clear":null,"warning_ok":false},"passed":true},{"actual":{"arrive":72,"proved":19,"signal_clear":null,"warning_ok":false},"check":"control 9","expected":{"arrive":72,"proved":19,"signal_clear":19,"warning_ok":true},"passed":false},{"actual":{"arrive":22,"proved":15,"signal_clear":25,"warning_ok":false},"check":"boundary: fast train on a short approach","expected":{"arrive":22,"proved":15,"signal_clear":25,"warning_ok":false},"passed":true},{"actual":{"arrive":53,"proved":26,"signal_clear":40,"warning_ok":true},"check":"control 1","expected":{"arrive":53,"proved":26,"signal_clear":40,"warning_ok":true},"passed":true},{"actual":{"arrive":72,"proved":21,"signal_clear":60,"warning_ok":true},"check":"control 4","expected":{"arrive":72,"proved":21,"signal_clear":60,"warning_ok":true},"passed":true},{"actual":{"arrive":75,"proved":43,"signal_clear":43,"warning_ok":true},"check":"control 7","expected":{"arrive":75,"proved":43,"signal_clear":43,"warning_ok":true},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: obstacle detector silent\", \"actual\": {\"arrive\": 80, \"proved\": 15, \"signal_clear\": null, \"warning_ok\": false}, \"expected\": {\"arrive\": 80, \"proved\": 15, \"signal_clear\": null, \"warning_ok\": false}, \"passed\": true}, {\"check\": \"boundary: obstacle confirmed at strike-in\", \"actual\": {\"arrive\": 80, \"proved\": 15, \"signal_clear\": null, \"warning_ok\": false}, \"expected\": {\"arrive\": 80, \"proved\": 15, \"signal_clear\": 15, \"warning_ok\": true}, \"passed\": false}, {\"check\": \"sampled regression 42\", \"actual\": {\"arrive\": 66, \"proved\": 29, \"signal_clear\": null, \"warning_ok\": false}, \"expected\": {\"arrive\": 66, \"proved\": 29, \"signal_clear\": null, \"warning_ok\": false}, \"passed\": true}, {\"check\": \"control 9\", \"actual\": {\"arrive\": 72, \"proved\": 19, \"signal_clear\": null, \"warning_ok\": false}, \"expected\": {\"arrive\": 72, \"proved\": 19, \"signal_clear\": 19, \"warning_ok\": true}, \"passed\": false}, {\"check\": \"boundary: fast train on a short approach\", \"actual\": {\"arrive\": 22, \"proved\": 15, \"signal_clear\": 25, \"warning_ok\": false}, \"expected\": {\"arrive\": 22, \"proved\": 15, \"signal_clear\": 25, \"warning_ok\": false}, \"passed\": true}, {\"check\": \"control 1\", \"actual\": {\"arrive\": 53, \"proved\": 26, \"signal_clear\": 40, \"warning_ok\": true}, \"expected\": {\"arrive\": 53, \"proved\": 26, \"signal_clear\": 40, \"warning_ok\": true}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"arrive\": 72, \"proved\": 21, \"signal_clear\": 60, \"warning_ok\": true}, \"expected\": {\"arrive\": 72, \"proved\": 21, \"signal_clear\": 60, \"warning_ok\": true}, \"passed\": true}, {\"check\": \"control 7\", \"actual\": {\"arrive\": 75, \"proved\": 43, \"signal_clear\": 43, \"warning_ok\": true}, \"expected\": {\"arrive\": 75, \"proved\": 43, \"signal_clear\": 43, \"warning_ok\": true}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.455,"exit_code":1,"observations":[{"actual":{"arrive":80,"proved":15,"signal_clear":15,"warning_ok":true},"check":"regression: obstacle detector silent","expected":{"arrive":80,"proved":15,"signal_clear":null,"warning_ok":false},"passed":false},{"actual":{"arrive":80,"proved":15,"signal_clear":15,"warning_ok":true},"check":"boundary: obstacle confirmed at strike-in","expected":{"arrive":80,"proved":15,"signal_clear":15,"warning_ok":true},"passed":true},{"actual":{"arrive":66,"proved":29,"signal_clear":29,"warning_ok":true},"check":"sampled regression 42","expected":{"arrive":66,"proved":29,"signal_clear":null,"warning_ok":false},"passed":false},{"actual":{"arrive":72,"proved":19,"signal_clear":19,"warning_ok":true},"check":"control 9","expected":{"arrive":72,"proved":19,"signal_clear":19,"warning_ok":true},"passed":true},{"actual":{"arrive":22,"proved":15,"signal_clear":25,"warning_ok":false},"check":"boundary: fast train on a short approach","expected":{"arrive":22,"proved":15,"signal_clear":25,"warning_ok":false},"passed":true},{"actual":{"arrive":53,"proved":26,"signal_clear":40,"warning_ok":true},"check":"control 1","expected":{"arrive":53,"proved":26,"signal_clear":40,"warning_ok":true},"passed":true},{"actual":{"arrive":72,"proved":21,"signal_clear":60,"warning_ok":true},"check":"control 4","expected":{"arrive":72,"proved":21,"signal_clear":60,"warning_ok":true},"passed":true},{"actual":{"arrive":75,"proved":43,"signal_clear":43,"warning_ok":true},"check":"control 7","expected":{"arrive":75,"proved":43,"signal_clear":43,"warning_ok":true},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: obstacle detector silent\", \"actual\": {\"arrive\": 80, \"proved\": 15, \"signal_clear\": 15, \"warning_ok\": true}, \"expected\": {\"arrive\": 80, \"proved\": 15, \"signal_clear\": null, \"warning_ok\": false}, \"passed\": false}, {\"check\": \"boundary: obstacle confirmed at strike-in\", \"actual\": {\"arrive\": 80, \"proved\": 15, \"signal_clear\": 15, \"warning_ok\": true}, \"expected\": {\"arrive\": 80, \"proved\": 15, \"signal_clear\": 15, \"warning_ok\": true}, \"passed\": true}, {\"check\": \"sampled regression 42\", \"actual\": {\"arrive\": 66, \"proved\": 29, \"signal_clear\": 29, \"warning_ok\": true}, \"expected\": {\"arrive\": 66, \"proved\": 29, \"signal_clear\": null, \"warning_ok\": false}, \"passed\": false}, {\"check\": \"control 9\", \"actual\": {\"arrive\": 72, \"proved\": 19, \"signal_clear\": 19, \"warning_ok\": true}, \"expected\": {\"arrive\": 72, \"proved\": 19, \"signal_clear\": 19, \"warning_ok\": true}, \"passed\": true}, {\"check\": \"boundary: fast train on a short approach\", \"actual\": {\"arrive\": 22, \"proved\": 15, \"signal_clear\": 25, \"warning_ok\": false}, \"expected\": {\"arrive\": 22, \"proved\": 15, \"signal_clear\": 25, \"warning_ok\": false}, \"passed\": true}, {\"check\": \"control 1\", \"actual\": {\"arrive\": 53, \"proved\": 26, \"signal_clear\": 40, \"warning_ok\": true}, \"expected\": {\"arrive\": 53, \"proved\": 26, \"signal_clear\": 40, \"warning_ok\": true}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"arrive\": 72, \"proved\": 21, \"signal_clear\": 60, \"warning_ok\": true}, \"expected\": {\"arrive\": 72, \"proved\": 21, \"signal_clear\": 60, \"warning_ok\": true}, \"passed\": true}, {\"check\": \"control 7\", \"actual\": {\"arrive\": 75, \"proved\": 43, \"signal_clear\": 43, \"warning_ok\": true}, \"expected\": {\"arrive\": 75, \"proved\": 43, \"signal_clear\": 43, \"warning_ok\": true}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":37.797,"exit_code":0,"observations":[{"actual":{"arrive":80,"proved":15,"signal_clear":null,"warning_ok":false},"check":"regression: obstacle detector silent","expected":{"arrive":80,"proved":15,"signal_clear":null,"warning_ok":false},"passed":true},{"actual":{"arrive":80,"proved":15,"signal_clear":15,"warning_ok":true},"check":"boundary: obstacle confirmed at strike-in","expected":{"arrive":80,"proved":15,"signal_clear":15,"warning_ok":true},"passed":true},{"actual":{"arrive":66,"proved":29,"signal_clear":null,"warning_ok":false},"check":"sampled regression 42","expected":{"arrive":66,"proved":29,"signal_clear":null,"warning_ok":false},"passed":true},{"actual":{"arrive":72,"proved":19,"signal_clear":19,"warning_ok":true},"check":"control 9","expected":{"arrive":72,"proved":19,"signal_clear":19,"warning_ok":true},"passed":true},{"actual":{"arrive":22,"proved":15,"signal_clear":25,"warning_ok":false},"check":"boundary: fast train on a short approach","expected":{"arrive":22,"proved":15,"signal_clear":25,"warning_ok":false},"passed":true},{"actual":{"arrive":53,"proved":26,"signal_clear":40,"warning_ok":true},"check":"control 1","expected":{"arrive":53,"proved":26,"signal_clear":40,"warning_ok":true},"passed":true},{"actual":{"arrive":72,"proved":21,"signal_clear":60,"warning_ok":true},"check":"control 4","expected":{"arrive":72,"proved":21,"signal_clear":60,"warning_ok":true},"passed":true},{"actual":{"arrive":75,"proved":43,"signal_clear":43,"warning_ok":true},"check":"control 7","expected":{"arrive":75,"proved":43,"signal_clear":43,"warning_ok":true},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: obstacle detector silent\", \"actual\": {\"arrive\": 80, \"proved\": 15, \"signal_clear\": null, \"warning_ok\": false}, \"expected\": {\"arrive\": 80, \"proved\": 15, \"signal_clear\": null, \"warning_ok\": false}, \"passed\": true}, {\"check\": \"boundary: obstacle confirmed at strike-in\", \"actual\": {\"arrive\": 80, \"proved\": 15, \"signal_clear\": 15, \"warning_ok\": true}, \"expected\": {\"arrive\": 80, \"proved\": 15, \"signal_clear\": 15, \"warning_ok\": true}, \"passed\": true}, {\"check\": \"sampled regression 42\", \"actual\": {\"arrive\": 66, \"proved\": 29, \"signal_clear\": null, \"warning_ok\": false}, \"expected\": {\"arrive\": 66, \"proved\": 29, \"signal_clear\": null, \"warning_ok\": false}, \"passed\": true}, {\"check\": \"control 9\", \"actual\": {\"arrive\": 72, \"proved\": 19, \"signal_clear\": 19, \"warning_ok\": true}, \"expected\": {\"arrive\": 72, \"proved\": 19, \"signal_clear\": 19, \"warning_ok\": true}, \"passed\": true}, {\"check\": \"boundary: fast train on a short approach\", \"actual\": {\"arrive\": 22, \"proved\": 15, \"signal_clear\": 25, \"warning_ok\": false}, \"expected\": {\"arrive\": 22, \"proved\": 15, \"signal_clear\": 25, \"warning_ok\": false}, \"passed\": true}, {\"check\": \"control 1\", \"actual\": {\"arrive\": 53, \"proved\": 26, \"signal_clear\": 40, \"warning_ok\": true}, \"expected\": {\"arrive\": 53, \"proved\": 26, \"signal_clear\": 40, \"warning_ok\": true}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"arrive\": 72, \"proved\": 21, \"signal_clear\": 60, \"warning_ok\": true}, \"expected\": {\"arrive\": 72, \"proved\": 21, \"signal_clear\": 60, \"warning_ok\": true}, \"passed\": true}, {\"check\": \"control 7\", \"actual\": {\"arrive\": 75, \"proved\": 43, \"signal_clear\": 43, \"warning_ok\": true}, \"expected\": {\"arrive\": 75, \"proved\": 43, \"signal_clear\": 43, \"warning_ok\": true}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}