FA-69436 / Orbital propagation / Open access
Two-line element set line 2: Overlong lines are accepted · case 01
Lines with trailing carriage returns or truncated checksums slip through or crash later.
ROOT CAUSE
The length check only rejects lines shorter than 69 characters.
VERIFIED REPAIR
Require exactly 69 characters.
Unsuccessful approach: Stripping whitespace first accepts lines the contract rejects.
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)<68 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\\r"', '2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\r', None), ('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 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 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 "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 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 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 "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 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 "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 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 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.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])]]
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\r" | [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True] | None | Failed |
| 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 |
SHA-256 / 88a4b8f5c528b01ba4234ba61e45e780bf3c8b4b5cf8ecb05710e1ddb4204721
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
s=s.strip()
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\\r"', '2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\r', None), ('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 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 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 "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 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 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 "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 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 "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 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 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.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])]]
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\r" | [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True] | None | Failed |
| 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 |
SHA-256 / ebfd64a4fae2b69f566c05c9094c76b5ffbe1b202660ee8bb20ff224355750ec
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\\r"', '2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\r', None), ('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 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 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 "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 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 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 "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 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 "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 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 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.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])]]
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\r" | None | None | Passed |
| 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 |
SHA-256 / c64c2b46eab213fe07a6e1a34e8a2272e3ada234b4e7a97a0d9925af77c771ed
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.339429+00:00.
Case digest / 89fb70b137c2821e0abf185f45dbfb85b6d36f976050052a2ea45901d3defe2b