{"abstract":"Raw subtraction takes long turns across the wrap point.","category":"Planar geometry","checks":4,"contract":"Integer coordinates and lengths, with exact arithmetic except for indicated division results. Lengths are nonnegative. Rectangles are (xmin,ymin,xmax,ymax) with ordered bounds; coordinate vectors have matching dimensions. Degree shortest signed turn. Exact operational definition: (end-start+180)%360-180","evaluation_group":"model-3bcb8593883ddcc5","failed_approach":"Unsigned reduction loses turn direction.","family":"xn-degree-shortest-signed-turn","id":"FA-5841","implementations":{"attempt":{"sha256":"adf4e35090e1809e5f597e62a6cc6fc9e08d0e9e71fcc4c9c91ed4f625000765","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport calendar\nimport statistics\nimport itertools\nfrom fractions import Fraction\nfrom datetime import date, datetime, timedelta, timezone\nfrom decimal import Decimal, ROUND_HALF_UP, ROUND_DOWN, ROUND_CEILING, ROUND_FLOOR\n\nN = 1\nobservations = []\ndef solve(start, end):\n    return (end-start)%360\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('fixture 1: (350, 10)', solve(*(350, 10)), 20)\ncheck('fixture 2: (10, 350)', solve(*(10, 350)), -20)\ncheck('fixture 3: (0, 180)', solve(*(0, 180)), -180)\ncheck('fixture 4: (30, 30)', solve(*(30, 30)), 0)\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":"66b9ff1ccf058d7137c44c9fe9e428cb43252050183eba801ff70f33e3762523","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport calendar\nimport statistics\nimport itertools\nfrom fractions import Fraction\nfrom datetime import date, datetime, timedelta, timezone\nfrom decimal import Decimal, ROUND_HALF_UP, ROUND_DOWN, ROUND_CEILING, ROUND_FLOOR\n\nN = 1\nobservations = []\ndef solve(start, end):\n    return end-start\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('fixture 1: (350, 10)', solve(*(350, 10)), 20)\ncheck('fixture 2: (10, 350)', solve(*(10, 350)), -20)\ncheck('fixture 3: (0, 180)', solve(*(0, 180)), -180)\ncheck('fixture 4: (30, 30)', solve(*(30, 30)), 0)\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":"ffa1fce6b1b0a1c7ae38a30447d95351f6ab091df99563a06f4b796740ceb1d9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport calendar\nimport statistics\nimport itertools\nfrom fractions import Fraction\nfrom datetime import date, datetime, timedelta, timezone\nfrom decimal import Decimal, ROUND_HALF_UP, ROUND_DOWN, ROUND_CEILING, ROUND_FLOOR\n\nN = 1\nobservations = []\ndef solve(start, end):\n    return (end-start+180)%360-180\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('fixture 1: (350, 10)', solve(*(350, 10)), 20)\ncheck('fixture 2: (10, 350)', solve(*(10, 350)), -20)\ncheck('fixture 3: (0, 180)', solve(*(0, 180)), -180)\ncheck('fixture 4: (30, 30)', solve(*(30, 30)), 0)\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":" 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":"xn-degree-shortest-signed-turn","generated_at":"2026-09-29T14:37:54.416522+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Small exact fixtures expose this error without platform timing, external services, or probabilistic observations. Planar geometry results depend on the stated convention.","repair":"Apply the specified mathematical contract directly, preserving all terms and boundary cases: return (end-start+180)%360-180","root_cause":"Raw subtraction takes long turns across the wrap point.","sha256":"088b95925d05147d4e7832532ee9ff47eb6ffe2bc3a9db144b96f11bd44059d9","title":"Degree shortest signed turn · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":55.084,"exit_code":1,"observations":[{"actual":20,"check":"fixture 1: (350, 10)","expected":20,"passed":true},{"actual":340,"check":"fixture 2: (10, 350)","expected":-20,"passed":false},{"actual":180,"check":"fixture 3: (0, 180)","expected":-180,"passed":false},{"actual":0,"check":"fixture 4: (30, 30)","expected":0,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fixture 1: (350, 10)\", \"actual\": 20, \"expected\": 20, \"passed\": true}, {\"check\": \"fixture 2: (10, 350)\", \"actual\": 340, \"expected\": -20, \"passed\": false}, {\"check\": \"fixture 3: (0, 180)\", \"actual\": 180, \"expected\": -180, \"passed\": false}, {\"check\": \"fixture 4: (30, 30)\", \"actual\": 0, \"expected\": 0, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":48.97,"exit_code":1,"observations":[{"actual":-340,"check":"fixture 1: (350, 10)","expected":20,"passed":false},{"actual":340,"check":"fixture 2: (10, 350)","expected":-20,"passed":false},{"actual":180,"check":"fixture 3: (0, 180)","expected":-180,"passed":false},{"actual":0,"check":"fixture 4: (30, 30)","expected":0,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fixture 1: (350, 10)\", \"actual\": -340, \"expected\": 20, \"passed\": false}, {\"check\": \"fixture 2: (10, 350)\", \"actual\": 340, \"expected\": -20, \"passed\": false}, {\"check\": \"fixture 3: (0, 180)\", \"actual\": 180, \"expected\": -180, \"passed\": false}, {\"check\": \"fixture 4: (30, 30)\", \"actual\": 0, \"expected\": 0, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":52.961,"exit_code":0,"observations":[{"actual":20,"check":"fixture 1: (350, 10)","expected":20,"passed":true},{"actual":-20,"check":"fixture 2: (10, 350)","expected":-20,"passed":true},{"actual":-180,"check":"fixture 3: (0, 180)","expected":-180,"passed":true},{"actual":0,"check":"fixture 4: (30, 30)","expected":0,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fixture 1: (350, 10)\", \"actual\": 20, \"expected\": 20, \"passed\": true}, {\"check\": \"fixture 2: (10, 350)\", \"actual\": -20, \"expected\": -20, \"passed\": true}, {\"check\": \"fixture 3: (0, 180)\", \"actual\": -180, \"expected\": -180, \"passed\": true}, {\"check\": \"fixture 4: (30, 30)\", \"actual\": 0, \"expected\": 0, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}