FAILURE MAP
← Case archive

FA-69721 / Orbital propagation / Open access

Elliptic time of flight between anomalies: Mean motion uses a squared axis · case 01

Durations scale with the wrong power of the orbit size.

Verified by executionVariant 1 · 7 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

n is sqrt(mu/a^2).

VERIFIED REPAIR

Use sqrt(mu/a^3).

Unsuccessful approach: sqrt(mu)/a^3 applies the square root to mu only.

Case contract

Input [a, e, nu1, nu2, mu] (degrees). Convert each true anomaly to eccentric anomaly with the half-angle atan2 form and to mean anomaly in [0,2pi); flight always proceeds forward, so dM=(M2-M1) mod 2pi. Return dM/n seconds rounded to 3 with n=sqrt(mu/a^3).

Why this case matters

Orbit determination and mission planning chain many small conversions; one wrong branch or unit silently moves a spacecraft by kilometres.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
    a,e,n1,n2,mu=x
    def Ma(nu):
        nu=math.radians(nu)
        E=2*math.atan2(math.sqrt(1-e)*math.sin(nu/2),math.sqrt(1+e)*math.cos(nu/2))
        return (E-e*math.sin(E))%(2*math.pi)
    n=math.sqrt(mu/a**2)
    dM=(Ma(n2)-Ma(n1))%(2*math.pi)
    return round(dM/n,3)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('elliptic time of flight between anomalies [7000.0, 0.1, 0.0, 90.0, 398600.4418]', [7000.0, 0.1, 0.0, 90.0, 398600.4418], 1271.911), ('elliptic time of flight between anomalies [7000.0, 0.1, 270.0, 30.0, 398600.4418]', [7000.0, 0.1, 270.0, 30.0, 398600.4418], 1670.595), ('elliptic time of flight between anomalies [26560.0, 0.7, 10.0, 350.0, 398600.4418]', [26560.0, 0.7, 10.0, 350.0, 398600.4418], 42774.887), ('elliptic time of flight between anomalies [26560.0, 0.7, 180.0, 200.0, 398600.4418]', [26560.0, 0.7, 180.0, 200.0, 398600.4418], 8874.68), ('elliptic time of flight between anomalies [1.0, 0.5, 45.0, 45.0, 1.0]', [1.0, 0.5, 45.0, 45.0, 1.0], 0.0), ('elliptic time of flight between anomalies [1.0, 0.3, 300.0, 60.0, 1.0]', [1.0, 0.3, 300.0, 60.0, 1.0], 1.172), ('elliptic time of flight between anomalies [1.0, 0.0, 0.0, 180.0, 1.0]', [1.0, 0.0, 0.0, 180.0, 1.0], 3.142)], [('elliptic time of flight between anomalies [7000.0, 0.1, 270.0, 30.0, 398600.4418]', [7000.0, 0.1, 270.0, 30.0, 398600.4418], 1670.595), ('elliptic time of flight between anomalies [26560.0, 0.7, 180.0, 200.0, 398600.4418]', [26560.0, 0.7, 180.0, 200.0, 398600.4418], 8874.68), ('elliptic time of flight between anomalies [1.0, 0.5, 45.0, 45.0, 1.0]', [1.0, 0.5, 45.0, 45.0, 1.0], 0.0), ('elliptic time of flight between anomalies [1.0, 0.3, 300.0, 60.0, 1.0]', [1.0, 0.3, 300.0, 60.0, 1.0], 1.172), ('elliptic time of flight between anomalies [1.0, 0.0, 0.0, 180.0, 1.0]', [1.0, 0.0, 0.0, 180.0, 1.0], 3.142), ('elliptic time of flight between anomalies [2.0, 0.9, 170.0, 190.0, 1.0]', [2.0, 0.9, 170.0, 190.0, 1.0], 7.512), ('elliptic time of flight between anomalies [2.0, 0.9, 350.0, 10.0, 1.0]', [2.0, 0.9, 350.0, 10.0, 1.0], 0.023)], [('elliptic time of flight between anomalies [26560.0, 0.7, 10.0, 350.0, 398600.4418]', [26560.0, 0.7, 10.0, 350.0, 398600.4418], 42774.887), ('elliptic time of flight between anomalies [1.0, 0.0, 0.0, 180.0, 1.0]', [1.0, 0.0, 0.0, 180.0, 1.0], 3.142), ('elliptic time of flight between anomalies [2.0, 0.9, 170.0, 190.0, 1.0]', [2.0, 0.9, 170.0, 190.0, 1.0], 7.512), ('elliptic time of flight between anomalies [2.0, 0.9, 350.0, 10.0, 1.0]', [2.0, 0.9, 350.0, 10.0, 1.0], 0.023), ('elliptic time of flight between anomalies [7000.0, 0.1, 0.0, 90.0, 398600.4418]', [7000.0, 0.1, 0.0, 90.0, 398600.4418], 1271.911), ('elliptic time of flight between anomalies [7000.0, 0.1, 270.0, 30.0, 398600.4418]', [7000.0, 0.1, 270.0, 30.0, 398600.4418], 1670.595), ('elliptic time of flight between anomalies [26560.0, 0.7, 180.0, 200.0, 398600.4418]', [26560.0, 0.7, 180.0, 200.0, 398600.4418], 8874.68)], [('elliptic time of flight between anomalies [26560.0, 0.7, 180.0, 200.0, 398600.4418]', [26560.0, 0.7, 180.0, 200.0, 398600.4418], 8874.68), ('elliptic time of flight between anomalies [7000.0, 0.1, 0.0, 90.0, 398600.4418]', [7000.0, 0.1, 0.0, 90.0, 398600.4418], 1271.911), ('elliptic time of flight between anomalies [7000.0, 0.1, 270.0, 30.0, 398600.4418]', [7000.0, 0.1, 270.0, 30.0, 398600.4418], 1670.595), ('elliptic time of flight between anomalies [26560.0, 0.7, 10.0, 350.0, 398600.4418]', [26560.0, 0.7, 10.0, 350.0, 398600.4418], 42774.887), ('elliptic time of flight between anomalies [1.0, 0.5, 45.0, 45.0, 1.0]', [1.0, 0.5, 45.0, 45.0, 1.0], 0.0), ('elliptic time of flight between anomalies [1.0, 0.3, 300.0, 60.0, 1.0]', [1.0, 0.3, 300.0, 60.0, 1.0], 1.172), ('elliptic time of flight between anomalies [1.0, 0.0, 0.0, 180.0, 1.0]', [1.0, 0.0, 0.0, 180.0, 1.0], 3.142)], [('elliptic time of flight between anomalies [2.0, 0.9, 170.0, 190.0, 1.0]', [2.0, 0.9, 170.0, 190.0, 1.0], 7.512), ('elliptic time of flight between anomalies [26560.0, 0.7, 180.0, 200.0, 398600.4418]', [26560.0, 0.7, 180.0, 200.0, 398600.4418], 8874.68), ('elliptic time of flight between anomalies [1.0, 0.5, 45.0, 45.0, 1.0]', [1.0, 0.5, 45.0, 45.0, 1.0], 0.0), ('elliptic time of flight between anomalies [1.0, 0.3, 300.0, 60.0, 1.0]', [1.0, 0.3, 300.0, 60.0, 1.0], 1.172), ('elliptic time of flight between anomalies [1.0, 0.0, 0.0, 180.0, 1.0]', [1.0, 0.0, 0.0, 180.0, 1.0], 3.142), ('elliptic time of flight between anomalies [2.0, 0.9, 350.0, 10.0, 1.0]', [2.0, 0.9, 350.0, 10.0, 1.0], 0.023), ('elliptic time of flight between anomalies [7000.0, 0.1, 0.0, 90.0, 398600.4418]', [7000.0, 0.1, 0.0, 90.0, 398600.4418], 1271.911)]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
