{"abstract":"A force torque is transferred to a new origin with the wrong moment arm.","category":"Robotics frame conventions","checks":6,"contract":"In a common planar basis, return torque about new origin: tau_new=tau_old-(rx*fy-ry*fx). Force and r are integer pairs.","contract_signature":"force,tau,r","evaluation_group":"model-1788bcf5ad3cf64b","failed_approach":"Adding r cross force has the sign for shifting in the opposite direction.","family":"z-robotics_frames-wrench-reference-point","id":"FA-12121","implementations":{"attempt":{"sha256":"78e7303e20379f4b1c20b4ea4f786e6e396109098378d698014746548fcf577e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\ndef rot(v, q):\n    x,y = v\n    return [(x,y),(-y,x),(-x,-y),(y,-x)][q%4]\n\nN = 1\nobservations = []\ndef solve(force,tau,r):\n    return tau+r[0]*force[1]-r[1]*force[0]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('transverse force', solve([0,2],0,[N,0]), -2*N)\ncheck('other axis', solve([2,0],0,[0,N]), 2*N)\ncheck('existing torque', solve([1,2],3*N,[N,N]), 2*N)\ncheck('same origin', solve([1,2],N,[0,0]), N)\ncheck('zero force', solve([0,0],N,[N,N]), N)\ncheck('parallel force', solve([1,1],N,[N,N]), N)\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":"4dc6380570c94230435dfcdf81bf6bd8efdd80cb61babbf3a070cae368a8c6f2","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\ndef rot(v, q):\n    x,y = v\n    return [(x,y),(-y,x),(-x,-y),(y,-x)][q%4]\n\nN = 1\nobservations = []\ndef solve(force,tau,r):\n    return tau\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('transverse force', solve([0,2],0,[N,0]), -2*N)\ncheck('other axis', solve([2,0],0,[0,N]), 2*N)\ncheck('existing torque', solve([1,2],3*N,[N,N]), 2*N)\ncheck('same origin', solve([1,2],N,[0,0]), N)\ncheck('zero force', solve([0,0],N,[N,N]), N)\ncheck('parallel force', solve([1,1],N,[N,N]), N)\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":"Small exact offline frame model; not a robot middleware implementation or continuous pose estimator. 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":"z-robotics_frames-wrench-reference-point","generated_at":"2026-09-29T14:38:54.066679+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Robot adapters must preserve the declared frame, reference point, and representation conventions across interfaces.","root_cause":"Torque is treated as independent of the origin where a wrench is reported.","sha256":"1adc7ff3740bc881b1ceb2afcbd3ea175fdcc6c67daa588d7580f2592ead74e6","title":"A force torque is transferred to a new origin with the wrong moment arm · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":39.795,"exit_code":1,"observations":[{"actual":2,"check":"transverse force","expected":-2,"passed":false},{"actual":-2,"check":"other axis","expected":2,"passed":false},{"actual":4,"check":"existing torque","expected":2,"passed":false},{"actual":1,"check":"same origin","expected":1,"passed":true},{"actual":1,"check":"zero force","expected":1,"passed":true},{"actual":1,"check":"parallel force","expected":1,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"transverse force\", \"actual\": 2, \"expected\": -2, \"passed\": false}, {\"check\": \"other axis\", \"actual\": -2, \"expected\": 2, \"passed\": false}, {\"check\": \"existing torque\", \"actual\": 4, \"expected\": 2, \"passed\": false}, {\"check\": \"same origin\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"zero force\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"parallel force\", \"actual\": 1, \"expected\": 1, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.59,"exit_code":1,"observations":[{"actual":0,"check":"transverse force","expected":-2,"passed":false},{"actual":0,"check":"other axis","expected":2,"passed":false},{"actual":3,"check":"existing torque","expected":2,"passed":false},{"actual":1,"check":"same origin","expected":1,"passed":true},{"actual":1,"check":"zero force","expected":1,"passed":true},{"actual":1,"check":"parallel force","expected":1,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"transverse force\", \"actual\": 0, \"expected\": -2, \"passed\": false}, {\"check\": \"other axis\", \"actual\": 0, \"expected\": 2, \"passed\": false}, {\"check\": \"existing torque\", \"actual\": 3, \"expected\": 2, \"passed\": false}, {\"check\": \"same origin\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"zero force\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"parallel force\", \"actual\": 1, \"expected\": 1, \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}