FA-69426 / Orbital propagation / Open access
Two-line element set line 2: Checksum includes its own digit · case 01
Valid element sets are rejected as corrupt.
ROOT CAUSE
The checksum sum covers all 69 columns.
VERIFIED REPAIR
Sum columns 1-68 only.
Unsuccessful approach: Skipping the line number column fails for every line-2 set.
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[:69])%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 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 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 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, False] | [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, 0.1234567, 88.1, 272.05, 14.19553612, 12345, False] | [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-06, 0.0, 180.0, 1.00271798, 1, False] | [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.0014, 300.25, 59.9, 14.12501077, 99999, False] | [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, 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, False] | [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.0025, 45.0, 315.0, 2.00567, 4321, False] | [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True] | Failed |
SHA-256 / e766014033e30222d708c9a91074c92853472a6b362a1a84762399766754c431
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[1: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 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 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 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, False] | [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, 0.1234567, 88.1, 272.05, 14.19553612, 12345, False] | [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-06, 0.0, 180.0, 1.00271798, 1, False] | [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.0014, 300.25, 59.9, 14.12501077, 99999, False] | [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, 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, False] | [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.0025, 45.0, 315.0, 2.00567, 4321, False] | [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True] | Failed |
SHA-256 / b6d697d70e972c347395eaa361d062bf3c3488943748bf776c934a78f0548e9b
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 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 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 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 / 077e4041017d5704c8f5d4773ed922e52f88554775d6943dce3dc8f70ee3c7a2
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.297983+00:00.
Case digest / 2231773d60dfced018e92bdb061f8232ff813674f0bff578155c3e4c33a8057c