elliptic time of flight between anomalies [7000.0, 0.1, 0.0, 90.0, 398600.4418]15.2021271.911Failed
elliptic time of flight between anomalies [7000.0, 0.1, 270.0, 30.0, 398600.4418]19.9671670.595Failed
elliptic time of flight between anomalies [26560.0, 0.7, 10.0, 350.0, 398600.4418]262.46742774.887Failed
elliptic time of flight between anomalies [26560.0, 0.7, 180.0, 200.0, 398600.4418]54.4558874.68Failed
elliptic time of flight between anomalies [1.0, 0.5, 45.0, 45.0, 1.0]0.00.0Passed
elliptic time of flight between anomalies [1.0, 0.3, 300.0, 60.0, 1.0]1.1721.172Passed
elliptic time of flight between anomalies [1.0, 0.0, 0.0, 180.0, 1.0]3.1423.142Passed

SHA-256 / 9cebb71b6e4bf7da82b9cc1ee7d98ec4ba8c149cc50ec228f92ef58dca09c009

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
    a,e,n1,n2,mu=x
    def Ma(nu):
        nu=math.radians(nu)
        E=2*math.atan2(math.sqrt(1-e)*math.sin(nu/2),math.sqrt(1+e)*math.cos(nu/2))
        return (E-e*math.sin(E))%(2*math.pi)
    n=math.sqrt(mu)/a**3
    dM=(Ma(n2)-Ma(n1))%(2*math.pi)
    return round(dM/n,3)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('elliptic time of flight between anomalies [7000.0, 0.1, 0.0, 90.0, 398600.4418]', [7000.0, 0.1, 0.0, 90.0, 398600.4418], 1271.911), ('elliptic time of flight between anomalies [7000.0, 0.1, 270.0, 30.0, 398600.4418]', [7000.0, 0.1, 270.0, 30.0, 398600.4418], 1670.595), ('elliptic time of flight between anomalies [26560.0, 0.7, 10.0, 350.0, 398600.4418]', [26560.0, 0.7, 10.0, 350.0, 398600.4418], 42774.887), ('elliptic time of flight between anomalies [26560.0, 0.7, 180.0, 200.0, 398600.4418]', [26560.0, 0.7, 180.0, 200.0, 398600.4418], 8874.68), ('elliptic time of flight between anomalies [1.0, 0.5, 45.0, 45.0, 1.0]', [1.0, 0.5, 45.0, 45.0, 1.0], 0.0), ('elliptic time of flight between anomalies [1.0, 0.3, 300.0, 60.0, 1.0]', [1.0, 0.3, 300.0, 60.0, 1.0], 1.172), ('elliptic time of flight between anomalies [1.0, 0.0, 0.0, 180.0, 1.0]', [1.0, 0.0, 0.0, 180.0, 1.0], 3.142)], [('elliptic time of flight between anomalies [7000.0, 0.1, 270.0, 30.0, 398600.4418]', [7000.0, 0.1, 270.0, 30.0, 398600.4418], 1670.595), ('elliptic time of flight between anomalies [26560.0, 0.7, 180.0, 200.0, 398600.4418]', [26560.0, 0.7, 180.0, 200.0, 398600.4418], 8874.68), ('elliptic time of flight between anomalies [1.0, 0.5, 45.0, 45.0, 1.0]', [1.0, 0.5, 45.0, 45.0, 1.0], 0.0), ('elliptic time of flight between anomalies [1.0, 0.3, 300.0, 60.0, 1.0]', [1.0, 0.3, 300.0, 60.0, 1.0], 1.172), ('elliptic time of flight between anomalies [1.0, 0.0, 0.0, 180.0, 1.0]', [1.0, 0.0, 0.0, 180.0, 1.0], 3.142), ('elliptic time of flight between anomalies [2.0, 0.9, 170.0, 190.0, 1.0]', [2.0, 0.9, 170.0, 190.0, 1.0], 7.512), ('elliptic time of flight between anomalies [2.0, 0.9, 350.0, 10.0, 1.0]', [2.0, 0.9, 350.0, 10.0, 1.0], 0.023)], [('elliptic time of flight between anomalies [26560.0, 0.7, 10.0, 350.0, 398600.4418]', [26560.0, 0.7, 10.0, 350.0, 398600.4418], 42774.887), ('elliptic time of flight between anomalies [1.0, 0.0, 0.0, 180.0, 1.0]', [1.0, 0.0, 0.0, 180.0, 1.0], 3.142), ('elliptic time of flight between anomalies [2.0, 0.9, 170.0, 190.0, 1.0]', [2.0, 0.9, 170.0, 190.0, 1.0], 7.512), ('elliptic time of flight between anomalies [2.0, 0.9, 350.0, 10.0, 1.0]', [2.0, 0.9, 350.0, 10.0, 1.0], 0.023), ('elliptic time of flight between anomalies [7000.0, 0.1, 0.0, 90.0, 398600.4418]', [7000.0, 0.1, 0.0, 90.0, 398600.4418], 1271.911), ('elliptic time of flight between anomalies [7000.0, 0.1, 270.0, 30.0, 398600.4418]', [7000.0, 0.1, 270.0, 30.0, 398600.4418], 1670.595), ('elliptic time of flight between anomalies [26560.0, 0.7, 180.0, 200.0, 398600.4418]', [26560.0, 0.7, 180.0, 200.0, 398600.4418], 8874.68)], [('elliptic time of flight between anomalies [26560.0, 0.7, 180.0, 200.0, 398600.4418]', [26560.0, 0.7, 180.0, 200.0, 398600.4418], 8874.68), ('elliptic time of flight between anomalies [7000.0, 0.1, 0.0, 90.0, 398600.4418]', [7000.0, 0.1, 0.0, 90.0, 398600.4418], 1271.911), ('elliptic time of flight between anomalies [7000.0, 0.1, 270.0, 30.0, 398600.4418]', [7000.0, 0.1, 270.0, 30.0, 398600.4418], 1670.595), ('elliptic time of flight between anomalies [26560.0, 0.7, 10.0, 350.0, 398600.4418]', [26560.0, 0.7, 10.0, 350.0, 398600.4418], 42774.887), ('elliptic time of flight between anomalies [1.0, 0.5, 45.0, 45.0, 1.0]', [1.0, 0.5, 45.0, 45.0, 1.0], 0.0), ('elliptic time of flight between anomalies [1.0, 0.3, 300.0, 60.0, 1.0]', [1.0, 0.3, 300.0, 60.0, 1.0], 1.172), ('elliptic time of flight between anomalies [1.0, 0.0, 0.0, 180.0, 1.0]', [1.0, 0.0, 0.0, 180.0, 1.0], 3.142)], [('elliptic time of flight between anomalies [2.0, 0.9, 170.0, 190.0, 1.0]', [2.0, 0.9, 170.0, 190.0, 1.0], 7.512), ('elliptic time of flight between anomalies [26560.0, 0.7, 180.0, 200.0, 398600.4418]', [26560.0, 0.7, 180.0, 200.0, 398600.4418], 8874.68), ('elliptic time of flight between anomalies [1.0, 0.5, 45.0, 45.0, 1.0]', [1.0, 0.5, 45.0, 45.0, 1.0], 0.0), ('elliptic time of flight between anomalies [1.0, 0.3, 300.0, 60.0, 1.0]', [1.0, 0.3, 300.0, 60.0, 1.0], 1.172), ('elliptic time of flight between anomalies [1.0, 0.0, 0.0, 180.0, 1.0]', [1.0, 0.0, 0.0, 180.0, 1.0], 3.142), ('elliptic time of flight between anomalies [2.0, 0.9, 350.0, 10.0, 1.0]', [2.0, 0.9, 350.0, 10.0, 1.0], 0.023), ('elliptic time of flight between anomalies [7000.0, 0.1, 0.0, 90.0, 398600.4418]', [7000.0, 0.1, 0.0, 90.0, 398600.4418], 1271.911)]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
