{"abstract":"Departure burn equals only the excess over escape.","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":"Subtracting vinf compares the wrong states.","family":"w2-orbital_propagation-hyperbolic_departure-parking-speed","id":"FA-69826","implementations":{"attempt":{"sha256":"2792f47700682ecc1cfd5c50a2f0a44ffeea33b2449be529ce1de649b8e9738a","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+2*mu/r)\n    dv=vp-vinf\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":"7ec497e990033c1719f764c0ab90c54574098b3cae8772e041a5fa3dbdf9c366","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+2*mu/r)\n    dv=vp-math.sqrt(2*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-parking-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":"dv subtracts sqrt(2mu/r).","sha256":"3d114c7f518a23f12c164917ddfd905a8349a8aaead71fccc08b685334a5e7fc","title":"Hyperbolic departure from a parking orbit: Burn subtracts escape speed instead of circular speed · 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.179,"exit_code":1,"observations":[{"actual":[11.330366,8.330366,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":[10.937422,10.437422,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":[12.242787,6.242787,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":[4.59969,3.09969,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.732051,0.732051,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":true},{"actual":[1.044031,0.744031,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":[15.562519,4.562519,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\": [11.330366, 8.330366, 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\": [10.937422, 10.437422, 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\": [12.242787, 6.242787, 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\": [4.59969, 3.09969, 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.732051, 0.732051, 2.0, 60.0], \"expected\": [1.732051, 0.732051, 2.0, 60.0], \"passed\": true}, {\"check\": \"hyperbolic departure from a parking orbit [2.0, 0.3, 1.0]\", \"actual\": [1.044031, 0.744031, 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\": [15.562519, 4.562519, 2.996832, 38.9853], \"expected\": [15.562519, 7.778176, 2.996832, 38.9853], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":37.82,"exit_code":1,"observations":[{"actual":[11.330366,0.404379,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":[10.937422,0.011435,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":[12.242787,1.571056,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":[4.59969,0.251455,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.732051,0.317837,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.044031,0.044031,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":[15.562519,4.553795,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\": [11.330366, 0.404379, 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\": [10.937422, 0.011435, 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\": [12.242787, 1.571056, 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\": [4.59969, 0.251455, 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.732051, 0.317837, 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.044031, 0.044031, 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\": [15.562519, 4.553795, 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."}}