{"abstract":"The permitted speed exceeds the line speed far from the target.","category":"Railway interlocking logic","checks":8,"contract":"Permitted speed at the train is sqrt(vt^2 + 2*a*d) with vt the target speed in m/s, a = decel_cms2/100 m/s^2 and d = max(distance - safety margin, 0); convert back to km/h, truncate to an integer (never round up) and cap at line speed. Action is brake if speed > permitted + brake margin, else warning if speed > permitted + warn margin, else none.","evaluation_group":"w2-railway_interlocking_logic-atp-braking-curve","failed_approach":"Adding the warning margin to the cap double-counts the margin.","family":"w2-railway_interlocking_logic-atp-braking-curve-line-speed-ceiling","id":"FA-67066","implementations":{"attempt":{"sha256":"f79d462cfe3ca4f20946cd27c9faeae65e83020dc6f772862c4d3731acaef81d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    vt = x['target_kmh'] / 3.6\n    d = max(x['distance_m'] - x['safety_margin_m'], 0)\n    a = x['decel_cms2'] / 100\n    vp = math.sqrt(vt * vt + 2 * a * d) * 3.6\n    permitted = min(int(vp), x['line_kmh'] + x['warn_margin_kmh'])\n    v = x['speed_kmh']\n    if v > permitted + x['brake_margin_kmh']:\n        action = 'brake'\n    elif v > permitted + x['warn_margin_kmh']:\n        action = 'warning'\n    else:\n        action = 'none'\n    return {'permitted': permitted, 'action': action}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: curve above line speed', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 150, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'brake'}), ('sampled regression 9', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 100, 'line_kmh': 160, 'speed_kmh': 45, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 160, 'action': 'none'}), ('sampled regression 5', {'target_kmh': 60, 'distance_m': 2500, 'safety_margin_m': 0, 'decel_cms2': 50, 'line_kmh': 160, 'speed_kmh': 124, 'warn_margin_kmh': 3, 'brake_margin_kmh': 8}, {'permitted': 160, 'action': 'none'}), ('boundary: stop target inside the margin', {'target_kmh': 0, 'distance_m': 40, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 10, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 0, 'action': 'warning'}), ('boundary: target speed release', {'target_kmh': 40, 'distance_m': 0, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 44, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 40, 'action': 'none'}), ('control 1', {'target_kmh': 0, 'distance_m': 0, 'safety_margin_m': 0, 'decel_cms2': 100, 'line_kmh': 160, 'speed_kmh': 139, 'warn_margin_kmh': 5, 'brake_margin_kmh': 15}, {'permitted': 0, 'action': 'brake'}), ('control 4', {'target_kmh': 0, 'distance_m': 100, 'safety_margin_m': 20, 'decel_cms2': 100, 'line_kmh': 80, 'speed_kmh': 136, 'warn_margin_kmh': 5, 'brake_margin_kmh': 15}, {'permitted': 45, 'action': 'brake'}), ('sampled regression 7', {'target_kmh': 40, 'distance_m': 2500, 'safety_margin_m': 20, 'decel_cms2': 50, 'line_kmh': 160, 'speed_kmh': 59, 'warn_margin_kmh': 3, 'brake_margin_kmh': 10}, {'permitted': 160, 'action': 'none'})], [('regression: curve above line speed', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 150, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'brake'}), ('sampled regression 32', {'target_kmh': 40, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 100, 'line_kmh': 120, 'speed_kmh': 134, 'warn_margin_kmh': 3, 'brake_margin_kmh': 15}, {'permitted': 120, 'action': 'warning'}), ('sampled regression 20', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 20, 'decel_cms2': 100, 'line_kmh': 160, 'speed_kmh': 69, 'warn_margin_kmh': 3, 'brake_margin_kmh': 15}, {'permitted': 160, 'action': 'none'}), ('boundary: curve below line speed', {'target_kmh': 0, 'distance_m': 600, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 100, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 99, 'action': 'none'}), ('boundary: warning boundary', {'target_kmh': 40, 'distance_m': 0, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 45, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 40, 'action': 'none'}), ('control 12', {'target_kmh': 40, 'distance_m': 600, 'safety_margin_m': 20, 'decel_cms2': 100, 'line_kmh': 160, 'speed_kmh': 133, 'warn_margin_kmh': 3, 'brake_margin_kmh': 15}, {'permitted': 128, 'action': 'warning'}), ('control 15', {'target_kmh': 0, 'distance_m': 600, 'safety_margin_m': 20, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 43, 'warn_margin_kmh': 3, 'brake_margin_kmh': 10}, {'permitted': 102, 'action': 'none'}), ('sampled regression 18', {'target_kmh': 60, 'distance_m': 1200, 'safety_margin_m': 20, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 6, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'none'})], [('regression: curve above line speed', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 150, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'brake'}), ('sampled regression 57', {'target_kmh': 40, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 100, 'line_kmh': 120, 'speed_kmh': 70, 'warn_margin_kmh': 3, 'brake_margin_kmh': 15}, {'permitted': 120, 'action': 'none'}), ('sampled regression 35', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 0, 'decel_cms2': 100, 'line_kmh': 120, 'speed_kmh': 12, 'warn_margin_kmh': 3, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'none'}), ('boundary: warning boundary', {'target_kmh': 40, 'distance_m': 0, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 45, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 40, 'action': 'none'}), ('boundary: brake boundary', {'target_kmh': 40, 'distance_m': 0, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 50, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 40, 'action': 'warning'}), ('control 23', {'target_kmh': 60, 'distance_m': 100, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 80, 'speed_kmh': 13, 'warn_margin_kmh': 5, 'brake_margin_kmh': 8}, {'permitted': 67, 'action': 'none'}), ('sampled regression 26', {'target_kmh': 60, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 86, 'warn_margin_kmh': 3, 'brake_margin_kmh': 10}, {'permitted': 160, 'action': 'none'}), ('control 29', {'target_kmh': 0, 'distance_m': 250, 'safety_margin_m': 0, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 4, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 67, 'action': 'none'})], [('regression: curve above line speed', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 150, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'brake'}), ('sampled regression 76', {'target_kmh': 40, 'distance_m': 1200, 'safety_margin_m': 0, 'decel_cms2': 70, 'line_kmh': 80, 'speed_kmh': 33, 'warn_margin_kmh': 3, 'brake_margin_kmh': 10}, {'permitted': 80, 'action': 'none'}), ('sampled regression 52', {'target_kmh': 40, 'distance_m': 250, 'safety_margin_m': 20, 'decel_cms2': 100, 'line_kmh': 80, 'speed_kmh': 50, 'warn_margin_kmh': 3, 'brake_margin_kmh': 10}, {'permitted': 80, 'action': 'none'}), ('boundary: between warning and brake', {'target_kmh': 40, 'distance_m': 0, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 48, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 40, 'action': 'warning'}), ('boundary: fractional permitted speed', {'target_kmh': 20, 'distance_m': 100, 'safety_margin_m': 0, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 60, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 47, 'action': 'brake'}), ('control 34', {'target_kmh': 0, 'distance_m': 0, 'safety_margin_m': 0, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 96, 'warn_margin_kmh': 5, 'brake_margin_kmh': 15}, {'permitted': 0, 'action': 'brake'}), ('sampled regression 37', {'target_kmh': 20, 'distance_m': 2500, 'safety_margin_m': 20, 'decel_cms2': 70, 'line_kmh': 80, 'speed_kmh': 168, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 80, 'action': 'brake'}), ('control 40', {'target_kmh': 0, 'distance_m': 600, 'safety_margin_m': 50, 'decel_cms2': 50, 'line_kmh': 160, 'speed_kmh': 70, 'warn_margin_kmh': 5, 'brake_margin_kmh': 15}, {'permitted': 84, 'action': 'none'})], [('regression: curve above line speed', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 150, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'brake'}), ('sampled regression 18', {'target_kmh': 60, 'distance_m': 1200, 'safety_margin_m': 20, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 6, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'none'}), ('sampled regression 64', {'target_kmh': 20, 'distance_m': 600, 'safety_margin_m': 20, 'decel_cms2': 70, 'line_kmh': 80, 'speed_kmh': 44, 'warn_margin_kmh': 3, 'brake_margin_kmh': 8}, {'permitted': 80, 'action': 'none'}), ('boundary: stop target inside the margin', {'target_kmh': 0, 'distance_m': 40, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 10, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 0, 'action': 'warning'}), ('boundary: target speed release', {'target_kmh': 40, 'distance_m': 0, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 44, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 40, 'action': 'none'}), ('control 45', {'target_kmh': 20, 'distance_m': 40, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 80, 'speed_kmh': 133, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 20, 'action': 'brake'}), ('control 48', {'target_kmh': 40, 'distance_m': 100, 'safety_margin_m': 20, 'decel_cms2': 100, 'line_kmh': 160, 'speed_kmh': 75, 'warn_margin_kmh': 3, 'brake_margin_kmh': 15}, {'permitted': 60, 'action': 'warning'}), ('control 51', {'target_kmh': 60, 'distance_m': 600, 'safety_margin_m': 0, 'decel_cms2': 50, 'line_kmh': 160, 'speed_kmh': 8, 'warn_margin_kmh': 5, 'brake_margin_kmh': 8}, {'permitted': 106, 'action': 'none'})]]\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":"8458382ffe888db9800240315acf034d7a6afd516ed9697ca2406d68a2ea95aa","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    vt = x['target_kmh'] / 3.6\n    d = max(x['distance_m'] - x['safety_margin_m'], 0)\n    a = x['decel_cms2'] / 100\n    vp = math.sqrt(vt * vt + 2 * a * d) * 3.6\n    permitted = int(vp)\n    v = x['speed_kmh']\n    if v > permitted + x['brake_margin_kmh']:\n        action = 'brake'\n    elif v > permitted + x['warn_margin_kmh']:\n        action = 'warning'\n    else:\n        action = 'none'\n    return {'permitted': permitted, 'action': action}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: curve above line speed', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 150, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'brake'}), ('sampled regression 9', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 100, 'line_kmh': 160, 'speed_kmh': 45, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 160, 'action': 'none'}), ('sampled regression 5', {'target_kmh': 60, 'distance_m': 2500, 'safety_margin_m': 0, 'decel_cms2': 50, 'line_kmh': 160, 'speed_kmh': 124, 'warn_margin_kmh': 3, 'brake_margin_kmh': 8}, {'permitted': 160, 'action': 'none'}), ('boundary: stop target inside the margin', {'target_kmh': 0, 'distance_m': 40, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 10, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 0, 'action': 'warning'}), ('boundary: target speed release', {'target_kmh': 40, 'distance_m': 0, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 44, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 40, 'action': 'none'}), ('control 1', {'target_kmh': 0, 'distance_m': 0, 'safety_margin_m': 0, 'decel_cms2': 100, 'line_kmh': 160, 'speed_kmh': 139, 'warn_margin_kmh': 5, 'brake_margin_kmh': 15}, {'permitted': 0, 'action': 'brake'}), ('control 4', {'target_kmh': 0, 'distance_m': 100, 'safety_margin_m': 20, 'decel_cms2': 100, 'line_kmh': 80, 'speed_kmh': 136, 'warn_margin_kmh': 5, 'brake_margin_kmh': 15}, {'permitted': 45, 'action': 'brake'}), ('sampled regression 7', {'target_kmh': 40, 'distance_m': 2500, 'safety_margin_m': 20, 'decel_cms2': 50, 'line_kmh': 160, 'speed_kmh': 59, 'warn_margin_kmh': 3, 'brake_margin_kmh': 10}, {'permitted': 160, 'action': 'none'})], [('regression: curve above line speed', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 150, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'brake'}), ('sampled regression 32', {'target_kmh': 40, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 100, 'line_kmh': 120, 'speed_kmh': 134, 'warn_margin_kmh': 3, 'brake_margin_kmh': 15}, {'permitted': 120, 'action': 'warning'}), ('sampled regression 20', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 20, 'decel_cms2': 100, 'line_kmh': 160, 'speed_kmh': 69, 'warn_margin_kmh': 3, 'brake_margin_kmh': 15}, {'permitted': 160, 'action': 'none'}), ('boundary: curve below line speed', {'target_kmh': 0, 'distance_m': 600, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 100, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 99, 'action': 'none'}), ('boundary: warning boundary', {'target_kmh': 40, 'distance_m': 0, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 45, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 40, 'action': 'none'}), ('control 12', {'target_kmh': 40, 'distance_m': 600, 'safety_margin_m': 20, 'decel_cms2': 100, 'line_kmh': 160, 'speed_kmh': 133, 'warn_margin_kmh': 3, 'brake_margin_kmh': 15}, {'permitted': 128, 'action': 'warning'}), ('control 15', {'target_kmh': 0, 'distance_m': 600, 'safety_margin_m': 20, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 43, 'warn_margin_kmh': 3, 'brake_margin_kmh': 10}, {'permitted': 102, 'action': 'none'}), ('sampled regression 18', {'target_kmh': 60, 'distance_m': 1200, 'safety_margin_m': 20, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 6, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'none'})], [('regression: curve above line speed', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 150, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'brake'}), ('sampled regression 57', {'target_kmh': 40, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 100, 'line_kmh': 120, 'speed_kmh': 70, 'warn_margin_kmh': 3, 'brake_margin_kmh': 15}, {'permitted': 120, 'action': 'none'}), ('sampled regression 35', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 0, 'decel_cms2': 100, 'line_kmh': 120, 'speed_kmh': 12, 'warn_margin_kmh': 3, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'none'}), ('boundary: warning boundary', {'target_kmh': 40, 'distance_m': 0, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 45, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 40, 'action': 'none'}), ('boundary: brake boundary', {'target_kmh': 40, 'distance_m': 0, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 50, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 40, 'action': 'warning'}), ('control 23', {'target_kmh': 60, 'distance_m': 100, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 80, 'speed_kmh': 13, 'warn_margin_kmh': 5, 'brake_margin_kmh': 8}, {'permitted': 67, 'action': 'none'}), ('sampled regression 26', {'target_kmh': 60, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 86, 'warn_margin_kmh': 3, 'brake_margin_kmh': 10}, {'permitted': 160, 'action': 'none'}), ('control 29', {'target_kmh': 0, 'distance_m': 250, 'safety_margin_m': 0, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 4, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 67, 'action': 'none'})], [('regression: curve above line speed', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 150, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'brake'}), ('sampled regression 76', {'target_kmh': 40, 'distance_m': 1200, 'safety_margin_m': 0, 'decel_cms2': 70, 'line_kmh': 80, 'speed_kmh': 33, 'warn_margin_kmh': 3, 'brake_margin_kmh': 10}, {'permitted': 80, 'action': 'none'}), ('sampled regression 52', {'target_kmh': 40, 'distance_m': 250, 'safety_margin_m': 20, 'decel_cms2': 100, 'line_kmh': 80, 'speed_kmh': 50, 'warn_margin_kmh': 3, 'brake_margin_kmh': 10}, {'permitted': 80, 'action': 'none'}), ('boundary: between warning and brake', {'target_kmh': 40, 'distance_m': 0, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 48, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 40, 'action': 'warning'}), ('boundary: fractional permitted speed', {'target_kmh': 20, 'distance_m': 100, 'safety_margin_m': 0, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 60, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 47, 'action': 'brake'}), ('control 34', {'target_kmh': 0, 'distance_m': 0, 'safety_margin_m': 0, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 96, 'warn_margin_kmh': 5, 'brake_margin_kmh': 15}, {'permitted': 0, 'action': 'brake'}), ('sampled regression 37', {'target_kmh': 20, 'distance_m': 2500, 'safety_margin_m': 20, 'decel_cms2': 70, 'line_kmh': 80, 'speed_kmh': 168, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 80, 'action': 'brake'}), ('control 40', {'target_kmh': 0, 'distance_m': 600, 'safety_margin_m': 50, 'decel_cms2': 50, 'line_kmh': 160, 'speed_kmh': 70, 'warn_margin_kmh': 5, 'brake_margin_kmh': 15}, {'permitted': 84, 'action': 'none'})], [('regression: curve above line speed', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 150, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'brake'}), ('sampled regression 18', {'target_kmh': 60, 'distance_m': 1200, 'safety_margin_m': 20, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 6, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'none'}), ('sampled regression 64', {'target_kmh': 20, 'distance_m': 600, 'safety_margin_m': 20, 'decel_cms2': 70, 'line_kmh': 80, 'speed_kmh': 44, 'warn_margin_kmh': 3, 'brake_margin_kmh': 8}, {'permitted': 80, 'action': 'none'}), ('boundary: stop target inside the margin', {'target_kmh': 0, 'distance_m': 40, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 10, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 0, 'action': 'warning'}), ('boundary: target speed release', {'target_kmh': 40, 'distance_m': 0, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 44, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 40, 'action': 'none'}), ('control 45', {'target_kmh': 20, 'distance_m': 40, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 80, 'speed_kmh': 133, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 20, 'action': 'brake'}), ('control 48', {'target_kmh': 40, 'distance_m': 100, 'safety_margin_m': 20, 'decel_cms2': 100, 'line_kmh': 160, 'speed_kmh': 75, 'warn_margin_kmh': 3, 'brake_margin_kmh': 15}, {'permitted': 60, 'action': 'warning'}), ('control 51', {'target_kmh': 60, 'distance_m': 600, 'safety_margin_m': 0, 'decel_cms2': 50, 'line_kmh': 160, 'speed_kmh': 8, 'warn_margin_kmh': 5, 'brake_margin_kmh': 8}, {'permitted': 106, 'action': 'none'})]]\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":"d12ea15ad73f9f778f6363db0a8b64e2dd7bb0abc90d27bc5a753c3271772b1b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    vt = x['target_kmh'] / 3.6\n    d = max(x['distance_m'] - x['safety_margin_m'], 0)\n    a = x['decel_cms2'] / 100\n    vp = math.sqrt(vt * vt + 2 * a * d) * 3.6\n    permitted = min(int(vp), x['line_kmh'])\n    v = x['speed_kmh']\n    if v > permitted + x['brake_margin_kmh']:\n        action = 'brake'\n    elif v > permitted + x['warn_margin_kmh']:\n        action = 'warning'\n    else:\n        action = 'none'\n    return {'permitted': permitted, 'action': action}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: curve above line speed', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 150, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'brake'}), ('sampled regression 9', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 100, 'line_kmh': 160, 'speed_kmh': 45, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 160, 'action': 'none'}), ('sampled regression 5', {'target_kmh': 60, 'distance_m': 2500, 'safety_margin_m': 0, 'decel_cms2': 50, 'line_kmh': 160, 'speed_kmh': 124, 'warn_margin_kmh': 3, 'brake_margin_kmh': 8}, {'permitted': 160, 'action': 'none'}), ('boundary: stop target inside the margin', {'target_kmh': 0, 'distance_m': 40, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 10, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 0, 'action': 'warning'}), ('boundary: target speed release', {'target_kmh': 40, 'distance_m': 0, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 44, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 40, 'action': 'none'}), ('control 1', {'target_kmh': 0, 'distance_m': 0, 'safety_margin_m': 0, 'decel_cms2': 100, 'line_kmh': 160, 'speed_kmh': 139, 'warn_margin_kmh': 5, 'brake_margin_kmh': 15}, {'permitted': 0, 'action': 'brake'}), ('control 4', {'target_kmh': 0, 'distance_m': 100, 'safety_margin_m': 20, 'decel_cms2': 100, 'line_kmh': 80, 'speed_kmh': 136, 'warn_margin_kmh': 5, 'brake_margin_kmh': 15}, {'permitted': 45, 'action': 'brake'}), ('sampled regression 7', {'target_kmh': 40, 'distance_m': 2500, 'safety_margin_m': 20, 'decel_cms2': 50, 'line_kmh': 160, 'speed_kmh': 59, 'warn_margin_kmh': 3, 'brake_margin_kmh': 10}, {'permitted': 160, 'action': 'none'})], [('regression: curve above line speed', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 150, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'brake'}), ('sampled regression 32', {'target_kmh': 40, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 100, 'line_kmh': 120, 'speed_kmh': 134, 'warn_margin_kmh': 3, 'brake_margin_kmh': 15}, {'permitted': 120, 'action': 'warning'}), ('sampled regression 20', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 20, 'decel_cms2': 100, 'line_kmh': 160, 'speed_kmh': 69, 'warn_margin_kmh': 3, 'brake_margin_kmh': 15}, {'permitted': 160, 'action': 'none'}), ('boundary: curve below line speed', {'target_kmh': 0, 'distance_m': 600, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 100, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 99, 'action': 'none'}), ('boundary: warning boundary', {'target_kmh': 40, 'distance_m': 0, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 45, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 40, 'action': 'none'}), ('control 12', {'target_kmh': 40, 'distance_m': 600, 'safety_margin_m': 20, 'decel_cms2': 100, 'line_kmh': 160, 'speed_kmh': 133, 'warn_margin_kmh': 3, 'brake_margin_kmh': 15}, {'permitted': 128, 'action': 'warning'}), ('control 15', {'target_kmh': 0, 'distance_m': 600, 'safety_margin_m': 20, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 43, 'warn_margin_kmh': 3, 'brake_margin_kmh': 10}, {'permitted': 102, 'action': 'none'}), ('sampled regression 18', {'target_kmh': 60, 'distance_m': 1200, 'safety_margin_m': 20, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 6, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'none'})], [('regression: curve above line speed', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 150, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'brake'}), ('sampled regression 57', {'target_kmh': 40, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 100, 'line_kmh': 120, 'speed_kmh': 70, 'warn_margin_kmh': 3, 'brake_margin_kmh': 15}, {'permitted': 120, 'action': 'none'}), ('sampled regression 35', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 0, 'decel_cms2': 100, 'line_kmh': 120, 'speed_kmh': 12, 'warn_margin_kmh': 3, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'none'}), ('boundary: warning boundary', {'target_kmh': 40, 'distance_m': 0, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 45, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 40, 'action': 'none'}), ('boundary: brake boundary', {'target_kmh': 40, 'distance_m': 0, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 50, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 40, 'action': 'warning'}), ('control 23', {'target_kmh': 60, 'distance_m': 100, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 80, 'speed_kmh': 13, 'warn_margin_kmh': 5, 'brake_margin_kmh': 8}, {'permitted': 67, 'action': 'none'}), ('sampled regression 26', {'target_kmh': 60, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 86, 'warn_margin_kmh': 3, 'brake_margin_kmh': 10}, {'permitted': 160, 'action': 'none'}), ('control 29', {'target_kmh': 0, 'distance_m': 250, 'safety_margin_m': 0, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 4, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 67, 'action': 'none'})], [('regression: curve above line speed', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 150, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'brake'}), ('sampled regression 76', {'target_kmh': 40, 'distance_m': 1200, 'safety_margin_m': 0, 'decel_cms2': 70, 'line_kmh': 80, 'speed_kmh': 33, 'warn_margin_kmh': 3, 'brake_margin_kmh': 10}, {'permitted': 80, 'action': 'none'}), ('sampled regression 52', {'target_kmh': 40, 'distance_m': 250, 'safety_margin_m': 20, 'decel_cms2': 100, 'line_kmh': 80, 'speed_kmh': 50, 'warn_margin_kmh': 3, 'brake_margin_kmh': 10}, {'permitted': 80, 'action': 'none'}), ('boundary: between warning and brake', {'target_kmh': 40, 'distance_m': 0, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 48, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 40, 'action': 'warning'}), ('boundary: fractional permitted speed', {'target_kmh': 20, 'distance_m': 100, 'safety_margin_m': 0, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 60, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 47, 'action': 'brake'}), ('control 34', {'target_kmh': 0, 'distance_m': 0, 'safety_margin_m': 0, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 96, 'warn_margin_kmh': 5, 'brake_margin_kmh': 15}, {'permitted': 0, 'action': 'brake'}), ('sampled regression 37', {'target_kmh': 20, 'distance_m': 2500, 'safety_margin_m': 20, 'decel_cms2': 70, 'line_kmh': 80, 'speed_kmh': 168, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 80, 'action': 'brake'}), ('control 40', {'target_kmh': 0, 'distance_m': 600, 'safety_margin_m': 50, 'decel_cms2': 50, 'line_kmh': 160, 'speed_kmh': 70, 'warn_margin_kmh': 5, 'brake_margin_kmh': 15}, {'permitted': 84, 'action': 'none'})], [('regression: curve above line speed', {'target_kmh': 0, 'distance_m': 2500, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 150, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'brake'}), ('sampled regression 18', {'target_kmh': 60, 'distance_m': 1200, 'safety_margin_m': 20, 'decel_cms2': 70, 'line_kmh': 120, 'speed_kmh': 6, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 120, 'action': 'none'}), ('sampled regression 64', {'target_kmh': 20, 'distance_m': 600, 'safety_margin_m': 20, 'decel_cms2': 70, 'line_kmh': 80, 'speed_kmh': 44, 'warn_margin_kmh': 3, 'brake_margin_kmh': 8}, {'permitted': 80, 'action': 'none'}), ('boundary: stop target inside the margin', {'target_kmh': 0, 'distance_m': 40, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 10, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 0, 'action': 'warning'}), ('boundary: target speed release', {'target_kmh': 40, 'distance_m': 0, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 160, 'speed_kmh': 44, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 40, 'action': 'none'}), ('control 45', {'target_kmh': 20, 'distance_m': 40, 'safety_margin_m': 50, 'decel_cms2': 70, 'line_kmh': 80, 'speed_kmh': 133, 'warn_margin_kmh': 5, 'brake_margin_kmh': 10}, {'permitted': 20, 'action': 'brake'}), ('control 48', {'target_kmh': 40, 'distance_m': 100, 'safety_margin_m': 20, 'decel_cms2': 100, 'line_kmh': 160, 'speed_kmh': 75, 'warn_margin_kmh': 3, 'brake_margin_kmh': 15}, {'permitted': 60, 'action': 'warning'}), ('control 51', {'target_kmh': 60, 'distance_m': 600, 'safety_margin_m': 0, 'decel_cms2': 50, 'line_kmh': 160, 'speed_kmh': 8, 'warn_margin_kmh': 5, 'brake_margin_kmh': 8}, {'permitted': 106, 'action': 'none'})]]\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-atp-braking-curve-line-speed-ceiling","generated_at":"2026-09-29T14:47:49.402064+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":"Cap the permitted speed at the line speed.","root_cause":"The braking-curve speed is not capped by the line speed.","sha256":"3422619bbfed7de988e5bdd6fc474feff20739e722478a00b4024ea7c7bb36aa","title":"ATP braking curve supervision: line speed ceiling · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":37.993,"exit_code":1,"observations":[{"actual":{"action":"brake","permitted":125},"check":"regression: curve above line speed","expected":{"action":"brake","permitted":120},"passed":false},{"actual":{"action":"none","permitted":165},"check":"sampled regression 9","expected":{"action":"none","permitted":160},"passed":false},{"actual":{"action":"none","permitted":163},"check":"sampled regression 5","expected":{"action":"none","permitted":160},"passed":false},{"actual":{"action":"warning","permitted":0},"check":"boundary: stop target inside the margin","expected":{"action":"warning","permitted":0},"passed":true},{"actual":{"action":"none","permitted":40},"check":"boundary: target speed release","expected":{"action":"none","permitted":40},"passed":true},{"actual":{"action":"brake","permitted":0},"check":"control 1","expected":{"action":"brake","permitted":0},"passed":true},{"actual":{"action":"brake","permitted":45},"check":"control 4","expected":{"action":"brake","permitted":45},"passed":true},{"actual":{"action":"none","permitted":163},"check":"sampled regression 7","expected":{"action":"none","permitted":160},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: curve above line speed\", \"actual\": {\"permitted\": 125, \"action\": \"brake\"}, \"expected\": {\"permitted\": 120, \"action\": \"brake\"}, \"passed\": false}, {\"check\": \"sampled regression 9\", \"actual\": {\"permitted\": 165, \"action\": \"none\"}, \"expected\": {\"permitted\": 160, \"action\": \"none\"}, \"passed\": false}, {\"check\": \"sampled regression 5\", \"actual\": {\"permitted\": 163, \"action\": \"none\"}, \"expected\": {\"permitted\": 160, \"action\": \"none\"}, \"passed\": false}, {\"check\": \"boundary: stop target inside the margin\", \"actual\": {\"permitted\": 0, \"action\": \"warning\"}, \"expected\": {\"permitted\": 0, \"action\": \"warning\"}, \"passed\": true}, {\"check\": \"boundary: target speed release\", \"actual\": {\"permitted\": 40, \"action\": \"none\"}, \"expected\": {\"permitted\": 40, \"action\": \"none\"}, \"passed\": true}, {\"check\": \"control 1\", \"actual\": {\"permitted\": 0, \"action\": \"brake\"}, \"expected\": {\"permitted\": 0, \"action\": \"brake\"}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"permitted\": 45, \"action\": \"brake\"}, \"expected\": {\"permitted\": 45, \"action\": \"brake\"}, \"passed\": true}, {\"check\": \"sampled regression 7\", \"actual\": {\"permitted\": 163, \"action\": \"none\"}, \"expected\": {\"permitted\": 160, \"action\": \"none\"}, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.855,"exit_code":1,"observations":[{"actual":{"action":"none","permitted":210},"check":"regression: curve above line speed","expected":{"action":"brake","permitted":120},"passed":false},{"actual":{"action":"none","permitted":252},"check":"sampled regression 9","expected":{"action":"none","permitted":160},"passed":false},{"actual":{"action":"none","permitted":189},"check":"sampled regression 5","expected":{"action":"none","permitted":160},"passed":false},{"actual":{"action":"warning","permitted":0},"check":"boundary: stop target inside the margin","expected":{"action":"warning","permitted":0},"passed":true},{"actual":{"action":"none","permitted":40},"check":"boundary: target speed release","expected":{"action":"none","permitted":40},"passed":true},{"actual":{"action":"brake","permitted":0},"check":"control 1","expected":{"action":"brake","permitted":0},"passed":true},{"actual":{"action":"brake","permitted":45},"check":"control 4","expected":{"action":"brake","permitted":45},"passed":true},{"actual":{"action":"none","permitted":183},"check":"sampled regression 7","expected":{"action":"none","permitted":160},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: curve above line speed\", \"actual\": {\"permitted\": 210, \"action\": \"none\"}, \"expected\": {\"permitted\": 120, \"action\": \"brake\"}, \"passed\": false}, {\"check\": \"sampled regression 9\", \"actual\": {\"permitted\": 252, \"action\": \"none\"}, \"expected\": {\"permitted\": 160, \"action\": \"none\"}, \"passed\": false}, {\"check\": \"sampled regression 5\", \"actual\": {\"permitted\": 189, \"action\": \"none\"}, \"expected\": {\"permitted\": 160, \"action\": \"none\"}, \"passed\": false}, {\"check\": \"boundary: stop target inside the margin\", \"actual\": {\"permitted\": 0, \"action\": \"warning\"}, \"expected\": {\"permitted\": 0, \"action\": \"warning\"}, \"passed\": true}, {\"check\": \"boundary: target speed release\", \"actual\": {\"permitted\": 40, \"action\": \"none\"}, \"expected\": {\"permitted\": 40, \"action\": \"none\"}, \"passed\": true}, {\"check\": \"control 1\", \"actual\": {\"permitted\": 0, \"action\": \"brake\"}, \"expected\": {\"permitted\": 0, \"action\": \"brake\"}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"permitted\": 45, \"action\": \"brake\"}, \"expected\": {\"permitted\": 45, \"action\": \"brake\"}, \"passed\": true}, {\"check\": \"sampled regression 7\", \"actual\": {\"permitted\": 183, \"action\": \"none\"}, \"expected\": {\"permitted\": 160, \"action\": \"none\"}, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.166,"exit_code":0,"observations":[{"actual":{"action":"brake","permitted":120},"check":"regression: curve above line speed","expected":{"action":"brake","permitted":120},"passed":true},{"actual":{"action":"none","permitted":160},"check":"sampled regression 9","expected":{"action":"none","permitted":160},"passed":true},{"actual":{"action":"none","permitted":160},"check":"sampled regression 5","expected":{"action":"none","permitted":160},"passed":true},{"actual":{"action":"warning","permitted":0},"check":"boundary: stop target inside the margin","expected":{"action":"warning","permitted":0},"passed":true},{"actual":{"action":"none","permitted":40},"check":"boundary: target speed release","expected":{"action":"none","permitted":40},"passed":true},{"actual":{"action":"brake","permitted":0},"check":"control 1","expected":{"action":"brake","permitted":0},"passed":true},{"actual":{"action":"brake","permitted":45},"check":"control 4","expected":{"action":"brake","permitted":45},"passed":true},{"actual":{"action":"none","permitted":160},"check":"sampled regression 7","expected":{"action":"none","permitted":160},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: curve above line speed\", \"actual\": {\"permitted\": 120, \"action\": \"brake\"}, \"expected\": {\"permitted\": 120, \"action\": \"brake\"}, \"passed\": true}, {\"check\": \"sampled regression 9\", \"actual\": {\"permitted\": 160, \"action\": \"none\"}, \"expected\": {\"permitted\": 160, \"action\": \"none\"}, \"passed\": true}, {\"check\": \"sampled regression 5\", \"actual\": {\"permitted\": 160, \"action\": \"none\"}, \"expected\": {\"permitted\": 160, \"action\": \"none\"}, \"passed\": true}, {\"check\": \"boundary: stop target inside the margin\", \"actual\": {\"permitted\": 0, \"action\": \"warning\"}, \"expected\": {\"permitted\": 0, \"action\": \"warning\"}, \"passed\": true}, {\"check\": \"boundary: target speed release\", \"actual\": {\"permitted\": 40, \"action\": \"none\"}, \"expected\": {\"permitted\": 40, \"action\": \"none\"}, \"passed\": true}, {\"check\": \"control 1\", \"actual\": {\"permitted\": 0, \"action\": \"brake\"}, \"expected\": {\"permitted\": 0, \"action\": \"brake\"}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"permitted\": 45, \"action\": \"brake\"}, \"expected\": {\"permitted\": 45, \"action\": \"brake\"}, \"passed\": true}, {\"check\": \"sampled regression 7\", \"actual\": {\"permitted\": 160, \"action\": \"none\"}, \"expected\": {\"permitted\": 160, \"action\": \"none\"}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}