elliptic time of flight between anomalies [7000.0, 0.1, 0.0, 90.0, 398600.4418]744910192.4421271.911Failed
elliptic time of flight between anomalies [7000.0, 0.1, 270.0, 30.0, 398600.4418]978403775.0971670.595Failed
elliptic time of flight between anomalies [26560.0, 0.7, 10.0, 350.0, 398600.4418]185153093568.05842774.887Failed
elliptic time of flight between anomalies [26560.0, 0.7, 180.0, 200.0, 398600.4418]38414466333.638874.68Failed
elliptic time of flight between anomalies [1.0, 0.5, 45.0, 45.0, 1.0]0.00.0Passed
elliptic time of flight between anomalies [1.0, 0.3, 300.0, 60.0, 1.0]1.1721.172Passed
elliptic time of flight between anomalies [1.0, 0.0, 0.0, 180.0, 1.0]3.1423.142Passed

SHA-256 / 3e8f013cf0a22806f7a57eef2dc8374722603add02cd12e9e3af4c24dfb7ef0d

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
    a,e,n1,n2,mu=x
    def Ma(nu):
        nu=math.radians(nu)
        E=2*math.atan2(math.sqrt(1-e)*math.sin(nu/2),math.sqrt(1+e)*math.cos(nu/2))
        return (E-e*math.sin(E))%(2*math.pi)
    n=math.sqrt(mu/a**3)
    dM=(Ma(n2)-Ma(n1))%(2*math.pi)
    return round(dM/n,3)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('elliptic time of flight between anomalies [7000.0, 0.1, 0.0, 90.0, 398600.4418]', [7000.0, 0.1, 0.0, 90.0, 398600.4418], 1271.911), ('elliptic time of flight between anomalies [7000.0, 0.1, 270.0, 30.0, 398600.4418]', [7000.0, 0.1, 270.0, 30.0, 398600.4418], 1670.595), ('elliptic time of flight between anomalies [26560.0, 0.7, 10.0, 350.0, 398600.4418]', [26560.0, 0.7, 10.0, 350.0, 398600.4418], 42774.887), ('elliptic time of flight between anomalies [26560.0, 0.7, 180.0, 200.0, 398600.4418]', [26560.0, 0.7, 180.0, 200.0, 398600.4418], 8874.68), ('elliptic time of flight between anomalies [1.0, 0.5, 45.0, 45.0, 1.0]', [1.0, 0.5, 45.0, 45.0, 1.0], 0.0), ('elliptic time of flight between anomalies [1.0, 0.3, 300.0, 60.0, 1.0]', [1.0, 0.3, 300.0, 60.0, 1.0], 1.172), ('elliptic time of flight between anomalies [1.0, 0.0, 0.0, 180.0, 1.0]', [1.0, 0.0, 0.0, 180.0, 1.0], 3.142)], [('elliptic time of flight between anomalies [7000.0, 0.1, 270.0, 30.0, 398600.4418]', [7000.0, 0.1, 270.0, 30.0, 398600.4418], 1670.595), ('elliptic time of flight between anomalies [26560.0, 0.7, 180.0, 200.0, 398600.4418]', [26560.0, 0.7, 180.0, 200.0, 398600.4418], 8874.68), ('elliptic time of flight between anomalies [1.0, 0.5, 45.0, 45.0, 1.0]', [1.0, 0.5, 45.0, 45.0, 1.0], 0.0), ('elliptic time of flight between anomalies [1.0, 0.3, 300.0, 60.0, 1.0]', [1.0, 0.3, 300.0, 60.0, 1.0], 1.172), ('elliptic time of flight between anomalies [1.0, 0.0, 0.0, 180.0, 1.0]', [1.0, 0.0, 0.0, 180.0, 1.0], 3.142), ('elliptic time of flight between anomalies [2.0, 0.9, 170.0, 190.0, 1.0]', [2.0, 0.9, 170.0, 190.0, 1.0], 7.512), ('elliptic time of flight between anomalies [2.0, 0.9, 350.0, 10.0, 1.0]', [2.0, 0.9, 350.0, 10.0, 1.0], 0.023)], [('elliptic time of flight between anomalies [26560.0, 0.7, 10.0, 350.0, 398600.4418]', [26560.0, 0.7, 10.0, 350.0, 398600.4418], 42774.887), ('elliptic time of flight between anomalies [1.0, 0.0, 0.0, 180.0, 1.0]', [1.0, 0.0, 0.0, 180.0, 1.0], 3.142), ('elliptic time of flight between anomalies [2.0, 0.9, 170.0, 190.0, 1.0]', [2.0, 0.9, 170.0, 190.0, 1.0], 7.512), ('elliptic time of flight between anomalies [2.0, 0.9, 350.0, 10.0, 1.0]', [2.0, 0.9, 350.0, 10.0, 1.0], 0.023), ('elliptic time of flight between anomalies [7000.0, 0.1, 0.0, 90.0, 398600.4418]', [7000.0, 0.1, 0.0, 90.0, 398600.4418], 1271.911), ('elliptic time of flight between anomalies [7000.0, 0.1, 270.0, 30.0, 398600.4418]', [7000.0, 0.1, 270.0, 30.0, 398600.4418], 1670.595), ('elliptic time of flight between anomalies [26560.0, 0.7, 180.0, 200.0, 398600.4418]', [26560.0, 0.7, 180.0, 200.0, 398600.4418], 8874.68)], [('elliptic time of flight between anomalies [26560.0, 0.7, 180.0, 200.0, 398600.4418]', [26560.0, 0.7, 180.0, 200.0, 398600.4418], 8874.68), ('elliptic time of flight between anomalies [7000.0, 0.1, 0.0, 90.0, 398600.4418]', [7000.0, 0.1, 0.0, 90.0, 398600.4418], 1271.911), ('elliptic time of flight between anomalies [7000.0, 0.1, 270.0, 30.0, 398600.4418]', [7000.0, 0.1, 270.0, 30.0, 398600.4418], 1670.595), ('elliptic time of flight between anomalies [26560.0, 0.7, 10.0, 350.0, 398600.4418]', [26560.0, 0.7, 10.0, 350.0, 398600.4418], 42774.887), ('elliptic time of flight between anomalies [1.0, 0.5, 45.0, 45.0, 1.0]', [1.0, 0.5, 45.0, 45.0, 1.0], 0.0), ('elliptic time of flight between anomalies [1.0, 0.3, 300.0, 60.0, 1.0]', [1.0, 0.3, 300.0, 60.0, 1.0], 1.172), ('elliptic time of flight between anomalies [1.0, 0.0, 0.0, 180.0, 1.0]', [1.0, 0.0, 0.0, 180.0, 1.0], 3.142)], [('elliptic time of flight between anomalies [2.0, 0.9, 170.0, 190.0, 1.0]', [2.0, 0.9, 170.0, 190.0, 1.0], 7.512), ('elliptic time of flight between anomalies [26560.0, 0.7, 180.0, 200.0, 398600.4418]', [26560.0, 0.7, 180.0, 200.0, 398600.4418], 8874.68), ('elliptic time of flight between anomalies [1.0, 0.5, 45.0, 45.0, 1.0]', [1.0, 0.5, 45.0, 45.0, 1.0], 0.0), ('elliptic time of flight between anomalies [1.0, 0.3, 300.0, 60.0, 1.0]', [1.0, 0.3, 300.0, 60.0, 1.0], 1.172), ('elliptic time of flight between anomalies [1.0, 0.0, 0.0, 180.0, 1.0]', [1.0, 0.0, 0.0, 180.0, 1.0], 3.142), ('elliptic time of flight between anomalies [2.0, 0.9, 350.0, 10.0, 1.0]', [2.0, 0.9, 350.0, 10.0, 1.0], 0.023), ('elliptic time of flight between anomalies [7000.0, 0.1, 0.0, 90.0, 398600.4418]', [7000.0, 0.1, 0.0, 90.0, 398600.4418], 1271.911)]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
elliptic time of flight between anomalies [7000.0, 0.1, 0.0, 90.0, 398600.4418]1271.9111271.911Passed
elliptic time of flight between anomalies [7000.0, 0.1, 270.0, 30.0, 398600.4418]1670.5951670.595Passed
elliptic time of flight between anomalies [26560.0, 0.7, 10.0, 350.0, 398600.4418]42774.88742774.887Passed
elliptic time of flight between anomalies [26560.0, 0.7, 180.0, 200.0, 398600.4418]8874.688874.68Passed
elliptic time of flight between anomalies [1.0, 0.5, 45.0, 45.0, 1.0]0.00.0Passed
elliptic time of flight between anomalies [1.0, 0.3, 300.0, 60.0, 1.0]1.1721.172Passed
elliptic time of flight between anomalies [1.0, 0.0, 0.0, 180.0, 1.0]3.1423.142Passed

SHA-256 / 3a299edfd3450651b858ee717ab43cd9d9dc8cc3a2cab87c1a2bf6e8ed6ed9fc

Verification & scope

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.

Observations recorded using Python 3.12.14 at 2026-09-29T14:48:13.995207+00:00.

Case digest / de120f63b4a90c8a3400c7ae53168707f26835207dcc3814e816e10abda34f2f