{"abstract":"Over-the-back solutions come out mirrored in front of the robot.","category":"Inverse kinematics solvers","checks":7,"contract":"Input [d1,a2,a3,px,py,pz,reach,elbow]: base yaw t1, shoulder t2, elbow t3 with shoulder height d1. reach \"front\" uses t1=atan2(py,px) and r=hypot(px,py); \"back\" turns t1 by 180 degrees and uses -r. With s=pz-d1, cos t3=(r^2+s^2-a2^2-a3^2)/(2 a2 a3); beyond +/-(1+1e-12) is \"unreachable\", else clamp. elbow \"up\" takes sin t3<=0. t2=atan2(s,r)-atan2(a3 sin t3, a2+a3 cos t3). Angles in degrees wrapped to [-180,180), rounded 4.","evaluation_group":"w2-inverse_kinematics_solvers-anthropomorphic-rrr","failed_approach":"Taking |s| instead mirrors targets below the shoulder.","family":"w2-inverse_kinematics_solvers-anthropomorphic-rrr-shoulder-elevation-sign","id":"FA-88281","implementations":{"attempt":{"sha256":"af7c2b9406bea690e089885ace4e6d97c2a3d7d95a952945368b291f42853fac","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    d1,a2,a3,px,py,pz,reach,elbow=x\n    t1=math.atan2(py,px)\n    r=math.hypot(px,py)\n    if reach=='back':\n        t1=t1+math.pi\n        r=-r\n    s=pz-d1\n    c3=(r*r+s*s-a2*a2-a3*a3)/(2*a2*a3)\n    if c3>1.0+1e-12 or c3<-1.0-1e-12: return 'unreachable'\n    c3=max(-1.0,min(1.0,c3))\n    s3=math.sqrt(1.0-c3*c3)\n    if elbow=='up': s3=-s3\n    t3=math.atan2(s3,c3)\n    t2=math.atan2(abs(s),r)-math.atan2(a3*s3,a2+a3*c3)\n    res=[]\n    for t in (t1,t2,t3):\n        d=math.degrees(t)\n        d=d-360.0*math.floor((d+180.0)/360.0)\n        res.append(round(d,4))\n    return res\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['front nominal', [[1, 2, 2, 2, 1, 2, 'front', 'up']], [26.5651, 76.3336, -104.4775]], ['back nominal', [[1, 2, 2, 2, 1, 2, 'back', 'up']], [-153.4349, -151.8561, -104.4775]], ['front elbow down', [[1, 2, 2, 1, 2, 3, 'front', 'down']], [63.4349, 0.4007, 82.8192]], ['back on x axis', [[1, 2, 2, 1, 0, 2, 'back', 'down']], [-180.0, 65.7048, 138.5904]], ['stretched diagonal', [[0, 1, 1, 1.4142135623730951, 1.4142135623730951, 0, 'front', 'up']], [45.0, 0.0, -0.0]], ['stretched diagonal back', [[0, 1, 1, 1.4142135623730951, 1.4142135623730951, 0, 'back', 'down']], [-135.0, -180.0, 0.0]], ['below base', [[2, 2, 1.5, 1.5, -1, 0.5, 'front', 'up']], [-33.6901, -0.3729, -97.1808]]], [['back on x axis', [[1, 2, 2, 1, 0, 2, 'back', 'down']], [-180.0, 65.7048, 138.5904]], ['stretched diagonal', [[0, 1, 1, 1.4142135623730951, 1.4142135623730951, 0, 'front', 'up']], [45.0, 0.0, -0.0]], ['stretched diagonal back', [[0, 1, 1, 1.4142135623730951, 1.4142135623730951, 0, 'back', 'down']], [-135.0, -180.0, 0.0]], ['out of reach', [[1, 1, 1, 2, 2, 1, 'front', 'up']], 'unreachable'], ['below base', [[2, 2, 1.5, 1.5, -1, 0.5, 'front', 'up']], [-33.6901, -0.3729, -97.1808]], ['high tall base', [[3, 1.5, 1.5, 1, 1, 5, 'front', 'down']], [45.0, 19.4712, 70.5288]], ['back third quadrant', [[1, 2, 2, -1, -2, 0, 'back', 'up']], [63.4349, -103.6664, -104.4775]]], [['stretched diagonal back', [[0, 1, 1, 1.4142135623730951, 1.4142135623730951, 0, 'back', 'down']], [-135.0, -180.0, 0.0]], ['below base', [[2, 2, 1.5, 1.5, -1, 0.5, 'front', 'up']], [-33.6901, -0.3729, -97.1808]], ['high tall base', [[3, 1.5, 1.5, 1, 1, 5, 'front', 'down']], [45.0, 19.4712, 70.5288]], ['back third quadrant', [[1, 2, 2, -1, -2, 0, 'back', 'up']], [63.4349, -103.6664, -104.4775]], ['front negative y', [[0.5, 2, 1, 1, -1.5, 1, 'front', 'down']], [-56.3099, -14.2024, 112.0243]], ['base column below', [[4, 2, 2, 0.5, 0.5, 1, 'front', 'up']], [45.0, -37.1408, -79.1931]], ['back reach below shoulder', [[1.4, 2, 2, -0.7, -1.7, -0.1, 'back', 'down']], [67.6199, 165.5945, 107.2325]]], [['back third quadrant', [[1, 2, 2, -1, -2, 0, 'back', 'up']], [63.4349, -103.6664, -104.4775]], ['front negative y', [[0.5, 2, 1, 1, -1.5, 1, 'front', 'down']], [-56.3099, -14.2024, 112.0243]], ['base column below', [[4, 2, 2, 0.5, 0.5, 1, 'front', 'up']], [45.0, -37.1408, -79.1931]], ['back reach below shoulder', [[1.4, 2, 2, -0.7, -1.7, -0.1, 'back', 'down']], [67.6199, 165.5945, 107.2325]], ['back reach low front quadrant', [[1.4, 2, 2, 1.5, -0.6, 1.0, 'back', 'down']], [158.1986, 128.4939, 130.8249]], ['stretched with rounding residue', [[0, 1, 1, 1.977371993328519, 0, 0.3, 'front', 'up']], [0.0, 8.6269, -0.0]], ['reach past base height only', [[3, 1, 1, 1, 0, 3.5, 'front', 'up']], [0.0, 82.5772, -112.0243]]], [['front nominal', [[1, 2, 2, 2, 1, 2, 'front', 'up']], [26.5651, 76.3336, -104.4775]], ['back nominal', [[1, 2, 2, 2, 1, 2, 'back', 'up']], [-153.4349, -151.8561, -104.4775]], ['front elbow down', [[1, 2, 2, 1, 2, 3, 'front', 'down']], [63.4349, 0.4007, 82.8192]], ['back reach below shoulder', [[1.4, 2, 2, -0.7, -1.7, -0.1, 'back', 'down']], [67.6199, 165.5945, 107.2325]], ['back reach low front quadrant', [[1.4, 2, 2, 1.5, -0.6, 1.0, 'back', 'down']], [158.1986, 128.4939, 130.8249]], ['stretched with rounding residue', [[0, 1, 1, 1.977371993328519, 0, 0.3, 'front', 'up']], [0.0, 8.6269, -0.0]], ['reach past base height only', [[3, 1, 1, 1, 0, 3.5, 'front', 'up']], [0.0, 82.5772, -112.0243]]]]\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":"01c6c0fbb5813c3beeeb1cf7550314d20d8d886f1d1efbdc7306cc536836f21f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    d1,a2,a3,px,py,pz,reach,elbow=x\n    t1=math.atan2(py,px)\n    r=math.hypot(px,py)\n    if reach=='back':\n        t1=t1+math.pi\n        r=-r\n    s=pz-d1\n    c3=(r*r+s*s-a2*a2-a3*a3)/(2*a2*a3)\n    if c3>1.0+1e-12 or c3<-1.0-1e-12: return 'unreachable'\n    c3=max(-1.0,min(1.0,c3))\n    s3=math.sqrt(1.0-c3*c3)\n    if elbow=='up': s3=-s3\n    t3=math.atan2(s3,c3)\n    t2=math.atan2(s,abs(r))-math.atan2(a3*s3,a2+a3*c3)\n    res=[]\n    for t in (t1,t2,t3):\n        d=math.degrees(t)\n        d=d-360.0*math.floor((d+180.0)/360.0)\n        res.append(round(d,4))\n    return res\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['front nominal', [[1, 2, 2, 2, 1, 2, 'front', 'up']], [26.5651, 76.3336, -104.4775]], ['back nominal', [[1, 2, 2, 2, 1, 2, 'back', 'up']], [-153.4349, -151.8561, -104.4775]], ['front elbow down', [[1, 2, 2, 1, 2, 3, 'front', 'down']], [63.4349, 0.4007, 82.8192]], ['back on x axis', [[1, 2, 2, 1, 0, 2, 'back', 'down']], [-180.0, 65.7048, 138.5904]], ['stretched diagonal', [[0, 1, 1, 1.4142135623730951, 1.4142135623730951, 0, 'front', 'up']], [45.0, 0.0, -0.0]], ['stretched diagonal back', [[0, 1, 1, 1.4142135623730951, 1.4142135623730951, 0, 'back', 'down']], [-135.0, -180.0, 0.0]], ['below base', [[2, 2, 1.5, 1.5, -1, 0.5, 'front', 'up']], [-33.6901, -0.3729, -97.1808]]], [['back on x axis', [[1, 2, 2, 1, 0, 2, 'back', 'down']], [-180.0, 65.7048, 138.5904]], ['stretched diagonal', [[0, 1, 1, 1.4142135623730951, 1.4142135623730951, 0, 'front', 'up']], [45.0, 0.0, -0.0]], ['stretched diagonal back', [[0, 1, 1, 1.4142135623730951, 1.4142135623730951, 0, 'back', 'down']], [-135.0, -180.0, 0.0]], ['out of reach', [[1, 1, 1, 2, 2, 1, 'front', 'up']], 'unreachable'], ['below base', [[2, 2, 1.5, 1.5, -1, 0.5, 'front', 'up']], [-33.6901, -0.3729, -97.1808]], ['high tall base', [[3, 1.5, 1.5, 1, 1, 5, 'front', 'down']], [45.0, 19.4712, 70.5288]], ['back third quadrant', [[1, 2, 2, -1, -2, 0, 'back', 'up']], [63.4349, -103.6664, -104.4775]]], [['stretched diagonal back', [[0, 1, 1, 1.4142135623730951, 1.4142135623730951, 0, 'back', 'down']], [-135.0, -180.0, 0.0]], ['below base', [[2, 2, 1.5, 1.5, -1, 0.5, 'front', 'up']], [-33.6901, -0.3729, -97.1808]], ['high tall base', [[3, 1.5, 1.5, 1, 1, 5, 'front', 'down']], [45.0, 19.4712, 70.5288]], ['back third quadrant', [[1, 2, 2, -1, -2, 0, 'back', 'up']], [63.4349, -103.6664, -104.4775]], ['front negative y', [[0.5, 2, 1, 1, -1.5, 1, 'front', 'down']], [-56.3099, -14.2024, 112.0243]], ['base column below', [[4, 2, 2, 0.5, 0.5, 1, 'front', 'up']], [45.0, -37.1408, -79.1931]], ['back reach below shoulder', [[1.4, 2, 2, -0.7, -1.7, -0.1, 'back', 'down']], [67.6199, 165.5945, 107.2325]]], [['back third quadrant', [[1, 2, 2, -1, -2, 0, 'back', 'up']], [63.4349, -103.6664, -104.4775]], ['front negative y', [[0.5, 2, 1, 1, -1.5, 1, 'front', 'down']], [-56.3099, -14.2024, 112.0243]], ['base column below', [[4, 2, 2, 0.5, 0.5, 1, 'front', 'up']], [45.0, -37.1408, -79.1931]], ['back reach below shoulder', [[1.4, 2, 2, -0.7, -1.7, -0.1, 'back', 'down']], [67.6199, 165.5945, 107.2325]], ['back reach low front quadrant', [[1.4, 2, 2, 1.5, -0.6, 1.0, 'back', 'down']], [158.1986, 128.4939, 130.8249]], ['stretched with rounding residue', [[0, 1, 1, 1.977371993328519, 0, 0.3, 'front', 'up']], [0.0, 8.6269, -0.0]], ['reach past base height only', [[3, 1, 1, 1, 0, 3.5, 'front', 'up']], [0.0, 82.5772, -112.0243]]], [['front nominal', [[1, 2, 2, 2, 1, 2, 'front', 'up']], [26.5651, 76.3336, -104.4775]], ['back nominal', [[1, 2, 2, 2, 1, 2, 'back', 'up']], [-153.4349, -151.8561, -104.4775]], ['front elbow down', [[1, 2, 2, 1, 2, 3, 'front', 'down']], [63.4349, 0.4007, 82.8192]], ['back reach below shoulder', [[1.4, 2, 2, -0.7, -1.7, -0.1, 'back', 'down']], [67.6199, 165.5945, 107.2325]], ['back reach low front quadrant', [[1.4, 2, 2, 1.5, -0.6, 1.0, 'back', 'down']], [158.1986, 128.4939, 130.8249]], ['stretched with rounding residue', [[0, 1, 1, 1.977371993328519, 0, 0.3, 'front', 'up']], [0.0, 8.6269, -0.0]], ['reach past base height only', [[3, 1, 1, 1, 0, 3.5, 'front', 'up']], [0.0, 82.5772, -112.0243]]]]\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":"6a2944707159616fdd6ed4f9b3e9985320baa0cf2e01790c9152adc93aa77dc7","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    d1,a2,a3,px,py,pz,reach,elbow=x\n    t1=math.atan2(py,px)\n    r=math.hypot(px,py)\n    if reach=='back':\n        t1=t1+math.pi\n        r=-r\n    s=pz-d1\n    c3=(r*r+s*s-a2*a2-a3*a3)/(2*a2*a3)\n    if c3>1.0+1e-12 or c3<-1.0-1e-12: return 'unreachable'\n    c3=max(-1.0,min(1.0,c3))\n    s3=math.sqrt(1.0-c3*c3)\n    if elbow=='up': s3=-s3\n    t3=math.atan2(s3,c3)\n    t2=math.atan2(s,r)-math.atan2(a3*s3,a2+a3*c3)\n    res=[]\n    for t in (t1,t2,t3):\n        d=math.degrees(t)\n        d=d-360.0*math.floor((d+180.0)/360.0)\n        res.append(round(d,4))\n    return res\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['front nominal', [[1, 2, 2, 2, 1, 2, 'front', 'up']], [26.5651, 76.3336, -104.4775]], ['back nominal', [[1, 2, 2, 2, 1, 2, 'back', 'up']], [-153.4349, -151.8561, -104.4775]], ['front elbow down', [[1, 2, 2, 1, 2, 3, 'front', 'down']], [63.4349, 0.4007, 82.8192]], ['back on x axis', [[1, 2, 2, 1, 0, 2, 'back', 'down']], [-180.0, 65.7048, 138.5904]], ['stretched diagonal', [[0, 1, 1, 1.4142135623730951, 1.4142135623730951, 0, 'front', 'up']], [45.0, 0.0, -0.0]], ['stretched diagonal back', [[0, 1, 1, 1.4142135623730951, 1.4142135623730951, 0, 'back', 'down']], [-135.0, -180.0, 0.0]], ['below base', [[2, 2, 1.5, 1.5, -1, 0.5, 'front', 'up']], [-33.6901, -0.3729, -97.1808]]], [['back on x axis', [[1, 2, 2, 1, 0, 2, 'back', 'down']], [-180.0, 65.7048, 138.5904]], ['stretched diagonal', [[0, 1, 1, 1.4142135623730951, 1.4142135623730951, 0, 'front', 'up']], [45.0, 0.0, -0.0]], ['stretched diagonal back', [[0, 1, 1, 1.4142135623730951, 1.4142135623730951, 0, 'back', 'down']], [-135.0, -180.0, 0.0]], ['out of reach', [[1, 1, 1, 2, 2, 1, 'front', 'up']], 'unreachable'], ['below base', [[2, 2, 1.5, 1.5, -1, 0.5, 'front', 'up']], [-33.6901, -0.3729, -97.1808]], ['high tall base', [[3, 1.5, 1.5, 1, 1, 5, 'front', 'down']], [45.0, 19.4712, 70.5288]], ['back third quadrant', [[1, 2, 2, -1, -2, 0, 'back', 'up']], [63.4349, -103.6664, -104.4775]]], [['stretched diagonal back', [[0, 1, 1, 1.4142135623730951, 1.4142135623730951, 0, 'back', 'down']], [-135.0, -180.0, 0.0]], ['below base', [[2, 2, 1.5, 1.5, -1, 0.5, 'front', 'up']], [-33.6901, -0.3729, -97.1808]], ['high tall base', [[3, 1.5, 1.5, 1, 1, 5, 'front', 'down']], [45.0, 19.4712, 70.5288]], ['back third quadrant', [[1, 2, 2, -1, -2, 0, 'back', 'up']], [63.4349, -103.6664, -104.4775]], ['front negative y', [[0.5, 2, 1, 1, -1.5, 1, 'front', 'down']], [-56.3099, -14.2024, 112.0243]], ['base column below', [[4, 2, 2, 0.5, 0.5, 1, 'front', 'up']], [45.0, -37.1408, -79.1931]], ['back reach below shoulder', [[1.4, 2, 2, -0.7, -1.7, -0.1, 'back', 'down']], [67.6199, 165.5945, 107.2325]]], [['back third quadrant', [[1, 2, 2, -1, -2, 0, 'back', 'up']], [63.4349, -103.6664, -104.4775]], ['front negative y', [[0.5, 2, 1, 1, -1.5, 1, 'front', 'down']], [-56.3099, -14.2024, 112.0243]], ['base column below', [[4, 2, 2, 0.5, 0.5, 1, 'front', 'up']], [45.0, -37.1408, -79.1931]], ['back reach below shoulder', [[1.4, 2, 2, -0.7, -1.7, -0.1, 'back', 'down']], [67.6199, 165.5945, 107.2325]], ['back reach low front quadrant', [[1.4, 2, 2, 1.5, -0.6, 1.0, 'back', 'down']], [158.1986, 128.4939, 130.8249]], ['stretched with rounding residue', [[0, 1, 1, 1.977371993328519, 0, 0.3, 'front', 'up']], [0.0, 8.6269, -0.0]], ['reach past base height only', [[3, 1, 1, 1, 0, 3.5, 'front', 'up']], [0.0, 82.5772, -112.0243]]], [['front nominal', [[1, 2, 2, 2, 1, 2, 'front', 'up']], [26.5651, 76.3336, -104.4775]], ['back nominal', [[1, 2, 2, 2, 1, 2, 'back', 'up']], [-153.4349, -151.8561, -104.4775]], ['front elbow down', [[1, 2, 2, 1, 2, 3, 'front', 'down']], [63.4349, 0.4007, 82.8192]], ['back reach below shoulder', [[1.4, 2, 2, -0.7, -1.7, -0.1, 'back', 'down']], [67.6199, 165.5945, 107.2325]], ['back reach low front quadrant', [[1.4, 2, 2, 1.5, -0.6, 1.0, 'back', 'down']], [158.1986, 128.4939, 130.8249]], ['stretched with rounding residue', [[0, 1, 1, 1.977371993328519, 0, 0.3, 'front', 'up']], [0.0, 8.6269, -0.0]], ['reach past base height only', [[3, 1, 1, 1, 0, 3.5, 'front', 'up']], [0.0, 82.5772, -112.0243]]]]\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":"Deterministic planar or low-dimensional teaching model with a stipulated convention; not a general robotics library. 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-inverse_kinematics_solvers-anthropomorphic-rrr-shoulder-elevation-sign","generated_at":"2026-09-29T14:51:06.701225+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Inverse kinematics code turns task-space goals into joint commands; a wrong branch, sign, limit or update order sends a real arm to the wrong pose.","repair":"Use atan2(s, r) with the signed radius.","root_cause":"The shoulder elevation is atan2(s,|r|), discarding the negated radius.","sha256":"54a69e6da09b9f54c88071d21f3defeed143964a1223b10286f19c70c2bf1193","title":"Back-reach shoulder elevation uses the unsigned radius · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.735,"exit_code":1,"observations":[{"actual":[26.5651,76.3336,-104.4775],"check":"front nominal","expected":[26.5651,76.3336,-104.4775],"passed":true},{"actual":[-153.4349,-151.8561,-104.4775],"check":"back nominal","expected":[-153.4349,-151.8561,-104.4775],"passed":true},{"actual":[63.4349,0.4007,82.8192],"check":"front elbow down","expected":[63.4349,0.4007,82.8192],"passed":true},{"actual":[-180.0,65.7048,138.5904],"check":"back on x axis","expected":[-180.0,65.7048,138.5904],"passed":true},{"actual":[45.0,0.0,-0.0],"check":"stretched diagonal","expected":[45.0,0.0,-0.0],"passed":true},{"actual":[-135.0,-180.0,0.0],"check":"stretched diagonal back","expected":[-135.0,-180.0,0.0],"passed":true},{"actual":[-33.6901,79.1514,-97.1808],"check":"below base","expected":[-33.6901,-0.3729,-97.1808],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"front nominal\", \"actual\": [26.5651, 76.3336, -104.4775], \"expected\": [26.5651, 76.3336, -104.4775], \"passed\": true}, {\"check\": \"back nominal\", \"actual\": [-153.4349, -151.8561, -104.4775], \"expected\": [-153.4349, -151.8561, -104.4775], \"passed\": true}, {\"check\": \"front elbow down\", \"actual\": [63.4349, 0.4007, 82.8192], \"expected\": [63.4349, 0.4007, 82.8192], \"passed\": true}, {\"check\": \"back on x axis\", \"actual\": [-180.0, 65.7048, 138.5904], \"expected\": [-180.0, 65.7048, 138.5904], \"passed\": true}, {\"check\": \"stretched diagonal\", \"actual\": [45.0, 0.0, -0.0], \"expected\": [45.0, 0.0, -0.0], \"passed\": true}, {\"check\": \"stretched diagonal back\", \"actual\": [-135.0, -180.0, 0.0], \"expected\": [-135.0, -180.0, 0.0], \"passed\": true}, {\"check\": \"below base\", \"actual\": [-33.6901, 79.1514, -97.1808], \"expected\": [-33.6901, -0.3729, -97.1808], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.846,"exit_code":1,"observations":[{"actual":[26.5651,76.3336,-104.4775],"check":"front nominal","expected":[26.5651,76.3336,-104.4775],"passed":true},{"actual":[-153.4349,76.3336,-104.4775],"check":"back nominal","expected":[-153.4349,-151.8561,-104.4775],"passed":false},{"actual":[63.4349,0.4007,82.8192],"check":"front elbow down","expected":[63.4349,0.4007,82.8192],"passed":true},{"actual":[-180.0,-24.2952,138.5904],"check":"back on x axis","expected":[-180.0,65.7048,138.5904],"passed":false},{"actual":[45.0,0.0,-0.0],"check":"stretched diagonal","expected":[45.0,0.0,-0.0],"passed":true},{"actual":[-135.0,0.0,0.0],"check":"stretched diagonal back","expected":[-135.0,-180.0,0.0],"passed":false},{"actual":[-33.6901,-0.3729,-97.1808],"check":"below base","expected":[-33.6901,-0.3729,-97.1808],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"front nominal\", \"actual\": [26.5651, 76.3336, -104.4775], \"expected\": [26.5651, 76.3336, -104.4775], \"passed\": true}, {\"check\": \"back nominal\", \"actual\": [-153.4349, 76.3336, -104.4775], \"expected\": [-153.4349, -151.8561, -104.4775], \"passed\": false}, {\"check\": \"front elbow down\", \"actual\": [63.4349, 0.4007, 82.8192], \"expected\": [63.4349, 0.4007, 82.8192], \"passed\": true}, {\"check\": \"back on x axis\", \"actual\": [-180.0, -24.2952, 138.5904], \"expected\": [-180.0, 65.7048, 138.5904], \"passed\": false}, {\"check\": \"stretched diagonal\", \"actual\": [45.0, 0.0, -0.0], \"expected\": [45.0, 0.0, -0.0], \"passed\": true}, {\"check\": \"stretched diagonal back\", \"actual\": [-135.0, 0.0, 0.0], \"expected\": [-135.0, -180.0, 0.0], \"passed\": false}, {\"check\": \"below base\", \"actual\": [-33.6901, -0.3729, -97.1808], \"expected\": [-33.6901, -0.3729, -97.1808], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.927,"exit_code":0,"observations":[{"actual":[26.5651,76.3336,-104.4775],"check":"front nominal","expected":[26.5651,76.3336,-104.4775],"passed":true},{"actual":[-153.4349,-151.8561,-104.4775],"check":"back nominal","expected":[-153.4349,-151.8561,-104.4775],"passed":true},{"actual":[63.4349,0.4007,82.8192],"check":"front elbow down","expected":[63.4349,0.4007,82.8192],"passed":true},{"actual":[-180.0,65.7048,138.5904],"check":"back on x axis","expected":[-180.0,65.7048,138.5904],"passed":true},{"actual":[45.0,0.0,-0.0],"check":"stretched diagonal","expected":[45.0,0.0,-0.0],"passed":true},{"actual":[-135.0,-180.0,0.0],"check":"stretched diagonal back","expected":[-135.0,-180.0,0.0],"passed":true},{"actual":[-33.6901,-0.3729,-97.1808],"check":"below base","expected":[-33.6901,-0.3729,-97.1808],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"front nominal\", \"actual\": [26.5651, 76.3336, -104.4775], \"expected\": [26.5651, 76.3336, -104.4775], \"passed\": true}, {\"check\": \"back nominal\", \"actual\": [-153.4349, -151.8561, -104.4775], \"expected\": [-153.4349, -151.8561, -104.4775], \"passed\": true}, {\"check\": \"front elbow down\", \"actual\": [63.4349, 0.4007, 82.8192], \"expected\": [63.4349, 0.4007, 82.8192], \"passed\": true}, {\"check\": \"back on x axis\", \"actual\": [-180.0, 65.7048, 138.5904], \"expected\": [-180.0, 65.7048, 138.5904], \"passed\": true}, {\"check\": \"stretched diagonal\", \"actual\": [45.0, 0.0, -0.0], \"expected\": [45.0, 0.0, -0.0], \"passed\": true}, {\"check\": \"stretched diagonal back\", \"actual\": [-135.0, -180.0, 0.0], \"expected\": [-135.0, -180.0, 0.0], \"passed\": true}, {\"check\": \"below base\", \"actual\": [-33.6901, -0.3729, -97.1808], \"expected\": [-33.6901, -0.3729, -97.1808], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}