FA-69416 / Orbital propagation / Open access
Two-line element set line 2: Eccentricity loses its implied decimal point · case 01
Eccentricities are reported as integers in the millions.
ROOT CAUSE
The eccentricity field is parsed directly as a number.
VERIFIED REPAIR
Prefix the seven digits with "0.".
Unsuccessful approach: Dividing by 1e6 assumes six digits and scales every eccentricity by ten.
Case contract
Input one TLE line-2 string. It must be exactly 69 characters and start with "2", else None. Fields by 1-based columns: inclination 9-16, RAAN 18-25, eccentricity 27-33 with an implied leading decimal point, argument of perigee 35-42, mean anomaly 44-51, mean motion 53-63, revolution number 64-68, checksum 69 (sum of digits in columns 1-68, "-" counts 1, mod 10). Return [inc, raan, ecc, argp, M, n, rev, checksum_ok].
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):
s=x
if len(s)!=69 or s[0]!='2': return None
cs=sum(int(c) if c.isdigit() else (1 if c=='-' else 0) for c in s[:68])%10
inc=float(s[8:16]); raan=float(s[17:25])
ecc=float(s[26:33])
argp=float(s[34:42]); ma=float(s[43:51])
n=float(s[52:63])
rev=int(s[63:68])
return [inc,raan,ecc,argp,ma,n,rev,cs==int(s[68])]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('two-line element set line 2 "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"', '2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537', [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]), ('two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453"', '2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"', '2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]), ('two-line element set line 2 "2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"', '2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776"', '2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776', [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]), ('two-line element set line 2 "2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06"', '2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06', [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]), ('two-line element set line 2 "2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212"', '2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True])], [('two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453"', '2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"', '2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776"', '2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776', [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]), ('two-line element set line 2 "2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06"', '2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06', [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]), ('two-line element set line 2 "2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212"', '2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True]), ('two-line element set line 2 "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\\r"', '2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\r', None), ('two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.1955361212345"', '2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.1955361212345', None)], [('two-line element set line 2 "2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"', '2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]), ('two-line element set line 2 "2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212"', '2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True]), ('two-line element set line 2 "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\\r"', '2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\r', None), ('two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.1955361212345"', '2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.1955361212345', None), ('two-line element set line 2 "1 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"', '1 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12', None), ('two-line element set line 2 "3 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"', '3 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994', None), ('two-line element set line 2 "2 12345 7.0000 8.0000 0000009 10.0000 11.0000 12.50000000 678"', '2 12345 7.0000 8.0000 0000009 10.0000 11.0000 12.50000000 678', [7.0, 8.0, 9e-07, 10.0, 11.0, 12.5, 67, False])], [('two-line element set line 2 "2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"', '2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "1 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"', '1 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12', None), ('two-line element set line 2 "3 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"', '3 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994', None), ('two-line element set line 2 "2 12345 7.0000 8.0000 0000009 10.0000 11.0000 12.50000000 678"', '2 12345 7.0000 8.0000 0000009 10.0000 11.0000 12.50000000 678', [7.0, 8.0, 9e-07, 10.0, 11.0, 12.5, 67, False]), ('two-line element set line 2 "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"', '2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537', [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]), ('two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453"', '2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"', '2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True])], [('two-line element set line 2 "2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776"', '2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776', [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]), ('two-line element set line 2 "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"', '2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537', [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]), ('two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453"', '2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"', '2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]), ('two-line element set line 2 "2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"', '2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06"', '2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06', [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]), ('two-line element set line 2 "2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212"', '2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True])]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| two-line element set line 2 "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537" | [51.6416, 247.4627, 6703.0, 130.536, 325.0288, 15.72125391, 56353, True] | [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True] | Failed |
| two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453" | [97.7245, 10.2, 1234567.0, 88.1, 272.05, 14.19553612, 12345, True] | [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True] | Failed |
| two-line element set line 2 "2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12" | [0.0543, 359.9999, 50.0, 0.0, 180.0, 1.00271798, 1, True] | [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True] | Failed |
| two-line element set line 2 "2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994" | [98.9, 120.7, 14000.0, 300.25, 59.9, 14.12501077, 99999, True] | [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True] | Failed |
| two-line element set line 2 "2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776" | [63.4, 45.0, 7300000.0, 270.0, 10.0, 2.00563891, 777, False] | [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False] | Failed |
| two-line element set line 2 "2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06" | [28.5, 200.0, 999.0, 12.0, 348.0, 15.9, 0, True] | [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True] | Failed |
| two-line element set line 2 "2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212" | [55.0, 150.0, 25000.0, 45.0, 315.0, 2.00567, 4321, True] | [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True] | Failed |
SHA-256 / 1f191795b37f8dad7452c218d4b7396d74fe56e4479ed7b6de83a94fdebe5958
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
s=x
if len(s)!=69 or s[0]!='2': return None
cs=sum(int(c) if c.isdigit() else (1 if c=='-' else 0) for c in s[:68])%10
inc=float(s[8:16]); raan=float(s[17:25])
ecc=float(s[26:33])/1e6
argp=float(s[34:42]); ma=float(s[43:51])
n=float(s[52:63])
rev=int(s[63:68])
return [inc,raan,ecc,argp,ma,n,rev,cs==int(s[68])]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('two-line element set line 2 "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"', '2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537', [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]), ('two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453"', '2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"', '2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]), ('two-line element set line 2 "2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"', '2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776"', '2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776', [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]), ('two-line element set line 2 "2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06"', '2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06', [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]), ('two-line element set line 2 "2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212"', '2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True])], [('two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453"', '2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"', '2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776"', '2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776', [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]), ('two-line element set line 2 "2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06"', '2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06', [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]), ('two-line element set line 2 "2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212"', '2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True]), ('two-line element set line 2 "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\\r"', '2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\r', None), ('two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.1955361212345"', '2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.1955361212345', None)], [('two-line element set line 2 "2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"', '2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]), ('two-line element set line 2 "2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212"', '2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True]), ('two-line element set line 2 "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\\r"', '2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\r', None), ('two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.1955361212345"', '2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.1955361212345', None), ('two-line element set line 2 "1 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"', '1 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12', None), ('two-line element set line 2 "3 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"', '3 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994', None), ('two-line element set line 2 "2 12345 7.0000 8.0000 0000009 10.0000 11.0000 12.50000000 678"', '2 12345 7.0000 8.0000 0000009 10.0000 11.0000 12.50000000 678', [7.0, 8.0, 9e-07, 10.0, 11.0, 12.5, 67, False])], [('two-line element set line 2 "2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"', '2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "1 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"', '1 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12', None), ('two-line element set line 2 "3 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"', '3 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994', None), ('two-line element set line 2 "2 12345 7.0000 8.0000 0000009 10.0000 11.0000 12.50000000 678"', '2 12345 7.0000 8.0000 0000009 10.0000 11.0000 12.50000000 678', [7.0, 8.0, 9e-07, 10.0, 11.0, 12.5, 67, False]), ('two-line element set line 2 "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"', '2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537', [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]), ('two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453"', '2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"', '2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True])], [('two-line element set line 2 "2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776"', '2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776', [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]), ('two-line element set line 2 "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"', '2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537', [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]), ('two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453"', '2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"', '2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]), ('two-line element set line 2 "2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"', '2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06"', '2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06', [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]), ('two-line element set line 2 "2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212"', '2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True])]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| two-line element set line 2 "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537" | [51.6416, 247.4627, 0.006703, 130.536, 325.0288, 15.72125391, 56353, True] | [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True] | Failed |
| two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453" | [97.7245, 10.2, 1.234567, 88.1, 272.05, 14.19553612, 12345, True] | [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True] | Failed |
| two-line element set line 2 "2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12" | [0.0543, 359.9999, 5e-05, 0.0, 180.0, 1.00271798, 1, True] | [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True] | Failed |
| two-line element set line 2 "2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994" | [98.9, 120.7, 0.014, 300.25, 59.9, 14.12501077, 99999, True] | [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True] | Failed |
| two-line element set line 2 "2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776" | [63.4, 45.0, 7.3, 270.0, 10.0, 2.00563891, 777, False] | [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False] | Failed |
| two-line element set line 2 "2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06" | [28.5, 200.0, 0.000999, 12.0, 348.0, 15.9, 0, True] | [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True] | Failed |
| two-line element set line 2 "2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212" | [55.0, 150.0, 0.025, 45.0, 315.0, 2.00567, 4321, True] | [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True] | Failed |
SHA-256 / 8f408d416f37b7b0e66350f0118fc2492e34d956a8ffcbc6d93bfd99e846147e
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
s=x
if len(s)!=69 or s[0]!='2': return None
cs=sum(int(c) if c.isdigit() else (1 if c=='-' else 0) for c in s[:68])%10
inc=float(s[8:16]); raan=float(s[17:25])
ecc=float('0.'+s[26:33].strip())
argp=float(s[34:42]); ma=float(s[43:51])
n=float(s[52:63])
rev=int(s[63:68])
return [inc,raan,ecc,argp,ma,n,rev,cs==int(s[68])]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('two-line element set line 2 "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"', '2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537', [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]), ('two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453"', '2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"', '2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]), ('two-line element set line 2 "2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"', '2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776"', '2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776', [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]), ('two-line element set line 2 "2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06"', '2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06', [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]), ('two-line element set line 2 "2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212"', '2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True])], [('two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453"', '2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"', '2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776"', '2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776', [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]), ('two-line element set line 2 "2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06"', '2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06', [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]), ('two-line element set line 2 "2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212"', '2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True]), ('two-line element set line 2 "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\\r"', '2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\r', None), ('two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.1955361212345"', '2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.1955361212345', None)], [('two-line element set line 2 "2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"', '2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]), ('two-line element set line 2 "2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212"', '2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True]), ('two-line element set line 2 "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\\r"', '2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\r', None), ('two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.1955361212345"', '2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.1955361212345', None), ('two-line element set line 2 "1 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"', '1 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12', None), ('two-line element set line 2 "3 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"', '3 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994', None), ('two-line element set line 2 "2 12345 7.0000 8.0000 0000009 10.0000 11.0000 12.50000000 678"', '2 12345 7.0000 8.0000 0000009 10.0000 11.0000 12.50000000 678', [7.0, 8.0, 9e-07, 10.0, 11.0, 12.5, 67, False])], [('two-line element set line 2 "2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"', '2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "1 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"', '1 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12', None), ('two-line element set line 2 "3 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"', '3 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994', None), ('two-line element set line 2 "2 12345 7.0000 8.0000 0000009 10.0000 11.0000 12.50000000 678"', '2 12345 7.0000 8.0000 0000009 10.0000 11.0000 12.50000000 678', [7.0, 8.0, 9e-07, 10.0, 11.0, 12.5, 67, False]), ('two-line element set line 2 "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"', '2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537', [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]), ('two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453"', '2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"', '2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True])], [('two-line element set line 2 "2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776"', '2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776', [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]), ('two-line element set line 2 "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"', '2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537', [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]), ('two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453"', '2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"', '2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]), ('two-line element set line 2 "2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"', '2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06"', '2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06', [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]), ('two-line element set line 2 "2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212"', '2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True])]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| two-line element set line 2 "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537" | [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True] | [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True] | Passed |
| two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453" | [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True] | [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True] | Passed |
| two-line element set line 2 "2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12" | [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True] | [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True] | Passed |
| two-line element set line 2 "2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994" | [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True] | [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True] | Passed |
| two-line element set line 2 "2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776" | [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False] | [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False] | Passed |
| two-line element set line 2 "2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06" | [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True] | [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True] | Passed |
| two-line element set line 2 "2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212" | [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True] | [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True] | Passed |
SHA-256 / a35b0ca731485d29c7bb3d25cd17f84b13deccd752347f259f77087c3801567f
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:11.253287+00:00.
Case digest / 40ccaa9834dacbdcfac3e4e8a4179ede1e1fb3fe6b5f4df0e79bba24a28a6f11