{"abstract":"Hyperbolic trajectories get positive axes indistinguishable from ellipses.","category":"Orbital propagation","checks":7,"contract":"Input [r, v, mu, tol]. eps=v^2/2-mu/r. Parabolic when |eps|<=tol*mu/r, else elliptic (eps<0) or hyperbolic. a=-mu/(2 eps) (None if parabolic), escape speed sqrt(2mu/r), v_inf=sqrt(2 eps) for hyperbolic else None. Return [kind, a rounded 3, vesc rounded 6, vinf rounded 6].","contract_signature":"x","evaluation_group":"w2-orbital_propagation-energy_class","failed_approach":"Returning None for hyperbolas hides a defined quantity.","family":"w2-orbital_propagation-energy_class-hyperbolic-axis-convention","id":"FA-69671","implementations":{"attempt":{"sha256":"5a049fdff798386b173a87a8a6cd2fb18acd2d725e1f558f0d74e9a91223258f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    r,v,mu,tol=x\n    eps=v*v/2-mu/r\n    if abs(eps)<=tol*mu/r: kind='parabolic'\n    elif eps<0: kind='elliptic'\n    else: kind='hyperbolic'\n    a=round(-mu/(2*eps),3) if kind=='elliptic' else None\n    vesc=math.sqrt(2*mu/r)\n    vinf=round(math.sqrt(2*eps),6) if kind=='hyperbolic' else None\n    return [kind,a,round(vesc,6),vinf]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('orbit energy classification [7000.0, 10.8, 398600.4418, 1e-06]', [7000.0, 10.8, 398600.4418, 1e-06], ['hyperbolic', -144726.71, 10.671731, 1.659566]), ('orbit energy classification [7000.0, 7.5, 398600.4418, 1e-06]', [7000.0, 7.5, 398600.4418, 1e-06], ['elliptic', 6915.843, 10.671731, None]), ('orbit energy classification [7000.0, 10.67, 398600.4418, 1e-06]', [7000.0, 10.67, 398600.4418, 1e-06], ['elliptic', 10790332.769, 10.671731, None]), ('orbit energy classification [7000.0, 10.6713, 398600.4418, 0.0001]', [7000.0, 10.6713, 398600.4418, 0.0001], ['parabolic', None, 10.671731, None]), ('orbit energy classification [1.0, 1.4142, 1.0, 0.001]', [1.0, 1.4142, 1.0, 0.001], ['parabolic', None, 1.414214, None]), ('orbit energy classification [1.0, 1.0, 1.0, 0.001]', [1.0, 1.0, 1.0, 0.001], ['elliptic', 1.0, 1.414214, None]), ('orbit energy classification [1.0, 2.0, 1.0, 0.001]', [1.0, 2.0, 1.0, 0.001], ['hyperbolic', -0.5, 1.414214, 1.414214])], [('orbit energy classification [1.0, 2.0, 1.0, 0.001]', [1.0, 2.0, 1.0, 0.001], ['hyperbolic', -0.5, 1.414214, 1.414214]), ('orbit energy classification [7000.0, 10.6713, 398600.4418, 0.0001]', [7000.0, 10.6713, 398600.4418, 0.0001], ['parabolic', None, 10.671731, None]), ('orbit energy classification [1.0, 1.4142, 1.0, 0.001]', [1.0, 1.4142, 1.0, 0.001], ['parabolic', None, 1.414214, None]), ('orbit energy classification [1.0, 1.0, 1.0, 0.001]', [1.0, 1.0, 1.0, 0.001], ['elliptic', 1.0, 1.414214, None]), ('orbit energy classification [42164.0, 3.07, 398600.4418, 1e-06]', [42164.0, 3.07, 398600.4418, 1e-06], ['elliptic', 42036.503, 4.348235, None]), ('orbit energy classification [6678.0, 11.5, 398600.4418, 1e-06]', [6678.0, 11.5, 398600.4418, 1e-06], ['hyperbolic', -30964.528, 10.925987, 3.58787]), ('orbit energy classification [2.0, 1.0, 1.0, 0.0001]', [2.0, 1.0, 1.0, 0.0001], ['parabolic', None, 1.0, None])], [('orbit energy classification [6678.0, 11.5, 398600.4418, 1e-06]', [6678.0, 11.5, 398600.4418, 1e-06], ['hyperbolic', -30964.528, 10.925987, 3.58787]), ('orbit energy classification [1.0, 2.0, 1.0, 0.001]', [1.0, 2.0, 1.0, 0.001], ['hyperbolic', -0.5, 1.414214, 1.414214]), ('orbit energy classification [42164.0, 3.07, 398600.4418, 1e-06]', [42164.0, 3.07, 398600.4418, 1e-06], ['elliptic', 42036.503, 4.348235, None]), ('orbit energy classification [2.0, 1.0, 1.0, 0.0001]', [2.0, 1.0, 1.0, 0.0001], ['parabolic', None, 1.0, None]), ('orbit energy classification [100.0, 0.1414, 1.0, 0.001]', [100.0, 0.1414, 1.0, 0.001], ['parabolic', None, 0.141421, None]), ('orbit energy classification [1.0, 1.05, 1.0, 0.5]', [1.0, 1.05, 1.0, 0.5], ['parabolic', None, 1.414214, None]), ('orbit energy classification [2.0, 0.8, 1.0, 0.5]', [2.0, 0.8, 1.0, 0.5], ['parabolic', None, 1.0, None])], [('orbit energy classification [7000.0, 10.8, 398600.4418, 1e-06]', [7000.0, 10.8, 398600.4418, 1e-06], ['hyperbolic', -144726.71, 10.671731, 1.659566]), ('orbit energy classification [2.0, 1.0, 1.0, 0.0001]', [2.0, 1.0, 1.0, 0.0001], ['parabolic', None, 1.0, None]), ('orbit energy classification [100.0, 0.1414, 1.0, 0.001]', [100.0, 0.1414, 1.0, 0.001], ['parabolic', None, 0.141421, None]), ('orbit energy classification [1.0, 1.05, 1.0, 0.5]', [1.0, 1.05, 1.0, 0.5], ['parabolic', None, 1.414214, None]), ('orbit energy classification [2.0, 0.8, 1.0, 0.5]', [2.0, 0.8, 1.0, 0.5], ['parabolic', None, 1.0, None]), ('orbit energy classification [7000.0, 7.5, 398600.4418, 1e-06]', [7000.0, 7.5, 398600.4418, 1e-06], ['elliptic', 6915.843, 10.671731, None]), ('orbit energy classification [7000.0, 10.67, 398600.4418, 1e-06]', [7000.0, 10.67, 398600.4418, 1e-06], ['elliptic', 10790332.769, 10.671731, None])], [('orbit energy classification [1.0, 2.0, 1.0, 0.001]', [1.0, 2.0, 1.0, 0.001], ['hyperbolic', -0.5, 1.414214, 1.414214]), ('orbit energy classification [2.0, 0.8, 1.0, 0.5]', [2.0, 0.8, 1.0, 0.5], ['parabolic', None, 1.0, None]), ('orbit energy classification [7000.0, 7.5, 398600.4418, 1e-06]', [7000.0, 7.5, 398600.4418, 1e-06], ['elliptic', 6915.843, 10.671731, None]), ('orbit energy classification [7000.0, 10.8, 398600.4418, 1e-06]', [7000.0, 10.8, 398600.4418, 1e-06], ['hyperbolic', -144726.71, 10.671731, 1.659566]), ('orbit energy classification [7000.0, 10.67, 398600.4418, 1e-06]', [7000.0, 10.67, 398600.4418, 1e-06], ['elliptic', 10790332.769, 10.671731, None]), ('orbit energy classification [7000.0, 10.6713, 398600.4418, 0.0001]', [7000.0, 10.6713, 398600.4418, 0.0001], ['parabolic', None, 10.671731, None]), ('orbit energy classification [1.0, 1.4142, 1.0, 0.001]', [1.0, 1.4142, 1.0, 0.001], ['parabolic', None, 1.414214, 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":"b2502eb26774f4580542b8c0cf339cde6ca6c6e76af77b17bc6630ef87a004c4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    r,v,mu,tol=x\n    eps=v*v/2-mu/r\n    if abs(eps)<=tol*mu/r: kind='parabolic'\n    elif eps<0: kind='elliptic'\n    else: kind='hyperbolic'\n    a=None if kind=='parabolic' else round(abs(-mu/(2*eps)),3)\n    vesc=math.sqrt(2*mu/r)\n    vinf=round(math.sqrt(2*eps),6) if kind=='hyperbolic' else None\n    return [kind,a,round(vesc,6),vinf]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('orbit energy classification [7000.0, 10.8, 398600.4418, 1e-06]', [7000.0, 10.8, 398600.4418, 1e-06], ['hyperbolic', -144726.71, 10.671731, 1.659566]), ('orbit energy classification [7000.0, 7.5, 398600.4418, 1e-06]', [7000.0, 7.5, 398600.4418, 1e-06], ['elliptic', 6915.843, 10.671731, None]), ('orbit energy classification [7000.0, 10.67, 398600.4418, 1e-06]', [7000.0, 10.67, 398600.4418, 1e-06], ['elliptic', 10790332.769, 10.671731, None]), ('orbit energy classification [7000.0, 10.6713, 398600.4418, 0.0001]', [7000.0, 10.6713, 398600.4418, 0.0001], ['parabolic', None, 10.671731, None]), ('orbit energy classification [1.0, 1.4142, 1.0, 0.001]', [1.0, 1.4142, 1.0, 0.001], ['parabolic', None, 1.414214, None]), ('orbit energy classification [1.0, 1.0, 1.0, 0.001]', [1.0, 1.0, 1.0, 0.001], ['elliptic', 1.0, 1.414214, None]), ('orbit energy classification [1.0, 2.0, 1.0, 0.001]', [1.0, 2.0, 1.0, 0.001], ['hyperbolic', -0.5, 1.414214, 1.414214])], [('orbit energy classification [1.0, 2.0, 1.0, 0.001]', [1.0, 2.0, 1.0, 0.001], ['hyperbolic', -0.5, 1.414214, 1.414214]), ('orbit energy classification [7000.0, 10.6713, 398600.4418, 0.0001]', [7000.0, 10.6713, 398600.4418, 0.0001], ['parabolic', None, 10.671731, None]), ('orbit energy classification [1.0, 1.4142, 1.0, 0.001]', [1.0, 1.4142, 1.0, 0.001], ['parabolic', None, 1.414214, None]), ('orbit energy classification [1.0, 1.0, 1.0, 0.001]', [1.0, 1.0, 1.0, 0.001], ['elliptic', 1.0, 1.414214, None]), ('orbit energy classification [42164.0, 3.07, 398600.4418, 1e-06]', [42164.0, 3.07, 398600.4418, 1e-06], ['elliptic', 42036.503, 4.348235, None]), ('orbit energy classification [6678.0, 11.5, 398600.4418, 1e-06]', [6678.0, 11.5, 398600.4418, 1e-06], ['hyperbolic', -30964.528, 10.925987, 3.58787]), ('orbit energy classification [2.0, 1.0, 1.0, 0.0001]', [2.0, 1.0, 1.0, 0.0001], ['parabolic', None, 1.0, None])], [('orbit energy classification [6678.0, 11.5, 398600.4418, 1e-06]', [6678.0, 11.5, 398600.4418, 1e-06], ['hyperbolic', -30964.528, 10.925987, 3.58787]), ('orbit energy classification [1.0, 2.0, 1.0, 0.001]', [1.0, 2.0, 1.0, 0.001], ['hyperbolic', -0.5, 1.414214, 1.414214]), ('orbit energy classification [42164.0, 3.07, 398600.4418, 1e-06]', [42164.0, 3.07, 398600.4418, 1e-06], ['elliptic', 42036.503, 4.348235, None]), ('orbit energy classification [2.0, 1.0, 1.0, 0.0001]', [2.0, 1.0, 1.0, 0.0001], ['parabolic', None, 1.0, None]), ('orbit energy classification [100.0, 0.1414, 1.0, 0.001]', [100.0, 0.1414, 1.0, 0.001], ['parabolic', None, 0.141421, None]), ('orbit energy classification [1.0, 1.05, 1.0, 0.5]', [1.0, 1.05, 1.0, 0.5], ['parabolic', None, 1.414214, None]), ('orbit energy classification [2.0, 0.8, 1.0, 0.5]', [2.0, 0.8, 1.0, 0.5], ['parabolic', None, 1.0, None])], [('orbit energy classification [7000.0, 10.8, 398600.4418, 1e-06]', [7000.0, 10.8, 398600.4418, 1e-06], ['hyperbolic', -144726.71, 10.671731, 1.659566]), ('orbit energy classification [2.0, 1.0, 1.0, 0.0001]', [2.0, 1.0, 1.0, 0.0001], ['parabolic', None, 1.0, None]), ('orbit energy classification [100.0, 0.1414, 1.0, 0.001]', [100.0, 0.1414, 1.0, 0.001], ['parabolic', None, 0.141421, None]), ('orbit energy classification [1.0, 1.05, 1.0, 0.5]', [1.0, 1.05, 1.0, 0.5], ['parabolic', None, 1.414214, None]), ('orbit energy classification [2.0, 0.8, 1.0, 0.5]', [2.0, 0.8, 1.0, 0.5], ['parabolic', None, 1.0, None]), ('orbit energy classification [7000.0, 7.5, 398600.4418, 1e-06]', [7000.0, 7.5, 398600.4418, 1e-06], ['elliptic', 6915.843, 10.671731, None]), ('orbit energy classification [7000.0, 10.67, 398600.4418, 1e-06]', [7000.0, 10.67, 398600.4418, 1e-06], ['elliptic', 10790332.769, 10.671731, None])], [('orbit energy classification [1.0, 2.0, 1.0, 0.001]', [1.0, 2.0, 1.0, 0.001], ['hyperbolic', -0.5, 1.414214, 1.414214]), ('orbit energy classification [2.0, 0.8, 1.0, 0.5]', [2.0, 0.8, 1.0, 0.5], ['parabolic', None, 1.0, None]), ('orbit energy classification [7000.0, 7.5, 398600.4418, 1e-06]', [7000.0, 7.5, 398600.4418, 1e-06], ['elliptic', 6915.843, 10.671731, None]), ('orbit energy classification [7000.0, 10.8, 398600.4418, 1e-06]', [7000.0, 10.8, 398600.4418, 1e-06], ['hyperbolic', -144726.71, 10.671731, 1.659566]), ('orbit energy classification [7000.0, 10.67, 398600.4418, 1e-06]', [7000.0, 10.67, 398600.4418, 1e-06], ['elliptic', 10790332.769, 10.671731, None]), ('orbit energy classification [7000.0, 10.6713, 398600.4418, 0.0001]', [7000.0, 10.6713, 398600.4418, 0.0001], ['parabolic', None, 10.671731, None]), ('orbit energy classification [1.0, 1.4142, 1.0, 0.001]', [1.0, 1.4142, 1.0, 0.001], ['parabolic', None, 1.414214, 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":"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-energy_class-hyperbolic-axis-convention","generated_at":"2026-09-29T14:48:13.495290+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 axis is passed through abs(), discarding the negative-a convention for hyperbolas.","sha256":"8aa8493d9666e4b09c16862046f227073163743f50570bce288554fd80aa8031","title":"Orbit energy classification: Hyperbolic semi-major axis is reported as a magnitude · 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.789,"exit_code":1,"observations":[{"actual":["hyperbolic",null,10.671731,1.659566],"check":"orbit energy classification [7000.0, 10.8, 398600.4418, 1e-06]","expected":["hyperbolic",-144726.71,10.671731,1.659566],"passed":false},{"actual":["elliptic",6915.843,10.671731,null],"check":"orbit energy classification [7000.0, 7.5, 398600.4418, 1e-06]","expected":["elliptic",6915.843,10.671731,null],"passed":true},{"actual":["elliptic",10790332.769,10.671731,null],"check":"orbit energy classification [7000.0, 10.67, 398600.4418, 1e-06]","expected":["elliptic",10790332.769,10.671731,null],"passed":true},{"actual":["parabolic",null,10.671731,null],"check":"orbit energy classification [7000.0, 10.6713, 398600.4418, 0.0001]","expected":["parabolic",null,10.671731,null],"passed":true},{"actual":["parabolic",null,1.414214,null],"check":"orbit energy classification [1.0, 1.4142, 1.0, 0.001]","expected":["parabolic",null,1.414214,null],"passed":true},{"actual":["elliptic",1.0,1.414214,null],"check":"orbit energy classification [1.0, 1.0, 1.0, 0.001]","expected":["elliptic",1.0,1.414214,null],"passed":true},{"actual":["hyperbolic",null,1.414214,1.414214],"check":"orbit energy classification [1.0, 2.0, 1.0, 0.001]","expected":["hyperbolic",-0.5,1.414214,1.414214],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"orbit energy classification [7000.0, 10.8, 398600.4418, 1e-06]\", \"actual\": [\"hyperbolic\", null, 10.671731, 1.659566], \"expected\": [\"hyperbolic\", -144726.71, 10.671731, 1.659566], \"passed\": false}, {\"check\": \"orbit energy classification [7000.0, 7.5, 398600.4418, 1e-06]\", \"actual\": [\"elliptic\", 6915.843, 10.671731, null], \"expected\": [\"elliptic\", 6915.843, 10.671731, null], \"passed\": true}, {\"check\": \"orbit energy classification [7000.0, 10.67, 398600.4418, 1e-06]\", \"actual\": [\"elliptic\", 10790332.769, 10.671731, null], \"expected\": [\"elliptic\", 10790332.769, 10.671731, null], \"passed\": true}, {\"check\": \"orbit energy classification [7000.0, 10.6713, 398600.4418, 0.0001]\", \"actual\": [\"parabolic\", null, 10.671731, null], \"expected\": [\"parabolic\", null, 10.671731, null], \"passed\": true}, {\"check\": \"orbit energy classification [1.0, 1.4142, 1.0, 0.001]\", \"actual\": [\"parabolic\", null, 1.414214, null], \"expected\": [\"parabolic\", null, 1.414214, null], \"passed\": true}, {\"check\": \"orbit energy classification [1.0, 1.0, 1.0, 0.001]\", \"actual\": [\"elliptic\", 1.0, 1.414214, null], \"expected\": [\"elliptic\", 1.0, 1.414214, null], \"passed\": true}, {\"check\": \"orbit energy classification [1.0, 2.0, 1.0, 0.001]\", \"actual\": [\"hyperbolic\", null, 1.414214, 1.414214], \"expected\": [\"hyperbolic\", -0.5, 1.414214, 1.414214], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":36.769,"exit_code":1,"observations":[{"actual":["hyperbolic",144726.71,10.671731,1.659566],"check":"orbit energy classification [7000.0, 10.8, 398600.4418, 1e-06]","expected":["hyperbolic",-144726.71,10.671731,1.659566],"passed":false},{"actual":["elliptic",6915.843,10.671731,null],"check":"orbit energy classification [7000.0, 7.5, 398600.4418, 1e-06]","expected":["elliptic",6915.843,10.671731,null],"passed":true},{"actual":["elliptic",10790332.769,10.671731,null],"check":"orbit energy classification [7000.0, 10.67, 398600.4418, 1e-06]","expected":["elliptic",10790332.769,10.671731,null],"passed":true},{"actual":["parabolic",null,10.671731,null],"check":"orbit energy classification [7000.0, 10.6713, 398600.4418, 0.0001]","expected":["parabolic",null,10.671731,null],"passed":true},{"actual":["parabolic",null,1.414214,null],"check":"orbit energy classification [1.0, 1.4142, 1.0, 0.001]","expected":["parabolic",null,1.414214,null],"passed":true},{"actual":["elliptic",1.0,1.414214,null],"check":"orbit energy classification [1.0, 1.0, 1.0, 0.001]","expected":["elliptic",1.0,1.414214,null],"passed":true},{"actual":["hyperbolic",0.5,1.414214,1.414214],"check":"orbit energy classification [1.0, 2.0, 1.0, 0.001]","expected":["hyperbolic",-0.5,1.414214,1.414214],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"orbit energy classification [7000.0, 10.8, 398600.4418, 1e-06]\", \"actual\": [\"hyperbolic\", 144726.71, 10.671731, 1.659566], \"expected\": [\"hyperbolic\", -144726.71, 10.671731, 1.659566], \"passed\": false}, {\"check\": \"orbit energy classification [7000.0, 7.5, 398600.4418, 1e-06]\", \"actual\": [\"elliptic\", 6915.843, 10.671731, null], \"expected\": [\"elliptic\", 6915.843, 10.671731, null], \"passed\": true}, {\"check\": \"orbit energy classification [7000.0, 10.67, 398600.4418, 1e-06]\", \"actual\": [\"elliptic\", 10790332.769, 10.671731, null], \"expected\": [\"elliptic\", 10790332.769, 10.671731, null], \"passed\": true}, {\"check\": \"orbit energy classification [7000.0, 10.6713, 398600.4418, 0.0001]\", \"actual\": [\"parabolic\", null, 10.671731, null], \"expected\": [\"parabolic\", null, 10.671731, null], \"passed\": true}, {\"check\": \"orbit energy classification [1.0, 1.4142, 1.0, 0.001]\", \"actual\": [\"parabolic\", null, 1.414214, null], \"expected\": [\"parabolic\", null, 1.414214, null], \"passed\": true}, {\"check\": \"orbit energy classification [1.0, 1.0, 1.0, 0.001]\", \"actual\": [\"elliptic\", 1.0, 1.414214, null], \"expected\": [\"elliptic\", 1.0, 1.414214, null], \"passed\": true}, {\"check\": \"orbit energy classification [1.0, 2.0, 1.0, 0.001]\", \"actual\": [\"hyperbolic\", 0.5, 1.414214, 1.414214], \"expected\": [\"hyperbolic\", -0.5, 1.414214, 1.414214], \"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."}}