FAILURE MAP
← Case archive

FA-69416 / Orbital propagation / Open access

Two-line element set line 2: Eccentricity loses its implied decimal point · case 01

Eccentricities are reported as integers in the millions.

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

ROOT CAUSE

The eccentricity field is parsed directly as a number.

VERIFIED REPAIR

Prefix the seven digits with "0.".

Unsuccessful approach: Dividing by 1e6 assumes six digits and scales every eccentricity by ten.

Case contract

Input one TLE line-2 string. It must be exactly 69 characters and start with "2", else None. Fields by 1-based columns: inclination 9-16, RAAN 18-25, eccentricity 27-33 with an implied leading decimal point, argument of perigee 35-42, mean anomaly 44-51, mean motion 53-63, revolution number 64-68, checksum 69 (sum of digits in columns 1-68, "-" counts 1, mod 10). Return [inc, raan, ecc, argp, M, n, rev, checksum_ok].

Why this case matters

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

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
    s=x
    if len(s)!=69 or s[0]!='2': return None
    cs=sum(int(c) if c.isdigit() else (1 if c=='-' else 0) for c in s[:68])%10
    inc=float(s[8:16]); raan=float(s[17:25])
    ecc=float(s[26:33])
    argp=float(s[34:42]); ma=float(s[43:51])
    n=float(s[52:63])
    rev=int(s[63:68])
    return [inc,raan,ecc,argp,ma,n,rev,cs==int(s[68])]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('two-line element set line 2 "2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"', '2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537', [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]), ('two-line element set line 2 "2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453"', '2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12"', '2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]), ('two-line element set line 2 "2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994"', '2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "2 40000  63.4000  45.0000 7300000 270.0000  10.0000  2.00563891  7776"', '2 40000  63.4000  45.0000 7300000 270.0000  10.0000  2.00563891  7776', [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]), ('two-line element set line 2 "2 25000  28.5000 200.0000 0000999  12.0000 348.0000 15.90000000    06"', '2 25000  28.5000 200.0000 0000999  12.0000 348.0000 15.90000000    06', [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]), ('two-line element set line 2 "2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212"', '2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True])], [('two-line element set line 2 "2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453"', '2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994"', '2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "2 40000  63.4000  45.0000 7300000 270.0000  10.0000  2.00563891  7776"', '2 40000  63.4000  45.0000 7300000 270.0000  10.0000  2.00563891  7776', [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]), ('two-line element set line 2 "2 25000  28.5000 200.0000 0000999  12.0000 348.0000 15.90000000    06"', '2 25000  28.5000 200.0000 0000999  12.0000 348.0000 15.90000000    06', [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]), ('two-line element set line 2 "2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212"', '2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True]), ('two-line element set line 2 "2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\\r"', '2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\r', None), ('two-line element set line 2 "2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.1955361212345"', '2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.1955361212345', None)], [('two-line element set line 2 "2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12"', '2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]), ('two-line element set line 2 "2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212"', '2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True]), ('two-line element set line 2 "2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\\r"', '2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\r', None), ('two-line element set line 2 "2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.1955361212345"', '2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.1955361212345', None), ('two-line element set line 2 "1 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12"', '1 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12', None), ('two-line element set line 2 "3 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994"', '3 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994', None), ('two-line element set line 2 "2 12345   7.0000   8.0000 0000009  10.0000  11.0000 12.50000000   678"', '2 12345   7.0000   8.0000 0000009  10.0000  11.0000 12.50000000   678', [7.0, 8.0, 9e-07, 10.0, 11.0, 12.5, 67, False])], [('two-line element set line 2 "2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994"', '2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "1 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12"', '1 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12', None), ('two-line element set line 2 "3 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994"', '3 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994', None), ('two-line element set line 2 "2 12345   7.0000   8.0000 0000009  10.0000  11.0000 12.50000000   678"', '2 12345   7.0000   8.0000 0000009  10.0000  11.0000 12.50000000   678', [7.0, 8.0, 9e-07, 10.0, 11.0, 12.5, 67, False]), ('two-line element set line 2 "2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"', '2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537', [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]), ('two-line element set line 2 "2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453"', '2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12"', '2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True])], [('two-line element set line 2 "2 40000  63.4000  45.0000 7300000 270.0000  10.0000  2.00563891  7776"', '2 40000  63.4000  45.0000 7300000 270.0000  10.0000  2.00563891  7776', [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]), ('two-line element set line 2 "2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"', '2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537', [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]), ('two-line element set line 2 "2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453"', '2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12"', '2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]), ('two-line element set line 2 "2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994"', '2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "2 25000  28.5000 200.0000 0000999  12.0000 348.0000 15.90000000    06"', '2 25000  28.5000 200.0000 0000999  12.0000 348.0000 15.90000000    06', [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]), ('two-line element set line 2 "2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212"', '2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True])]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
two-line element set line 2 "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"[51.6416, 247.4627, 6703.0, 130.536, 325.0288, 15.72125391, 56353, True][51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]Failed
two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453"[97.7245, 10.2, 1234567.0, 88.1, 272.05, 14.19553612, 12345, True][97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]Failed
two-line element set line 2 "2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"[0.0543, 359.9999, 50.0, 0.0, 180.0, 1.00271798, 1, True][0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]Failed
two-line element set line 2 "2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"[98.9, 120.7, 14000.0, 300.25, 59.9, 14.12501077, 99999, True][98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]Failed
two-line element set line 2 "2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776"[63.4, 45.0, 7300000.0, 270.0, 10.0, 2.00563891, 777, False][63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]Failed
two-line element set line 2 "2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06"[28.5, 200.0, 999.0, 12.0, 348.0, 15.9, 0, True][28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]Failed
two-line element set line 2 "2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212"[55.0, 150.0, 25000.0, 45.0, 315.0, 2.00567, 4321, True][55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True]Failed

SHA-256 / 1f191795b37f8dad7452c218d4b7396d74fe56e4479ed7b6de83a94fdebe5958

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
    s=x
    if len(s)!=69 or s[0]!='2': return None
    cs=sum(int(c) if c.isdigit() else (1 if c=='-' else 0) for c in s[:68])%10
    inc=float(s[8:16]); raan=float(s[17:25])
    ecc=float(s[26:33])/1e6
    argp=float(s[34:42]); ma=float(s[43:51])
    n=float(s[52:63])
    rev=int(s[63:68])
    return [inc,raan,ecc,argp,ma,n,rev,cs==int(s[68])]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('two-line element set line 2 "2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"', '2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537', [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]), ('two-line element set line 2 "2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453"', '2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12"', '2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]), ('two-line element set line 2 "2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994"', '2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "2 40000  63.4000  45.0000 7300000 270.0000  10.0000  2.00563891  7776"', '2 40000  63.4000  45.0000 7300000 270.0000  10.0000  2.00563891  7776', [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]), ('two-line element set line 2 "2 25000  28.5000 200.0000 0000999  12.0000 348.0000 15.90000000    06"', '2 25000  28.5000 200.0000 0000999  12.0000 348.0000 15.90000000    06', [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]), ('two-line element set line 2 "2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212"', '2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True])], [('two-line element set line 2 "2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453"', '2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994"', '2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "2 40000  63.4000  45.0000 7300000 270.0000  10.0000  2.00563891  7776"', '2 40000  63.4000  45.0000 7300000 270.0000  10.0000  2.00563891  7776', [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]), ('two-line element set line 2 "2 25000  28.5000 200.0000 0000999  12.0000 348.0000 15.90000000    06"', '2 25000  28.5000 200.0000 0000999  12.0000 348.0000 15.90000000    06', [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]), ('two-line element set line 2 "2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212"', '2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True]), ('two-line element set line 2 "2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\\r"', '2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\r', None), ('two-line element set line 2 "2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.1955361212345"', '2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.1955361212345', None)], [('two-line element set line 2 "2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12"', '2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]), ('two-line element set line 2 "2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212"', '2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True]), ('two-line element set line 2 "2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\\r"', '2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\r', None), ('two-line element set line 2 "2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.1955361212345"', '2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.1955361212345', None), ('two-line element set line 2 "1 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12"', '1 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12', None), ('two-line element set line 2 "3 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994"', '3 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994', None), ('two-line element set line 2 "2 12345   7.0000   8.0000 0000009  10.0000  11.0000 12.50000000   678"', '2 12345   7.0000   8.0000 0000009  10.0000  11.0000 12.50000000   678', [7.0, 8.0, 9e-07, 10.0, 11.0, 12.5, 67, False])], [('two-line element set line 2 "2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994"', '2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "1 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12"', '1 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12', None), ('two-line element set line 2 "3 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994"', '3 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994', None), ('two-line element set line 2 "2 12345   7.0000   8.0000 0000009  10.0000  11.0000 12.50000000   678"', '2 12345   7.0000   8.0000 0000009  10.0000  11.0000 12.50000000   678', [7.0, 8.0, 9e-07, 10.0, 11.0, 12.5, 67, False]), ('two-line element set line 2 "2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"', '2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537', [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]), ('two-line element set line 2 "2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453"', '2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12"', '2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True])], [('two-line element set line 2 "2 40000  63.4000  45.0000 7300000 270.0000  10.0000  2.00563891  7776"', '2 40000  63.4000  45.0000 7300000 270.0000  10.0000  2.00563891  7776', [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]), ('two-line element set line 2 "2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"', '2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537', [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]), ('two-line element set line 2 "2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453"', '2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12"', '2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]), ('two-line element set line 2 "2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994"', '2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "2 25000  28.5000 200.0000 0000999  12.0000 348.0000 15.90000000    06"', '2 25000  28.5000 200.0000 0000999  12.0000 348.0000 15.90000000    06', [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]), ('two-line element set line 2 "2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212"', '2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True])]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary 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.006703, 130.536, 325.0288, 15.72125391, 56353, True][51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]Failed
two-line element set line 2 "2 43013 97.7245 10.2000 1234567 88.1000 272.0500 14.19553612123453"[97.7245, 10.2, 1.234567, 88.1, 272.05, 14.19553612, 12345, True][97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]Failed
two-line element set line 2 "2 11111 0.0543 359.9999 0000050 0.0000 180.0000 1.00271798 12"[0.0543, 359.9999, 5e-05, 0.0, 180.0, 1.00271798, 1, True][0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]Failed
two-line element set line 2 "2 28654 98.9000 120.7000 0014000 300.2500 59.9000 14.12501077999994"[98.9, 120.7, 0.014, 300.25, 59.9, 14.12501077, 99999, True][98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]Failed
two-line element set line 2 "2 40000 63.4000 45.0000 7300000 270.0000 10.0000 2.00563891 7776"[63.4, 45.0, 7.3, 270.0, 10.0, 2.00563891, 777, False][63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]Failed
two-line element set line 2 "2 25000 28.5000 200.0000 0000999 12.0000 348.0000 15.90000000 06"[28.5, 200.0, 0.000999, 12.0, 348.0, 15.9, 0, True][28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]Failed
two-line element set line 2 "2 36000 55.0000 150.0000 0025000 45.0000 315.0000 2.00567000 43212"[55.0, 150.0, 0.025, 45.0, 315.0, 2.00567, 4321, True][55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True]Failed

SHA-256 / 8f408d416f37b7b0e66350f0118fc2492e34d956a8ffcbc6d93bfd99e846147e

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
    s=x
    if len(s)!=69 or s[0]!='2': return None
    cs=sum(int(c) if c.isdigit() else (1 if c=='-' else 0) for c in s[:68])%10
    inc=float(s[8:16]); raan=float(s[17:25])
    ecc=float('0.'+s[26:33].strip())
    argp=float(s[34:42]); ma=float(s[43:51])
    n=float(s[52:63])
    rev=int(s[63:68])
    return [inc,raan,ecc,argp,ma,n,rev,cs==int(s[68])]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('two-line element set line 2 "2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"', '2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537', [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]), ('two-line element set line 2 "2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453"', '2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12"', '2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]), ('two-line element set line 2 "2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994"', '2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "2 40000  63.4000  45.0000 7300000 270.0000  10.0000  2.00563891  7776"', '2 40000  63.4000  45.0000 7300000 270.0000  10.0000  2.00563891  7776', [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]), ('two-line element set line 2 "2 25000  28.5000 200.0000 0000999  12.0000 348.0000 15.90000000    06"', '2 25000  28.5000 200.0000 0000999  12.0000 348.0000 15.90000000    06', [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]), ('two-line element set line 2 "2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212"', '2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True])], [('two-line element set line 2 "2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453"', '2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994"', '2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "2 40000  63.4000  45.0000 7300000 270.0000  10.0000  2.00563891  7776"', '2 40000  63.4000  45.0000 7300000 270.0000  10.0000  2.00563891  7776', [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]), ('two-line element set line 2 "2 25000  28.5000 200.0000 0000999  12.0000 348.0000 15.90000000    06"', '2 25000  28.5000 200.0000 0000999  12.0000 348.0000 15.90000000    06', [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]), ('two-line element set line 2 "2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212"', '2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True]), ('two-line element set line 2 "2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\\r"', '2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\r', None), ('two-line element set line 2 "2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.1955361212345"', '2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.1955361212345', None)], [('two-line element set line 2 "2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12"', '2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]), ('two-line element set line 2 "2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212"', '2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True]), ('two-line element set line 2 "2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\\r"', '2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537\r', None), ('two-line element set line 2 "2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.1955361212345"', '2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.1955361212345', None), ('two-line element set line 2 "1 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12"', '1 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12', None), ('two-line element set line 2 "3 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994"', '3 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994', None), ('two-line element set line 2 "2 12345   7.0000   8.0000 0000009  10.0000  11.0000 12.50000000   678"', '2 12345   7.0000   8.0000 0000009  10.0000  11.0000 12.50000000   678', [7.0, 8.0, 9e-07, 10.0, 11.0, 12.5, 67, False])], [('two-line element set line 2 "2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994"', '2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "1 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12"', '1 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12', None), ('two-line element set line 2 "3 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994"', '3 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994', None), ('two-line element set line 2 "2 12345   7.0000   8.0000 0000009  10.0000  11.0000 12.50000000   678"', '2 12345   7.0000   8.0000 0000009  10.0000  11.0000 12.50000000   678', [7.0, 8.0, 9e-07, 10.0, 11.0, 12.5, 67, False]), ('two-line element set line 2 "2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"', '2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537', [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]), ('two-line element set line 2 "2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453"', '2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12"', '2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True])], [('two-line element set line 2 "2 40000  63.4000  45.0000 7300000 270.0000  10.0000  2.00563891  7776"', '2 40000  63.4000  45.0000 7300000 270.0000  10.0000  2.00563891  7776', [63.4, 45.0, 0.73, 270.0, 10.0, 2.00563891, 777, False]), ('two-line element set line 2 "2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"', '2 25544  51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537', [51.6416, 247.4627, 0.0006703, 130.536, 325.0288, 15.72125391, 56353, True]), ('two-line element set line 2 "2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453"', '2 43013  97.7245  10.2000 1234567  88.1000 272.0500 14.19553612123453', [97.7245, 10.2, 0.1234567, 88.1, 272.05, 14.19553612, 12345, True]), ('two-line element set line 2 "2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12"', '2 11111   0.0543 359.9999 0000050   0.0000 180.0000  1.00271798    12', [0.0543, 359.9999, 5e-06, 0.0, 180.0, 1.00271798, 1, True]), ('two-line element set line 2 "2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994"', '2 28654  98.9000 120.7000 0014000 300.2500  59.9000 14.12501077999994', [98.9, 120.7, 0.0014, 300.25, 59.9, 14.12501077, 99999, True]), ('two-line element set line 2 "2 25000  28.5000 200.0000 0000999  12.0000 348.0000 15.90000000    06"', '2 25000  28.5000 200.0000 0000999  12.0000 348.0000 15.90000000    06', [28.5, 200.0, 9.99e-05, 12.0, 348.0, 15.9, 0, True]), ('two-line element set line 2 "2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212"', '2 36000  55.0000 150.0000 0025000  45.0000 315.0000  2.00567000 43212', [55.0, 150.0, 0.0025, 45.0, 315.0, 2.00567, 4321, True])]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary 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 / a35b0ca731485d29c7bb3d25cd17f84b13deccd752347f259f77087c3801567f

Verification & scope

A deterministic toy two-body model with stipulated constants and conventions; not flight dynamics software or a validated SGP4 implementation. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.

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

Case digest / 40ccaa9834dacbdcfac3e4e8a4179ede1e1fb3fe6b5f4df0e79bba24a28a6f11