{"abstract":"Arrival burns are scheduled at the departure point.","category":"Orbital propagation","checks":7,"contract":"Input [r1, r2, mu] circular radii. Transfer a=(r1+r2)/2; burn 1 = |v_peri - v_circ1|, burn 2 = |v_circ2 - v_apo| using vis-viva at each end; time of flight is half the transfer period. Works inward (r2<r1) too. Return [dv1, dv2, total] rounded 6 and tof rounded 3.","contract_signature":"x","evaluation_group":"w2-orbital_propagation-hohmann","failed_approach":"A quarter period arrives at the minor axis, not apoapsis.","family":"w2-orbital_propagation-hohmann-transfer-duration","id":"FA-69646","implementations":{"attempt":{"sha256":"b9db01c95711c2537809d76ed47a260f3fa79b97514b88fe0054b3930ae4dbfc","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    r1,r2,mu=x\n    at=(r1+r2)/2\n    v1=math.sqrt(mu/r1); v2=math.sqrt(mu/r2)\n    vp=math.sqrt(mu*(2/r1-1/at)); va=math.sqrt(mu*(2/r2-1/at))\n    dv1=abs(vp-v1); dv2=abs(v2-va)\n    tof=math.pi*math.sqrt(at**3/mu)/2\n    return [round(dv1,6),round(dv2,6),round(dv1+dv2,6),round(tof,3)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('hohmann transfer budget [6678.0, 42164.0, 398600.4418]', [6678.0, 42164.0, 398600.4418], [2.425769, 1.466839, 3.892608, 18990.052]), ('hohmann transfer budget [42164.0, 6678.0, 398600.4418]', [42164.0, 6678.0, 398600.4418], [1.466839, 2.425769, 3.892608, 18990.052]), ('hohmann transfer budget [7000.0, 7500.0, 398600.4418]', [7000.0, 7500.0, 398600.4418], [0.129002, 0.126795, 0.255797, 3071.765]), ('hohmann transfer budget [1.0, 1.524, 1.0]', [1.0, 1.524, 1.0], [0.098912, 0.088971, 0.187883, 4.454]), ('hohmann transfer budget [1.0, 5.2, 1.0]', [1.0, 5.2, 1.0], [0.295152, 0.189461, 0.484614, 17.147]), ('hohmann transfer budget [6778.0, 6778.0, 398600.4418]', [6778.0, 6778.0, 398600.4418], [0.0, 0.0, 0.0, 2776.728]), ('hohmann transfer budget [10000.0, 7000.0, 398600.4418]', [10000.0, 7000.0, 398600.4418], [0.58409, 0.638791, 1.222881, 3899.504])], [('hohmann transfer budget [42164.0, 6678.0, 398600.4418]', [42164.0, 6678.0, 398600.4418], [1.466839, 2.425769, 3.892608, 18990.052]), ('hohmann transfer budget [1.0, 1.524, 1.0]', [1.0, 1.524, 1.0], [0.098912, 0.088971, 0.187883, 4.454]), ('hohmann transfer budget [1.0, 5.2, 1.0]', [1.0, 5.2, 1.0], [0.295152, 0.189461, 0.484614, 17.147]), ('hohmann transfer budget [6778.0, 6778.0, 398600.4418]', [6778.0, 6778.0, 398600.4418], [0.0, 0.0, 0.0, 2776.728]), ('hohmann transfer budget [10000.0, 7000.0, 398600.4418]', [10000.0, 7000.0, 398600.4418], [0.58409, 0.638791, 1.222881, 3899.504]), ('hohmann transfer budget [7000.0, 8000.0, 398600.4418]', [7000.0, 8000.0, 398600.4418], [0.247477, 0.239347, 0.486825, 3232.011]), ('hohmann transfer budget [8000.0, 7000.0, 398600.4418]', [8000.0, 7000.0, 398600.4418], [0.239347, 0.247477, 0.486825, 3232.011])], [('hohmann transfer budget [7000.0, 7500.0, 398600.4418]', [7000.0, 7500.0, 398600.4418], [0.129002, 0.126795, 0.255797, 3071.765]), ('hohmann transfer budget [10000.0, 7000.0, 398600.4418]', [10000.0, 7000.0, 398600.4418], [0.58409, 0.638791, 1.222881, 3899.504]), ('hohmann transfer budget [7000.0, 8000.0, 398600.4418]', [7000.0, 8000.0, 398600.4418], [0.247477, 0.239347, 0.486825, 3232.011]), ('hohmann transfer budget [8000.0, 7000.0, 398600.4418]', [8000.0, 7000.0, 398600.4418], [0.239347, 0.247477, 0.486825, 3232.011]), ('hohmann transfer budget [1.0, 1.2, 1.0]', [1.0, 1.2, 1.0], [0.044466, 0.042483, 0.086949, 3.624]), ('hohmann transfer budget [1.3, 1.0, 1.0]', [1.3, 1.0, 1.0], [0.059197, 0.063219, 0.122416, 3.874]), ('hohmann transfer budget [6778.0, 7178.0, 398600.4418]', [6778.0, 7178.0, 398600.4418], [0.109121, 0.107568, 0.216689, 2900.53])], [('hohmann transfer budget [1.0, 1.524, 1.0]', [1.0, 1.524, 1.0], [0.098912, 0.088971, 0.187883, 4.454]), ('hohmann transfer budget [1.0, 1.2, 1.0]', [1.0, 1.2, 1.0], [0.044466, 0.042483, 0.086949, 3.624]), ('hohmann transfer budget [1.3, 1.0, 1.0]', [1.3, 1.0, 1.0], [0.059197, 0.063219, 0.122416, 3.874]), ('hohmann transfer budget [6778.0, 7178.0, 398600.4418]', [6778.0, 7178.0, 398600.4418], [0.109121, 0.107568, 0.216689, 2900.53]), ('hohmann transfer budget [6678.0, 42164.0, 398600.4418]', [6678.0, 42164.0, 398600.4418], [2.425769, 1.466839, 3.892608, 18990.052]), ('hohmann transfer budget [42164.0, 6678.0, 398600.4418]', [42164.0, 6678.0, 398600.4418], [1.466839, 2.425769, 3.892608, 18990.052]), ('hohmann transfer budget [7000.0, 7500.0, 398600.4418]', [7000.0, 7500.0, 398600.4418], [0.129002, 0.126795, 0.255797, 3071.765])], [('hohmann transfer budget [1.0, 5.2, 1.0]', [1.0, 5.2, 1.0], [0.295152, 0.189461, 0.484614, 17.147]), ('hohmann transfer budget [6678.0, 42164.0, 398600.4418]', [6678.0, 42164.0, 398600.4418], [2.425769, 1.466839, 3.892608, 18990.052]), ('hohmann transfer budget [42164.0, 6678.0, 398600.4418]', [42164.0, 6678.0, 398600.4418], [1.466839, 2.425769, 3.892608, 18990.052]), ('hohmann transfer budget [7000.0, 7500.0, 398600.4418]', [7000.0, 7500.0, 398600.4418], [0.129002, 0.126795, 0.255797, 3071.765]), ('hohmann transfer budget [1.0, 1.524, 1.0]', [1.0, 1.524, 1.0], [0.098912, 0.088971, 0.187883, 4.454]), ('hohmann transfer budget [6778.0, 6778.0, 398600.4418]', [6778.0, 6778.0, 398600.4418], [0.0, 0.0, 0.0, 2776.728]), ('hohmann transfer budget [10000.0, 7000.0, 398600.4418]', [10000.0, 7000.0, 398600.4418], [0.58409, 0.638791, 1.222881, 3899.504])]]\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":"f719447fd8c1dc9690a6373679a2336dd96dc28429fa67cb77adece31f77c7ad","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    r1,r2,mu=x\n    at=(r1+r2)/2\n    v1=math.sqrt(mu/r1); v2=math.sqrt(mu/r2)\n    vp=math.sqrt(mu*(2/r1-1/at)); va=math.sqrt(mu*(2/r2-1/at))\n    dv1=abs(vp-v1); dv2=abs(v2-va)\n    tof=2*math.pi*math.sqrt(at**3/mu)\n    return [round(dv1,6),round(dv2,6),round(dv1+dv2,6),round(tof,3)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('hohmann transfer budget [6678.0, 42164.0, 398600.4418]', [6678.0, 42164.0, 398600.4418], [2.425769, 1.466839, 3.892608, 18990.052]), ('hohmann transfer budget [42164.0, 6678.0, 398600.4418]', [42164.0, 6678.0, 398600.4418], [1.466839, 2.425769, 3.892608, 18990.052]), ('hohmann transfer budget [7000.0, 7500.0, 398600.4418]', [7000.0, 7500.0, 398600.4418], [0.129002, 0.126795, 0.255797, 3071.765]), ('hohmann transfer budget [1.0, 1.524, 1.0]', [1.0, 1.524, 1.0], [0.098912, 0.088971, 0.187883, 4.454]), ('hohmann transfer budget [1.0, 5.2, 1.0]', [1.0, 5.2, 1.0], [0.295152, 0.189461, 0.484614, 17.147]), ('hohmann transfer budget [6778.0, 6778.0, 398600.4418]', [6778.0, 6778.0, 398600.4418], [0.0, 0.0, 0.0, 2776.728]), ('hohmann transfer budget [10000.0, 7000.0, 398600.4418]', [10000.0, 7000.0, 398600.4418], [0.58409, 0.638791, 1.222881, 3899.504])], [('hohmann transfer budget [42164.0, 6678.0, 398600.4418]', [42164.0, 6678.0, 398600.4418], [1.466839, 2.425769, 3.892608, 18990.052]), ('hohmann transfer budget [1.0, 1.524, 1.0]', [1.0, 1.524, 1.0], [0.098912, 0.088971, 0.187883, 4.454]), ('hohmann transfer budget [1.0, 5.2, 1.0]', [1.0, 5.2, 1.0], [0.295152, 0.189461, 0.484614, 17.147]), ('hohmann transfer budget [6778.0, 6778.0, 398600.4418]', [6778.0, 6778.0, 398600.4418], [0.0, 0.0, 0.0, 2776.728]), ('hohmann transfer budget [10000.0, 7000.0, 398600.4418]', [10000.0, 7000.0, 398600.4418], [0.58409, 0.638791, 1.222881, 3899.504]), ('hohmann transfer budget [7000.0, 8000.0, 398600.4418]', [7000.0, 8000.0, 398600.4418], [0.247477, 0.239347, 0.486825, 3232.011]), ('hohmann transfer budget [8000.0, 7000.0, 398600.4418]', [8000.0, 7000.0, 398600.4418], [0.239347, 0.247477, 0.486825, 3232.011])], [('hohmann transfer budget [7000.0, 7500.0, 398600.4418]', [7000.0, 7500.0, 398600.4418], [0.129002, 0.126795, 0.255797, 3071.765]), ('hohmann transfer budget [10000.0, 7000.0, 398600.4418]', [10000.0, 7000.0, 398600.4418], [0.58409, 0.638791, 1.222881, 3899.504]), ('hohmann transfer budget [7000.0, 8000.0, 398600.4418]', [7000.0, 8000.0, 398600.4418], [0.247477, 0.239347, 0.486825, 3232.011]), ('hohmann transfer budget [8000.0, 7000.0, 398600.4418]', [8000.0, 7000.0, 398600.4418], [0.239347, 0.247477, 0.486825, 3232.011]), ('hohmann transfer budget [1.0, 1.2, 1.0]', [1.0, 1.2, 1.0], [0.044466, 0.042483, 0.086949, 3.624]), ('hohmann transfer budget [1.3, 1.0, 1.0]', [1.3, 1.0, 1.0], [0.059197, 0.063219, 0.122416, 3.874]), ('hohmann transfer budget [6778.0, 7178.0, 398600.4418]', [6778.0, 7178.0, 398600.4418], [0.109121, 0.107568, 0.216689, 2900.53])], [('hohmann transfer budget [1.0, 1.524, 1.0]', [1.0, 1.524, 1.0], [0.098912, 0.088971, 0.187883, 4.454]), ('hohmann transfer budget [1.0, 1.2, 1.0]', [1.0, 1.2, 1.0], [0.044466, 0.042483, 0.086949, 3.624]), ('hohmann transfer budget [1.3, 1.0, 1.0]', [1.3, 1.0, 1.0], [0.059197, 0.063219, 0.122416, 3.874]), ('hohmann transfer budget [6778.0, 7178.0, 398600.4418]', [6778.0, 7178.0, 398600.4418], [0.109121, 0.107568, 0.216689, 2900.53]), ('hohmann transfer budget [6678.0, 42164.0, 398600.4418]', [6678.0, 42164.0, 398600.4418], [2.425769, 1.466839, 3.892608, 18990.052]), ('hohmann transfer budget [42164.0, 6678.0, 398600.4418]', [42164.0, 6678.0, 398600.4418], [1.466839, 2.425769, 3.892608, 18990.052]), ('hohmann transfer budget [7000.0, 7500.0, 398600.4418]', [7000.0, 7500.0, 398600.4418], [0.129002, 0.126795, 0.255797, 3071.765])], [('hohmann transfer budget [1.0, 5.2, 1.0]', [1.0, 5.2, 1.0], [0.295152, 0.189461, 0.484614, 17.147]), ('hohmann transfer budget [6678.0, 42164.0, 398600.4418]', [6678.0, 42164.0, 398600.4418], [2.425769, 1.466839, 3.892608, 18990.052]), ('hohmann transfer budget [42164.0, 6678.0, 398600.4418]', [42164.0, 6678.0, 398600.4418], [1.466839, 2.425769, 3.892608, 18990.052]), ('hohmann transfer budget [7000.0, 7500.0, 398600.4418]', [7000.0, 7500.0, 398600.4418], [0.129002, 0.126795, 0.255797, 3071.765]), ('hohmann transfer budget [1.0, 1.524, 1.0]', [1.0, 1.524, 1.0], [0.098912, 0.088971, 0.187883, 4.454]), ('hohmann transfer budget [6778.0, 6778.0, 398600.4418]', [6778.0, 6778.0, 398600.4418], [0.0, 0.0, 0.0, 2776.728]), ('hohmann transfer budget [10000.0, 7000.0, 398600.4418]', [10000.0, 7000.0, 398600.4418], [0.58409, 0.638791, 1.222881, 3899.504])]]\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-hohmann-transfer-duration","generated_at":"2026-09-29T14:48:13.397669+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":"tof uses 2pi instead of pi.","sha256":"fd2a6ecb9fd60ef5f580bdeda42c89829aa462fc97750241b048f5463d743791","title":"Hohmann transfer budget: Time of flight is a full transfer period · 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":42.234,"exit_code":1,"observations":[{"actual":[2.425769,1.466839,3.892608,9495.026],"check":"hohmann transfer budget [6678.0, 42164.0, 398600.4418]","expected":[2.425769,1.466839,3.892608,18990.052],"passed":false},{"actual":[1.466839,2.425769,3.892608,9495.026],"check":"hohmann transfer budget [42164.0, 6678.0, 398600.4418]","expected":[1.466839,2.425769,3.892608,18990.052],"passed":false},{"actual":[0.129002,0.126795,0.255797,1535.883],"check":"hohmann transfer budget [7000.0, 7500.0, 398600.4418]","expected":[0.129002,0.126795,0.255797,3071.765],"passed":false},{"actual":[0.098912,0.088971,0.187883,2.227],"check":"hohmann transfer budget [1.0, 1.524, 1.0]","expected":[0.098912,0.088971,0.187883,4.454],"passed":false},{"actual":[0.295152,0.189461,0.484614,8.574],"check":"hohmann transfer budget [1.0, 5.2, 1.0]","expected":[0.295152,0.189461,0.484614,17.147],"passed":false},{"actual":[0.0,0.0,0.0,1388.364],"check":"hohmann transfer budget [6778.0, 6778.0, 398600.4418]","expected":[0.0,0.0,0.0,2776.728],"passed":false},{"actual":[0.58409,0.638791,1.222881,1949.752],"check":"hohmann transfer budget [10000.0, 7000.0, 398600.4418]","expected":[0.58409,0.638791,1.222881,3899.504],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"hohmann transfer budget [6678.0, 42164.0, 398600.4418]\", \"actual\": [2.425769, 1.466839, 3.892608, 9495.026], \"expected\": [2.425769, 1.466839, 3.892608, 18990.052], \"passed\": false}, {\"check\": \"hohmann transfer budget [42164.0, 6678.0, 398600.4418]\", \"actual\": [1.466839, 2.425769, 3.892608, 9495.026], \"expected\": [1.466839, 2.425769, 3.892608, 18990.052], \"passed\": false}, {\"check\": \"hohmann transfer budget [7000.0, 7500.0, 398600.4418]\", \"actual\": [0.129002, 0.126795, 0.255797, 1535.883], \"expected\": [0.129002, 0.126795, 0.255797, 3071.765], \"passed\": false}, {\"check\": \"hohmann transfer budget [1.0, 1.524, 1.0]\", \"actual\": [0.098912, 0.088971, 0.187883, 2.227], \"expected\": [0.098912, 0.088971, 0.187883, 4.454], \"passed\": false}, {\"check\": \"hohmann transfer budget [1.0, 5.2, 1.0]\", \"actual\": [0.295152, 0.189461, 0.484614, 8.574], \"expected\": [0.295152, 0.189461, 0.484614, 17.147], \"passed\": false}, {\"check\": \"hohmann transfer budget [6778.0, 6778.0, 398600.4418]\", \"actual\": [0.0, 0.0, 0.0, 1388.364], \"expected\": [0.0, 0.0, 0.0, 2776.728], \"passed\": false}, {\"check\": \"hohmann transfer budget [10000.0, 7000.0, 398600.4418]\", \"actual\": [0.58409, 0.638791, 1.222881, 1949.752], \"expected\": [0.58409, 0.638791, 1.222881, 3899.504], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.284,"exit_code":1,"observations":[{"actual":[2.425769,1.466839,3.892608,37980.104],"check":"hohmann transfer budget [6678.0, 42164.0, 398600.4418]","expected":[2.425769,1.466839,3.892608,18990.052],"passed":false},{"actual":[1.466839,2.425769,3.892608,37980.104],"check":"hohmann transfer budget [42164.0, 6678.0, 398600.4418]","expected":[1.466839,2.425769,3.892608,18990.052],"passed":false},{"actual":[0.129002,0.126795,0.255797,6143.53],"check":"hohmann transfer budget [7000.0, 7500.0, 398600.4418]","expected":[0.129002,0.126795,0.255797,3071.765],"passed":false},{"actual":[0.098912,0.088971,0.187883,8.908],"check":"hohmann transfer budget [1.0, 1.524, 1.0]","expected":[0.098912,0.088971,0.187883,4.454],"passed":false},{"actual":[0.295152,0.189461,0.484614,34.294],"check":"hohmann transfer budget [1.0, 5.2, 1.0]","expected":[0.295152,0.189461,0.484614,17.147],"passed":false},{"actual":[0.0,0.0,0.0,5553.456],"check":"hohmann transfer budget [6778.0, 6778.0, 398600.4418]","expected":[0.0,0.0,0.0,2776.728],"passed":false},{"actual":[0.58409,0.638791,1.222881,7799.008],"check":"hohmann transfer budget [10000.0, 7000.0, 398600.4418]","expected":[0.58409,0.638791,1.222881,3899.504],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"hohmann transfer budget [6678.0, 42164.0, 398600.4418]\", \"actual\": [2.425769, 1.466839, 3.892608, 37980.104], \"expected\": [2.425769, 1.466839, 3.892608, 18990.052], \"passed\": false}, {\"check\": \"hohmann transfer budget [42164.0, 6678.0, 398600.4418]\", \"actual\": [1.466839, 2.425769, 3.892608, 37980.104], \"expected\": [1.466839, 2.425769, 3.892608, 18990.052], \"passed\": false}, {\"check\": \"hohmann transfer budget [7000.0, 7500.0, 398600.4418]\", \"actual\": [0.129002, 0.126795, 0.255797, 6143.53], \"expected\": [0.129002, 0.126795, 0.255797, 3071.765], \"passed\": false}, {\"check\": \"hohmann transfer budget [1.0, 1.524, 1.0]\", \"actual\": [0.098912, 0.088971, 0.187883, 8.908], \"expected\": [0.098912, 0.088971, 0.187883, 4.454], \"passed\": false}, {\"check\": \"hohmann transfer budget [1.0, 5.2, 1.0]\", \"actual\": [0.295152, 0.189461, 0.484614, 34.294], \"expected\": [0.295152, 0.189461, 0.484614, 17.147], \"passed\": false}, {\"check\": \"hohmann transfer budget [6778.0, 6778.0, 398600.4418]\", \"actual\": [0.0, 0.0, 0.0, 5553.456], \"expected\": [0.0, 0.0, 0.0, 2776.728], \"passed\": false}, {\"check\": \"hohmann transfer budget [10000.0, 7000.0, 398600.4418]\", \"actual\": [0.58409, 0.638791, 1.222881, 7799.008], \"expected\": [0.58409, 0.638791, 1.222881, 3899.504], \"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."}}