{"abstract":"Departure burns are underestimated.","category":"Orbital propagation","checks":7,"contract":"Input [r, vinf, mu]: circular parking radius and required hyperbolic excess speed. Periapsis speed vp=sqrt(vinf^2+2mu/r); burn dv=vp-sqrt(mu/r); eccentricity e=1+r vinf^2/mu; turn angle delta=2 asin(1/e) in degrees. Return [vp, dv, e rounded 6, delta rounded 4].","contract_signature":"x","evaluation_group":"w2-orbital_propagation-hyperbolic_departure","failed_approach":"Adding vinf to the escape speed is not energy conservation.","family":"w2-orbital_propagation-hyperbolic_departure-periapsis-speed","id":"FA-69821","implementations":{"attempt":{"sha256":"bd1b4c72740618ec2a2b382d655d43a4fe3ca6537943106283094df9a10202db","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    r,vinf,mu=x\n    vp=vinf+math.sqrt(2*mu/r)\n    dv=vp-math.sqrt(mu/r)\n    e=1+r*vinf*vinf/mu\n    delta=math.degrees(2*math.asin(1/e))\n    return [round(vp,6),round(dv,6),round(e,6),round(delta,4)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('hyperbolic departure from a parking orbit [6678.0, 3.0, 398600.4418]', [6678.0, 3.0, 398600.4418], [11.330366, 3.604526, 1.150783, 120.6792]), ('hyperbolic departure from a parking orbit [6678.0, 0.5, 398600.4418]', [6678.0, 0.5, 398600.4418], [10.937422, 3.211582, 1.004188, 169.5303]), ('hyperbolic departure from a parking orbit [7000.0, 6.0, 398600.4418]', [7000.0, 6.0, 398600.4418], [12.242787, 4.696734, 1.632212, 75.565]), ('hyperbolic departure from a parking orbit [42164.0, 1.5, 398600.4418]', [42164.0, 1.5, 398600.4418], [4.59969, 1.525023, 1.238005, 107.7536]), ('hyperbolic departure from a parking orbit [1.0, 1.0, 1.0]', [1.0, 1.0, 1.0], [1.732051, 0.732051, 2.0, 60.0]), ('hyperbolic departure from a parking orbit [2.0, 0.3, 1.0]', [2.0, 0.3, 1.0], [1.044031, 0.336924, 1.18, 115.8724]), ('hyperbolic departure from a parking orbit [6578.0, 11.0, 398600.4418]', [6578.0, 11.0, 398600.4418], [15.562519, 7.778176, 2.996832, 38.9853])], [('hyperbolic departure from a parking orbit [6678.0, 0.5, 398600.4418]', [6678.0, 0.5, 398600.4418], [10.937422, 3.211582, 1.004188, 169.5303]), ('hyperbolic departure from a parking orbit [42164.0, 1.5, 398600.4418]', [42164.0, 1.5, 398600.4418], [4.59969, 1.525023, 1.238005, 107.7536]), ('hyperbolic departure from a parking orbit [1.0, 1.0, 1.0]', [1.0, 1.0, 1.0], [1.732051, 0.732051, 2.0, 60.0]), ('hyperbolic departure from a parking orbit [2.0, 0.3, 1.0]', [2.0, 0.3, 1.0], [1.044031, 0.336924, 1.18, 115.8724]), ('hyperbolic departure from a parking orbit [6578.0, 11.0, 398600.4418]', [6578.0, 11.0, 398600.4418], [15.562519, 7.778176, 2.996832, 38.9853]), ('hyperbolic departure from a parking orbit [1.0, 0.0, 1.0]', [1.0, 0.0, 1.0], [1.414214, 0.414214, 1.0, 180.0]), ('hyperbolic departure from a parking orbit [6678.0, 3.0, 398600.4418]', [6678.0, 3.0, 398600.4418], [11.330366, 3.604526, 1.150783, 120.6792])], [('hyperbolic departure from a parking orbit [7000.0, 6.0, 398600.4418]', [7000.0, 6.0, 398600.4418], [12.242787, 4.696734, 1.632212, 75.565]), ('hyperbolic departure from a parking orbit [6578.0, 11.0, 398600.4418]', [6578.0, 11.0, 398600.4418], [15.562519, 7.778176, 2.996832, 38.9853]), ('hyperbolic departure from a parking orbit [1.0, 0.0, 1.0]', [1.0, 0.0, 1.0], [1.414214, 0.414214, 1.0, 180.0]), ('hyperbolic departure from a parking orbit [6678.0, 3.0, 398600.4418]', [6678.0, 3.0, 398600.4418], [11.330366, 3.604526, 1.150783, 120.6792]), ('hyperbolic departure from a parking orbit [6678.0, 0.5, 398600.4418]', [6678.0, 0.5, 398600.4418], [10.937422, 3.211582, 1.004188, 169.5303]), ('hyperbolic departure from a parking orbit [42164.0, 1.5, 398600.4418]', [42164.0, 1.5, 398600.4418], [4.59969, 1.525023, 1.238005, 107.7536]), ('hyperbolic departure from a parking orbit [1.0, 1.0, 1.0]', [1.0, 1.0, 1.0], [1.732051, 0.732051, 2.0, 60.0])], [('hyperbolic departure from a parking orbit [42164.0, 1.5, 398600.4418]', [42164.0, 1.5, 398600.4418], [4.59969, 1.525023, 1.238005, 107.7536]), ('hyperbolic departure from a parking orbit [6678.0, 0.5, 398600.4418]', [6678.0, 0.5, 398600.4418], [10.937422, 3.211582, 1.004188, 169.5303]), ('hyperbolic departure from a parking orbit [7000.0, 6.0, 398600.4418]', [7000.0, 6.0, 398600.4418], [12.242787, 4.696734, 1.632212, 75.565]), ('hyperbolic departure from a parking orbit [1.0, 1.0, 1.0]', [1.0, 1.0, 1.0], [1.732051, 0.732051, 2.0, 60.0]), ('hyperbolic departure from a parking orbit [2.0, 0.3, 1.0]', [2.0, 0.3, 1.0], [1.044031, 0.336924, 1.18, 115.8724]), ('hyperbolic departure from a parking orbit [6578.0, 11.0, 398600.4418]', [6578.0, 11.0, 398600.4418], [15.562519, 7.778176, 2.996832, 38.9853]), ('hyperbolic departure from a parking orbit [1.0, 0.0, 1.0]', [1.0, 0.0, 1.0], [1.414214, 0.414214, 1.0, 180.0])], [('hyperbolic departure from a parking orbit [1.0, 1.0, 1.0]', [1.0, 1.0, 1.0], [1.732051, 0.732051, 2.0, 60.0]), ('hyperbolic departure from a parking orbit [2.0, 0.3, 1.0]', [2.0, 0.3, 1.0], [1.044031, 0.336924, 1.18, 115.8724]), ('hyperbolic departure from a parking orbit [6578.0, 11.0, 398600.4418]', [6578.0, 11.0, 398600.4418], [15.562519, 7.778176, 2.996832, 38.9853]), ('hyperbolic departure from a parking orbit [1.0, 0.0, 1.0]', [1.0, 0.0, 1.0], [1.414214, 0.414214, 1.0, 180.0]), ('hyperbolic departure from a parking orbit [6678.0, 3.0, 398600.4418]', [6678.0, 3.0, 398600.4418], [11.330366, 3.604526, 1.150783, 120.6792]), ('hyperbolic departure from a parking orbit [6678.0, 0.5, 398600.4418]', [6678.0, 0.5, 398600.4418], [10.937422, 3.211582, 1.004188, 169.5303]), ('hyperbolic departure from a parking orbit [7000.0, 6.0, 398600.4418]', [7000.0, 6.0, 398600.4418], [12.242787, 4.696734, 1.632212, 75.565])]]\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":"ba000403c71f28e1a25cdd9ac5a1203cbfbd1bd816a6fd0743f28ea0d54716d7","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    r,vinf,mu=x\n    vp=math.sqrt(vinf*vinf+mu/r)\n    dv=vp-math.sqrt(mu/r)\n    e=1+r*vinf*vinf/mu\n    delta=math.degrees(2*math.asin(1/e))\n    return [round(vp,6),round(dv,6),round(e,6),round(delta,4)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('hyperbolic departure from a parking orbit [6678.0, 3.0, 398600.4418]', [6678.0, 3.0, 398600.4418], [11.330366, 3.604526, 1.150783, 120.6792]), ('hyperbolic departure from a parking orbit [6678.0, 0.5, 398600.4418]', [6678.0, 0.5, 398600.4418], [10.937422, 3.211582, 1.004188, 169.5303]), ('hyperbolic departure from a parking orbit [7000.0, 6.0, 398600.4418]', [7000.0, 6.0, 398600.4418], [12.242787, 4.696734, 1.632212, 75.565]), ('hyperbolic departure from a parking orbit [42164.0, 1.5, 398600.4418]', [42164.0, 1.5, 398600.4418], [4.59969, 1.525023, 1.238005, 107.7536]), ('hyperbolic departure from a parking orbit [1.0, 1.0, 1.0]', [1.0, 1.0, 1.0], [1.732051, 0.732051, 2.0, 60.0]), ('hyperbolic departure from a parking orbit [2.0, 0.3, 1.0]', [2.0, 0.3, 1.0], [1.044031, 0.336924, 1.18, 115.8724]), ('hyperbolic departure from a parking orbit [6578.0, 11.0, 398600.4418]', [6578.0, 11.0, 398600.4418], [15.562519, 7.778176, 2.996832, 38.9853])], [('hyperbolic departure from a parking orbit [6678.0, 0.5, 398600.4418]', [6678.0, 0.5, 398600.4418], [10.937422, 3.211582, 1.004188, 169.5303]), ('hyperbolic departure from a parking orbit [42164.0, 1.5, 398600.4418]', [42164.0, 1.5, 398600.4418], [4.59969, 1.525023, 1.238005, 107.7536]), ('hyperbolic departure from a parking orbit [1.0, 1.0, 1.0]', [1.0, 1.0, 1.0], [1.732051, 0.732051, 2.0, 60.0]), ('hyperbolic departure from a parking orbit [2.0, 0.3, 1.0]', [2.0, 0.3, 1.0], [1.044031, 0.336924, 1.18, 115.8724]), ('hyperbolic departure from a parking orbit [6578.0, 11.0, 398600.4418]', [6578.0, 11.0, 398600.4418], [15.562519, 7.778176, 2.996832, 38.9853]), ('hyperbolic departure from a parking orbit [1.0, 0.0, 1.0]', [1.0, 0.0, 1.0], [1.414214, 0.414214, 1.0, 180.0]), ('hyperbolic departure from a parking orbit [6678.0, 3.0, 398600.4418]', [6678.0, 3.0, 398600.4418], [11.330366, 3.604526, 1.150783, 120.6792])], [('hyperbolic departure from a parking orbit [7000.0, 6.0, 398600.4418]', [7000.0, 6.0, 398600.4418], [12.242787, 4.696734, 1.632212, 75.565]), ('hyperbolic departure from a parking orbit [6578.0, 11.0, 398600.4418]', [6578.0, 11.0, 398600.4418], [15.562519, 7.778176, 2.996832, 38.9853]), ('hyperbolic departure from a parking orbit [1.0, 0.0, 1.0]', [1.0, 0.0, 1.0], [1.414214, 0.414214, 1.0, 180.0]), ('hyperbolic departure from a parking orbit [6678.0, 3.0, 398600.4418]', [6678.0, 3.0, 398600.4418], [11.330366, 3.604526, 1.150783, 120.6792]), ('hyperbolic departure from a parking orbit [6678.0, 0.5, 398600.4418]', [6678.0, 0.5, 398600.4418], [10.937422, 3.211582, 1.004188, 169.5303]), ('hyperbolic departure from a parking orbit [42164.0, 1.5, 398600.4418]', [42164.0, 1.5, 398600.4418], [4.59969, 1.525023, 1.238005, 107.7536]), ('hyperbolic departure from a parking orbit [1.0, 1.0, 1.0]', [1.0, 1.0, 1.0], [1.732051, 0.732051, 2.0, 60.0])], [('hyperbolic departure from a parking orbit [42164.0, 1.5, 398600.4418]', [42164.0, 1.5, 398600.4418], [4.59969, 1.525023, 1.238005, 107.7536]), ('hyperbolic departure from a parking orbit [6678.0, 0.5, 398600.4418]', [6678.0, 0.5, 398600.4418], [10.937422, 3.211582, 1.004188, 169.5303]), ('hyperbolic departure from a parking orbit [7000.0, 6.0, 398600.4418]', [7000.0, 6.0, 398600.4418], [12.242787, 4.696734, 1.632212, 75.565]), ('hyperbolic departure from a parking orbit [1.0, 1.0, 1.0]', [1.0, 1.0, 1.0], [1.732051, 0.732051, 2.0, 60.0]), ('hyperbolic departure from a parking orbit [2.0, 0.3, 1.0]', [2.0, 0.3, 1.0], [1.044031, 0.336924, 1.18, 115.8724]), ('hyperbolic departure from a parking orbit [6578.0, 11.0, 398600.4418]', [6578.0, 11.0, 398600.4418], [15.562519, 7.778176, 2.996832, 38.9853]), ('hyperbolic departure from a parking orbit [1.0, 0.0, 1.0]', [1.0, 0.0, 1.0], [1.414214, 0.414214, 1.0, 180.0])], [('hyperbolic departure from a parking orbit [1.0, 1.0, 1.0]', [1.0, 1.0, 1.0], [1.732051, 0.732051, 2.0, 60.0]), ('hyperbolic departure from a parking orbit [2.0, 0.3, 1.0]', [2.0, 0.3, 1.0], [1.044031, 0.336924, 1.18, 115.8724]), ('hyperbolic departure from a parking orbit [6578.0, 11.0, 398600.4418]', [6578.0, 11.0, 398600.4418], [15.562519, 7.778176, 2.996832, 38.9853]), ('hyperbolic departure from a parking orbit [1.0, 0.0, 1.0]', [1.0, 0.0, 1.0], [1.414214, 0.414214, 1.0, 180.0]), ('hyperbolic departure from a parking orbit [6678.0, 3.0, 398600.4418]', [6678.0, 3.0, 398600.4418], [11.330366, 3.604526, 1.150783, 120.6792]), ('hyperbolic departure from a parking orbit [6678.0, 0.5, 398600.4418]', [6678.0, 0.5, 398600.4418], [10.937422, 3.211582, 1.004188, 169.5303]), ('hyperbolic departure from a parking orbit [7000.0, 6.0, 398600.4418]', [7000.0, 6.0, 398600.4418], [12.242787, 4.696734, 1.632212, 75.565])]]\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-hyperbolic_departure-periapsis-speed","generated_at":"2026-09-29T14:48:15.162667+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":"vp is computed as sqrt(vinf^2 + mu/r).","sha256":"05e716349b47727063ff61683ac166045792ee0db4a8fc5f859098118c236234","title":"Hyperbolic departure from a parking orbit: Periapsis speed uses the circular potential term · 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":38.886,"exit_code":1,"observations":[{"actual":[13.925987,6.200147,1.150783,120.6792],"check":"hyperbolic departure from a parking orbit [6678.0, 3.0, 398600.4418]","expected":[11.330366,3.604526,1.150783,120.6792],"passed":false},{"actual":[11.425987,3.700147,1.004188,169.5303],"check":"hyperbolic departure from a parking orbit [6678.0, 0.5, 398600.4418]","expected":[10.937422,3.211582,1.004188,169.5303],"passed":false},{"actual":[16.671731,9.125678,1.632212,75.565],"check":"hyperbolic departure from a parking orbit [7000.0, 6.0, 398600.4418]","expected":[12.242787,4.696734,1.632212,75.565],"passed":false},{"actual":[5.848235,2.773568,1.238005,107.7536],"check":"hyperbolic departure from a parking orbit [42164.0, 1.5, 398600.4418]","expected":[4.59969,1.525023,1.238005,107.7536],"passed":false},{"actual":[2.414214,1.414214,2.0,60.0],"check":"hyperbolic departure from a parking orbit [1.0, 1.0, 1.0]","expected":[1.732051,0.732051,2.0,60.0],"passed":false},{"actual":[1.3,0.592893,1.18,115.8724],"check":"hyperbolic departure from a parking orbit [2.0, 0.3, 1.0]","expected":[1.044031,0.336924,1.18,115.8724],"passed":false},{"actual":[22.008723,14.22438,2.996832,38.9853],"check":"hyperbolic departure from a parking orbit [6578.0, 11.0, 398600.4418]","expected":[15.562519,7.778176,2.996832,38.9853],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"hyperbolic departure from a parking orbit [6678.0, 3.0, 398600.4418]\", \"actual\": [13.925987, 6.200147, 1.150783, 120.6792], \"expected\": [11.330366, 3.604526, 1.150783, 120.6792], \"passed\": false}, {\"check\": \"hyperbolic departure from a parking orbit [6678.0, 0.5, 398600.4418]\", \"actual\": [11.425987, 3.700147, 1.004188, 169.5303], \"expected\": [10.937422, 3.211582, 1.004188, 169.5303], \"passed\": false}, {\"check\": \"hyperbolic departure from a parking orbit [7000.0, 6.0, 398600.4418]\", \"actual\": [16.671731, 9.125678, 1.632212, 75.565], \"expected\": [12.242787, 4.696734, 1.632212, 75.565], \"passed\": false}, {\"check\": \"hyperbolic departure from a parking orbit [42164.0, 1.5, 398600.4418]\", \"actual\": [5.848235, 2.773568, 1.238005, 107.7536], \"expected\": [4.59969, 1.525023, 1.238005, 107.7536], \"passed\": false}, {\"check\": \"hyperbolic departure from a parking orbit [1.0, 1.0, 1.0]\", \"actual\": [2.414214, 1.414214, 2.0, 60.0], \"expected\": [1.732051, 0.732051, 2.0, 60.0], \"passed\": false}, {\"check\": \"hyperbolic departure from a parking orbit [2.0, 0.3, 1.0]\", \"actual\": [1.3, 0.592893, 1.18, 115.8724], \"expected\": [1.044031, 0.336924, 1.18, 115.8724], \"passed\": false}, {\"check\": \"hyperbolic departure from a parking orbit [6578.0, 11.0, 398600.4418]\", \"actual\": [22.008723, 14.22438, 2.996832, 38.9853], \"expected\": [15.562519, 7.778176, 2.996832, 38.9853], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.997,"exit_code":1,"observations":[{"actual":[8.287858,0.562019,1.150783,120.6792],"check":"hyperbolic departure from a parking orbit [6678.0, 3.0, 398600.4418]","expected":[11.330366,3.604526,1.150783,120.6792],"passed":false},{"actual":[7.742002,0.016163,1.004188,169.5303],"check":"hyperbolic departure from a parking orbit [6678.0, 0.5, 398600.4418]","expected":[10.937422,3.211582,1.004188,169.5303],"passed":false},{"actual":[9.640691,2.094638,1.632212,75.565],"check":"hyperbolic departure from a parking orbit [7000.0, 6.0, 398600.4418]","expected":[12.242787,4.696734,1.632212,75.565],"passed":false},{"actual":[3.421048,0.346382,1.238005,107.7536],"check":"hyperbolic departure from a parking orbit [42164.0, 1.5, 398600.4418]","expected":[4.59969,1.525023,1.238005,107.7536],"passed":false},{"actual":[1.414214,0.414214,2.0,60.0],"check":"hyperbolic departure from a parking orbit [1.0, 1.0, 1.0]","expected":[1.732051,0.732051,2.0,60.0],"passed":false},{"actual":[0.768115,0.061008,1.18,115.8724],"check":"hyperbolic departure from a parking orbit [2.0, 0.3, 1.0]","expected":[1.044031,0.336924,1.18,115.8724],"passed":false},{"actual":[13.475756,5.691413,2.996832,38.9853],"check":"hyperbolic departure from a parking orbit [6578.0, 11.0, 398600.4418]","expected":[15.562519,7.778176,2.996832,38.9853],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"hyperbolic departure from a parking orbit [6678.0, 3.0, 398600.4418]\", \"actual\": [8.287858, 0.562019, 1.150783, 120.6792], \"expected\": [11.330366, 3.604526, 1.150783, 120.6792], \"passed\": false}, {\"check\": \"hyperbolic departure from a parking orbit [6678.0, 0.5, 398600.4418]\", \"actual\": [7.742002, 0.016163, 1.004188, 169.5303], \"expected\": [10.937422, 3.211582, 1.004188, 169.5303], \"passed\": false}, {\"check\": \"hyperbolic departure from a parking orbit [7000.0, 6.0, 398600.4418]\", \"actual\": [9.640691, 2.094638, 1.632212, 75.565], \"expected\": [12.242787, 4.696734, 1.632212, 75.565], \"passed\": false}, {\"check\": \"hyperbolic departure from a parking orbit [42164.0, 1.5, 398600.4418]\", \"actual\": [3.421048, 0.346382, 1.238005, 107.7536], \"expected\": [4.59969, 1.525023, 1.238005, 107.7536], \"passed\": false}, {\"check\": \"hyperbolic departure from a parking orbit [1.0, 1.0, 1.0]\", \"actual\": [1.414214, 0.414214, 2.0, 60.0], \"expected\": [1.732051, 0.732051, 2.0, 60.0], \"passed\": false}, {\"check\": \"hyperbolic departure from a parking orbit [2.0, 0.3, 1.0]\", \"actual\": [0.768115, 0.061008, 1.18, 115.8724], \"expected\": [1.044031, 0.336924, 1.18, 115.8724], \"passed\": false}, {\"check\": \"hyperbolic departure from a parking orbit [6578.0, 11.0, 398600.4418]\", \"actual\": [13.475756, 5.691413, 2.996832, 38.9853], \"expected\": [15.562519, 7.778176, 2.996832, 38.9853], \"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."}}