FAILURE MAP
← Case archive

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.

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

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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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