{"abstract":"The iteration walks away from the root and returns a huge anomaly.","category":"Orbital propagation","checks":7,"contract":"Input [M, e] (radians). Return None unless 0<=e<1. Reduce M into [0,2pi), start Newton at M (e<0.8) or pi, iterate E -= (E-e sinE-M)/(1-e cosE) up to 50 times until the step is below 1e-13, and return E rounded to 9 decimals.","contract_signature":"x","evaluation_group":"w2-orbital_propagation-kepler_elliptic","failed_approach":"Replacing Newton by the fixed-point form E=M+e sin E converges too slowly for eccentric orbits within the cap.","family":"w2-orbital_propagation-kepler_elliptic-newton-update","id":"FA-69341","implementations":{"attempt":{"sha256":"efe4f25ba358a372dccf53f6abe01ae6f20424ccb6dec36631972cd36d05c7b7","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    M,e=x\n    if e<0 or e>=1: return None\n    M=math.fmod(M,2*math.pi)\n    if M<0: M+=2*math.pi\n    E=M if e<0.8 else math.pi\n    for _ in range(50):\n        d=(E-e*math.sin(E)-M)/(1-e*math.cos(E))\n        E=M+e*math.sin(E)\n        if abs(d)<1e-13: break\n    return round(E,9)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('elliptic kepler solver [0.5, 0.1]', [0.5, 0.1], 0.552479987), ('elliptic kepler solver [0.05, 0.97]', [0.05, 0.97], 0.588295814), ('elliptic kepler solver [2.0, 0.3]', [2.0, 0.3], 2.236031495), ('elliptic kepler solver [5.5, 0.6]', [5.5, 0.6], 4.911902084), ('elliptic kepler solver [3.0, 0.99]', [3.0, 0.99], 3.070410669), ('elliptic kepler solver [-1.0, 0.2]', [-1.0, 0.2], 5.097861103), ('elliptic kepler solver [7.5, 0.45]', [7.5, 0.45], 1.66482677)], [('elliptic kepler solver [2.0, 0.3]', [2.0, 0.3], 2.236031495), ('elliptic kepler solver [3.0, 0.99]', [3.0, 0.99], 3.070410669), ('elliptic kepler solver [0.05, 0.97]', [0.05, 0.97], 0.588295814), ('elliptic kepler solver [-1.0, 0.2]', [-1.0, 0.2], 5.097861103), ('elliptic kepler solver [7.5, 0.45]', [7.5, 0.45], 1.66482677), ('elliptic kepler solver [20.0, 0.05]', [20.0, 0.05], 1.196991311), ('elliptic kepler solver [0.0, 0.7]', [0.0, 0.7], 0.0)], [('elliptic kepler solver [5.5, 0.6]', [5.5, 0.6], 4.911902084), ('elliptic kepler solver [0.05, 0.97]', [0.05, 0.97], 0.588295814), ('elliptic kepler solver [7.5, 0.45]', [7.5, 0.45], 1.66482677), ('elliptic kepler solver [20.0, 0.05]', [20.0, 0.05], 1.196991311), ('elliptic kepler solver [0.0, 0.7]', [0.0, 0.7], 0.0), ('elliptic kepler solver [3.141592653589793, 0.5]', [3.141592653589793, 0.5], 3.141592654), ('elliptic kepler solver [1.0, 1.0]', [1.0, 1.0], None)], [('elliptic kepler solver [0.05, 0.97]', [0.05, 0.97], 0.588295814), ('elliptic kepler solver [3.0, 0.99]', [3.0, 0.99], 3.070410669), ('elliptic kepler solver [3.141592653589793, 0.5]', [3.141592653589793, 0.5], 3.141592654), ('elliptic kepler solver [1.0, 1.0]', [1.0, 1.0], None), ('elliptic kepler solver [1.0, -0.1]', [1.0, -0.1], None), ('elliptic kepler solver [0.2, 0.85]', [0.2, 0.85], 0.823499414), ('elliptic kepler solver [6.0, 0.93]', [6.0, 0.93], 5.162716882)], [('elliptic kepler solver [3.0, 0.99]', [3.0, 0.99], 3.070410669), ('elliptic kepler solver [0.05, 0.97]', [0.05, 0.97], 0.588295814), ('elliptic kepler solver [0.2, 0.85]', [0.2, 0.85], 0.823499414), ('elliptic kepler solver [6.0, 0.93]', [6.0, 0.93], 5.162716882), ('elliptic kepler solver [-8.0, 0.75]', [-8.0, 0.75], 3.999173912), ('elliptic kepler solver [1.3, 0.0]', [1.3, 0.0], 1.3), ('elliptic kepler solver [0.5, 0.1]', [0.5, 0.1], 0.552479987)]]\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":"4111b4c9050874856b1b56580f18e36b0130f8789f1d9d64e7968c58b979d068","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    M,e=x\n    if e<0 or e>=1: return None\n    M=math.fmod(M,2*math.pi)\n    if M<0: M+=2*math.pi\n    E=M if e<0.8 else math.pi\n    for _ in range(50):\n        d=(E-e*math.sin(E)-M)/(1-e*math.cos(E))\n        E+=d\n        if abs(d)<1e-13: break\n    return round(E,9)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('elliptic kepler solver [0.5, 0.1]', [0.5, 0.1], 0.552479987), ('elliptic kepler solver [0.05, 0.97]', [0.05, 0.97], 0.588295814), ('elliptic kepler solver [2.0, 0.3]', [2.0, 0.3], 2.236031495), ('elliptic kepler solver [5.5, 0.6]', [5.5, 0.6], 4.911902084), ('elliptic kepler solver [3.0, 0.99]', [3.0, 0.99], 3.070410669), ('elliptic kepler solver [-1.0, 0.2]', [-1.0, 0.2], 5.097861103), ('elliptic kepler solver [7.5, 0.45]', [7.5, 0.45], 1.66482677)], [('elliptic kepler solver [2.0, 0.3]', [2.0, 0.3], 2.236031495), ('elliptic kepler solver [3.0, 0.99]', [3.0, 0.99], 3.070410669), ('elliptic kepler solver [0.05, 0.97]', [0.05, 0.97], 0.588295814), ('elliptic kepler solver [-1.0, 0.2]', [-1.0, 0.2], 5.097861103), ('elliptic kepler solver [7.5, 0.45]', [7.5, 0.45], 1.66482677), ('elliptic kepler solver [20.0, 0.05]', [20.0, 0.05], 1.196991311), ('elliptic kepler solver [0.0, 0.7]', [0.0, 0.7], 0.0)], [('elliptic kepler solver [5.5, 0.6]', [5.5, 0.6], 4.911902084), ('elliptic kepler solver [0.05, 0.97]', [0.05, 0.97], 0.588295814), ('elliptic kepler solver [7.5, 0.45]', [7.5, 0.45], 1.66482677), ('elliptic kepler solver [20.0, 0.05]', [20.0, 0.05], 1.196991311), ('elliptic kepler solver [0.0, 0.7]', [0.0, 0.7], 0.0), ('elliptic kepler solver [3.141592653589793, 0.5]', [3.141592653589793, 0.5], 3.141592654), ('elliptic kepler solver [1.0, 1.0]', [1.0, 1.0], None)], [('elliptic kepler solver [0.05, 0.97]', [0.05, 0.97], 0.588295814), ('elliptic kepler solver [3.0, 0.99]', [3.0, 0.99], 3.070410669), ('elliptic kepler solver [3.141592653589793, 0.5]', [3.141592653589793, 0.5], 3.141592654), ('elliptic kepler solver [1.0, 1.0]', [1.0, 1.0], None), ('elliptic kepler solver [1.0, -0.1]', [1.0, -0.1], None), ('elliptic kepler solver [0.2, 0.85]', [0.2, 0.85], 0.823499414), ('elliptic kepler solver [6.0, 0.93]', [6.0, 0.93], 5.162716882)], [('elliptic kepler solver [3.0, 0.99]', [3.0, 0.99], 3.070410669), ('elliptic kepler solver [0.05, 0.97]', [0.05, 0.97], 0.588295814), ('elliptic kepler solver [0.2, 0.85]', [0.2, 0.85], 0.823499414), ('elliptic kepler solver [6.0, 0.93]', [6.0, 0.93], 5.162716882), ('elliptic kepler solver [-8.0, 0.75]', [-8.0, 0.75], 3.999173912), ('elliptic kepler solver [1.3, 0.0]', [1.3, 0.0], 1.3), ('elliptic kepler solver [0.5, 0.1]', [0.5, 0.1], 0.552479987)]]\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":"A deterministic toy two-body model with stipulated constants and conventions; not flight dynamics software or a validated SGP4 implementation. 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-orbital_propagation-kepler_elliptic-newton-update","generated_at":"2026-09-29T14:48:10.612130+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Orbit determination and mission planning chain many small conversions; one wrong branch or unit silently moves a spacecraft by kilometres.","root_cause":"The update applies E+=d although d is residual over derivative.","sha256":"c7450653c3b29e673b3dd7fdd85d4acbdbb52a1d0a08316b559bc45c3b04947c","title":"Elliptic Kepler solver: Newton correction is added instead of subtracted · 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":40.591,"exit_code":1,"observations":[{"actual":0.552479987,"check":"elliptic kepler solver [0.5, 0.1]","expected":0.552479987,"passed":true},{"actual":0.588249591,"check":"elliptic kepler solver [0.05, 0.97]","expected":0.588295814,"passed":false},{"actual":2.236031495,"check":"elliptic kepler solver [2.0, 0.3]","expected":2.236031495,"passed":true},{"actual":4.911902084,"check":"elliptic kepler solver [5.5, 0.6]","expected":4.911902084,"passed":true},{"actual":3.107471358,"check":"elliptic kepler solver [3.0, 0.99]","expected":3.070410669,"passed":false},{"actual":5.097861103,"check":"elliptic kepler solver [-1.0, 0.2]","expected":5.097861103,"passed":true},{"actual":1.66482677,"check":"elliptic kepler solver [7.5, 0.45]","expected":1.66482677,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"elliptic kepler solver [0.5, 0.1]\", \"actual\": 0.552479987, \"expected\": 0.552479987, \"passed\": true}, {\"check\": \"elliptic kepler solver [0.05, 0.97]\", \"actual\": 0.588249591, \"expected\": 0.588295814, \"passed\": false}, {\"check\": \"elliptic kepler solver [2.0, 0.3]\", \"actual\": 2.236031495, \"expected\": 2.236031495, \"passed\": true}, {\"check\": \"elliptic kepler solver [5.5, 0.6]\", \"actual\": 4.911902084, \"expected\": 4.911902084, \"passed\": true}, {\"check\": \"elliptic kepler solver [3.0, 0.99]\", \"actual\": 3.107471358, \"expected\": 3.070410669, \"passed\": false}, {\"check\": \"elliptic kepler solver [-1.0, 0.2]\", \"actual\": 5.097861103, \"expected\": 5.097861103, \"passed\": true}, {\"check\": \"elliptic kepler solver [7.5, 0.45]\", \"actual\": 1.66482677, \"expected\": 1.66482677, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.804,"exit_code":1,"observations":[{"actual":-56110885219918.31,"check":"elliptic kepler solver [0.5, 0.1]","expected":0.552479987,"passed":false},{"actual":1.4624038637682837e+28,"check":"elliptic kepler solver [0.05, 0.97]","expected":0.588295814,"passed":false},{"actual":-596354926221579.5,"check":"elliptic kepler solver [2.0, 0.3]","expected":2.236031495,"passed":false},{"actual":7306937807348682.0,"check":"elliptic kepler solver [5.5, 0.6]","expected":4.911902084,"passed":false},{"actual":7.85400006644173e+26,"check":"elliptic kepler solver [3.0, 0.99]","expected":3.070410669,"passed":false},{"actual":146450715304947.47,"check":"elliptic kepler solver [-1.0, 0.2]","expected":5.097861103,"passed":false},{"actual":-3407543013769027.0,"check":"elliptic kepler solver [7.5, 0.45]","expected":1.66482677,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"elliptic kepler solver [0.5, 0.1]\", \"actual\": -56110885219918.31, \"expected\": 0.552479987, \"passed\": false}, {\"check\": \"elliptic kepler solver [0.05, 0.97]\", \"actual\": 1.4624038637682837e+28, \"expected\": 0.588295814, \"passed\": false}, {\"check\": \"elliptic kepler solver [2.0, 0.3]\", \"actual\": -596354926221579.5, \"expected\": 2.236031495, \"passed\": false}, {\"check\": \"elliptic kepler solver [5.5, 0.6]\", \"actual\": 7306937807348682.0, \"expected\": 4.911902084, \"passed\": false}, {\"check\": \"elliptic kepler solver [3.0, 0.99]\", \"actual\": 7.85400006644173e+26, \"expected\": 3.070410669, \"passed\": false}, {\"check\": \"elliptic kepler solver [-1.0, 0.2]\", \"actual\": 146450715304947.47, \"expected\": 5.097861103, \"passed\": false}, {\"check\": \"elliptic kepler solver [7.5, 0.45]\", \"actual\": -3407543013769027.0, \"expected\": 1.66482677, \"passed\": false}], \"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."}}