FAILURE MAP
← Case archive

FA-55361 / Astronomical coordinate conventions / Open access

Ephemeris hermite state: Left endpoint velocity is not converted into a normalized ephemeris tangent · case 01

The adapter reports an incorrect left tangent while other fields remain valid.

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

ROOT CAUSE

Left endpoint velocity is not converted into a normalized ephemeris tangent. Faulty expression: d['v0']

VERIFIED REPAIR

Preserve the declared model convention at this site: d['h']*d['v0']

Unsuccessful approach: A partial convention repair still uses d['v0']/d['h']

Case contract

A bounded one-axis ephemeris interval provides endpoint positions p0,p1 and velocities v0,v1 across duration h. At midpoint, cubic Hermite value and derivative use time-scaled tangents. Also expose normalized endpoint tangents and acceleration endpoints as diagnostics. h is positive. Output fields are defined by: midpoint_position = (d['p0']+d['p1'])/2+d['h']*(d['v0']-d['v1'])/8; midpoint_velocity = 1.5*(d['p1']-d['p0'])/d['h']-(d['v0']+d['v1'])/4; left_tangent = d['h']*d['v0']; right_tangent = d['h']*d['v1']; left_acceleration = 6*(d['p1']-d['p0'])/d['h']**2-(4*d['v0']+2*d['v1'])/d['h']; right_acceleration = -6*(d['p1']-d['p0'])/d['h']**2+(2*d['v0']+4*d['v1'])/d['h']

Why this case matters

Catalog, detector, sky-coordinate, and spectroscopy adapters must preserve the association between numeric coordinates and their declared reference conventions.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    return {'midpoint_position': (d['p0']+d['p1'])/2+d['h']*(d['v0']-d['v1'])/8, 'midpoint_velocity': 1.5*(d['p1']-d['p0'])/d['h']-(d['v0']+d['v1'])/4, 'left_tangent': d['v0'], 'right_tangent': d['h']*d['v1'], 'left_acceleration': 6*(d['p1']-d['p0'])/d['h']**2-(4*d['v0']+2*d['v1'])/d['h'], 'right_acceleration': -6*(d['p1']-d['p0'])/d['h']**2+(2*d['v0']+4*d['v1'])/d['h']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'p0': 4, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 10.0, 'midpoint_velocity': 4.0, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': 1.0, 'right_acceleration': 1.0}), ({'p0': 4, 'p1': 20, 'v0': 0, 'v1': 0, 'h': 4}, {'midpoint_position': 12.0, 'midpoint_velocity': 6.0, 'left_tangent': 0, 'right_tangent': 0, 'left_acceleration': 6.0, 'right_acceleration': -6.0}), ({'p0': 4, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 1}, {'midpoint_position': 11.5, 'midpoint_velocity': 22.0, 'left_tangent': 2, 'right_tangent': 6, 'left_acceleration': 76.0, 'right_acceleration': -68.0}), ({'p0': 20, 'p1': 4, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 10.0, 'midpoint_velocity': -8.0, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -11.0, 'right_acceleration': 13.0}), ({'p0': 4, 'p1': 20, 'v0': -2, 'v1': 3, 'h': 4}, {'midpoint_position': 9.5, 'midpoint_velocity': 5.75, 'left_tangent': -8, 'right_tangent': 12, 'left_acceleration': 6.5, 'right_acceleration': -4.0}), ({'p0': 0, 'p1': 0, 'v0': 2, 'v1': 6, 'h': 2}, {'midpoint_position': -1.0, 'midpoint_velocity': -2.0, 'left_tangent': 4, 'right_tangent': 12, 'left_acceleration': -10.0, 'right_acceleration': 14.0})], 2: [({'p0': 5, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 10.5, 'midpoint_velocity': 3.625, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': 0.625, 'right_acceleration': 1.375}), ({'p0': 5, 'p1': 20, 'v0': 0, 'v1': 0, 'h': 4}, {'midpoint_position': 12.5, 'midpoint_velocity': 5.625, 'left_tangent': 0, 'right_tangent': 0, 'left_acceleration': 5.625, 'right_acceleration': -5.625}), ({'p0': 5, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 1}, {'midpoint_position': 12.0, 'midpoint_velocity': 20.5, 'left_tangent': 2, 'right_tangent': 6, 'left_acceleration': 70.0, 'right_acceleration': -62.0}), ({'p0': 21, 'p1': 4, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 10.5, 'midpoint_velocity': -8.375, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -11.375, 'right_acceleration': 13.375}), ({'p0': 5, 'p1': 20, 'v0': -2, 'v1': 3, 'h': 4}, {'midpoint_position': 10.0, 'midpoint_velocity': 5.375, 'left_tangent': -8, 'right_tangent': 12, 'left_acceleration': 6.125, 'right_acceleration': -3.625}), ({'p0': 1, 'p1': 0, 'v0': 2, 'v1': 6, 'h': 2}, {'midpoint_position': -0.5, 'midpoint_velocity': -2.75, 'left_tangent': 4, 'right_tangent': 12, 'left_acceleration': -11.5, 'right_acceleration': 15.5})], 3: [({'p0': 6, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 11.0, 'midpoint_velocity': 3.25, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': 0.25, 'right_acceleration': 1.75}), ({'p0': 6, 'p1': 20, 'v0': 0, 'v1': 0, 'h': 4}, {'midpoint_position': 13.0, 'midpoint_velocity': 5.25, 'left_tangent': 0, 'right_tangent': 0, 'left_acceleration': 5.25, 'right_acceleration': -5.25}), ({'p0': 6, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 1}, {'midpoint_position': 12.5, 'midpoint_velocity': 19.0, 'left_tangent': 2, 'right_tangent': 6, 'left_acceleration': 64.0, 'right_acceleration': -56.0}), ({'p0': 22, 'p1': 4, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 11.0, 'midpoint_velocity': -8.75, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -11.75, 'right_acceleration': 13.75}), ({'p0': 6, 'p1': 20, 'v0': -2, 'v1': 3, 'h': 4}, {'midpoint_position': 10.5, 'midpoint_velocity': 5.0, 'left_tangent': -8, 'right_tangent': 12, 'left_acceleration': 5.75, 'right_acceleration': -3.25}), ({'p0': 2, 'p1': 0, 'v0': 2, 'v1': 6, 'h': 2}, {'midpoint_position': 0.0, 'midpoint_velocity': -3.5, 'left_tangent': 4, 'right_tangent': 12, 'left_acceleration': -13.0, 'right_acceleration': 17.0})], 4: [({'p0': 7, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 11.5, 'midpoint_velocity': 2.875, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -0.125, 'right_acceleration': 2.125}), ({'p0': 7, 'p1': 20, 'v0': 0, 'v1': 0, 'h': 4}, {'midpoint_position': 13.5, 'midpoint_velocity': 4.875, 'left_tangent': 0, 'right_tangent': 0, 'left_acceleration': 4.875, 'right_acceleration': -4.875}), ({'p0': 7, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 1}, {'midpoint_position': 13.0, 'midpoint_velocity': 17.5, 'left_tangent': 2, 'right_tangent': 6, 'left_acceleration': 58.0, 'right_acceleration': -50.0}), ({'p0': 23, 'p1': 4, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 11.5, 'midpoint_velocity': -9.125, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -12.125, 'right_acceleration': 14.125}), ({'p0': 7, 'p1': 20, 'v0': -2, 'v1': 3, 'h': 4}, {'midpoint_position': 11.0, 'midpoint_velocity': 4.625, 'left_tangent': -8, 'right_tangent': 12, 'left_acceleration': 5.375, 'right_acceleration': -2.875}), ({'p0': 3, 'p1': 0, 'v0': 2, 'v1': 6, 'h': 2}, {'midpoint_position': 0.5, 'midpoint_velocity': -4.25, 'left_tangent': 4, 'right_tangent': 12, 'left_acceleration': -14.5, 'right_acceleration': 18.5})], 5: [({'p0': 8, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 12.0, 'midpoint_velocity': 2.5, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -0.5, 'right_acceleration': 2.5}), ({'p0': 8, 'p1': 20, 'v0': 0, 'v1': 0, 'h': 4}, {'midpoint_position': 14.0, 'midpoint_velocity': 4.5, 'left_tangent': 0, 'right_tangent': 0, 'left_acceleration': 4.5, 'right_acceleration': -4.5}), ({'p0': 8, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 1}, {'midpoint_position': 13.5, 'midpoint_velocity': 16.0, 'left_tangent': 2, 'right_tangent': 6, 'left_acceleration': 52.0, 'right_acceleration': -44.0}), ({'p0': 24, 'p1': 4, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 12.0, 'midpoint_velocity': -9.5, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -12.5, 'right_acceleration': 14.5}), ({'p0': 8, 'p1': 20, 'v0': -2, 'v1': 3, 'h': 4}, {'midpoint_position': 11.5, 'midpoint_velocity': 4.25, 'left_tangent': -8, 'right_tangent': 12, 'left_acceleration': 5.0, 'right_acceleration': -2.5}), ({'p0': 4, 'p1': 0, 'v0': 2, 'v1': 6, 'h': 2}, {'midpoint_position': 1.0, 'midpoint_velocity': -5.0, 'left_tangent': 4, 'right_tangent': 12, 'left_acceleration': -16.0, 'right_acceleration': 20.0})]}
for i, (record, expected) in enumerate(fixtures[N]):
    check('astronomical fixture %s' % i, solve(record), 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
astronomical fixture 0{'left_acceleration': 1.0, 'left_tangent': 2, 'midpoint_position': 10.0, 'midpoint_velocity': 4.0, 'right_acceleration': 1.0, 'right_tangent': 24}{'left_acceleration': 1.0, 'left_tangent': 8, 'midpoint_position': 10.0, 'midpoint_velocity': 4.0, 'right_acceleration': 1.0, 'right_tangent': 24}Failed
astronomical fixture 1{'left_acceleration': 6.0, 'left_tangent': 0, 'midpoint_position': 12.0, 'midpoint_velocity': 6.0, 'right_acceleration': -6.0, 'right_tangent': 0}{'left_acceleration': 6.0, 'left_tangent': 0, 'midpoint_position': 12.0, 'midpoint_velocity': 6.0, 'right_acceleration': -6.0, 'right_tangent': 0}Passed
astronomical fixture 2{'left_acceleration': 76.0, 'left_tangent': 2, 'midpoint_position': 11.5, 'midpoint_velocity': 22.0, 'right_acceleration': -68.0, 'right_tangent': 6}{'left_acceleration': 76.0, 'left_tangent': 2, 'midpoint_position': 11.5, 'midpoint_velocity': 22.0, 'right_acceleration': -68.0, 'right_tangent': 6}Passed
astronomical fixture 3{'left_acceleration': -11.0, 'left_tangent': 2, 'midpoint_position': 10.0, 'midpoint_velocity': -8.0, 'right_acceleration': 13.0, 'right_tangent': 24}{'left_acceleration': -11.0, 'left_tangent': 8, 'midpoint_position': 10.0, 'midpoint_velocity': -8.0, 'right_acceleration': 13.0, 'right_tangent': 24}Failed
astronomical fixture 4{'left_acceleration': 6.5, 'left_tangent': -2, 'midpoint_position': 9.5, 'midpoint_velocity': 5.75, 'right_acceleration': -4.0, 'right_tangent': 12}{'left_acceleration': 6.5, 'left_tangent': -8, 'midpoint_position': 9.5, 'midpoint_velocity': 5.75, 'right_acceleration': -4.0, 'right_tangent': 12}Failed
astronomical fixture 5{'left_acceleration': -10.0, 'left_tangent': 2, 'midpoint_position': -1.0, 'midpoint_velocity': -2.0, 'right_acceleration': 14.0, 'right_tangent': 12}{'left_acceleration': -10.0, 'left_tangent': 4, 'midpoint_position': -1.0, 'midpoint_velocity': -2.0, 'right_acceleration': 14.0, 'right_tangent': 12}Failed

SHA-256 / 7edaf7da88f52a6ecf0c5218f71522c1a2154a8bd975445f6acf1f55dfc5cddd

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    return {'midpoint_position': (d['p0']+d['p1'])/2+d['h']*(d['v0']-d['v1'])/8, 'midpoint_velocity': 1.5*(d['p1']-d['p0'])/d['h']-(d['v0']+d['v1'])/4, 'left_tangent': d['v0']/d['h'], 'right_tangent': d['h']*d['v1'], 'left_acceleration': 6*(d['p1']-d['p0'])/d['h']**2-(4*d['v0']+2*d['v1'])/d['h'], 'right_acceleration': -6*(d['p1']-d['p0'])/d['h']**2+(2*d['v0']+4*d['v1'])/d['h']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'p0': 4, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 10.0, 'midpoint_velocity': 4.0, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': 1.0, 'right_acceleration': 1.0}), ({'p0': 4, 'p1': 20, 'v0': 0, 'v1': 0, 'h': 4}, {'midpoint_position': 12.0, 'midpoint_velocity': 6.0, 'left_tangent': 0, 'right_tangent': 0, 'left_acceleration': 6.0, 'right_acceleration': -6.0}), ({'p0': 4, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 1}, {'midpoint_position': 11.5, 'midpoint_velocity': 22.0, 'left_tangent': 2, 'right_tangent': 6, 'left_acceleration': 76.0, 'right_acceleration': -68.0}), ({'p0': 20, 'p1': 4, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 10.0, 'midpoint_velocity': -8.0, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -11.0, 'right_acceleration': 13.0}), ({'p0': 4, 'p1': 20, 'v0': -2, 'v1': 3, 'h': 4}, {'midpoint_position': 9.5, 'midpoint_velocity': 5.75, 'left_tangent': -8, 'right_tangent': 12, 'left_acceleration': 6.5, 'right_acceleration': -4.0}), ({'p0': 0, 'p1': 0, 'v0': 2, 'v1': 6, 'h': 2}, {'midpoint_position': -1.0, 'midpoint_velocity': -2.0, 'left_tangent': 4, 'right_tangent': 12, 'left_acceleration': -10.0, 'right_acceleration': 14.0})], 2: [({'p0': 5, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 10.5, 'midpoint_velocity': 3.625, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': 0.625, 'right_acceleration': 1.375}), ({'p0': 5, 'p1': 20, 'v0': 0, 'v1': 0, 'h': 4}, {'midpoint_position': 12.5, 'midpoint_velocity': 5.625, 'left_tangent': 0, 'right_tangent': 0, 'left_acceleration': 5.625, 'right_acceleration': -5.625}), ({'p0': 5, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 1}, {'midpoint_position': 12.0, 'midpoint_velocity': 20.5, 'left_tangent': 2, 'right_tangent': 6, 'left_acceleration': 70.0, 'right_acceleration': -62.0}), ({'p0': 21, 'p1': 4, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 10.5, 'midpoint_velocity': -8.375, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -11.375, 'right_acceleration': 13.375}), ({'p0': 5, 'p1': 20, 'v0': -2, 'v1': 3, 'h': 4}, {'midpoint_position': 10.0, 'midpoint_velocity': 5.375, 'left_tangent': -8, 'right_tangent': 12, 'left_acceleration': 6.125, 'right_acceleration': -3.625}), ({'p0': 1, 'p1': 0, 'v0': 2, 'v1': 6, 'h': 2}, {'midpoint_position': -0.5, 'midpoint_velocity': -2.75, 'left_tangent': 4, 'right_tangent': 12, 'left_acceleration': -11.5, 'right_acceleration': 15.5})], 3: [({'p0': 6, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 11.0, 'midpoint_velocity': 3.25, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': 0.25, 'right_acceleration': 1.75}), ({'p0': 6, 'p1': 20, 'v0': 0, 'v1': 0, 'h': 4}, {'midpoint_position': 13.0, 'midpoint_velocity': 5.25, 'left_tangent': 0, 'right_tangent': 0, 'left_acceleration': 5.25, 'right_acceleration': -5.25}), ({'p0': 6, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 1}, {'midpoint_position': 12.5, 'midpoint_velocity': 19.0, 'left_tangent': 2, 'right_tangent': 6, 'left_acceleration': 64.0, 'right_acceleration': -56.0}), ({'p0': 22, 'p1': 4, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 11.0, 'midpoint_velocity': -8.75, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -11.75, 'right_acceleration': 13.75}), ({'p0': 6, 'p1': 20, 'v0': -2, 'v1': 3, 'h': 4}, {'midpoint_position': 10.5, 'midpoint_velocity': 5.0, 'left_tangent': -8, 'right_tangent': 12, 'left_acceleration': 5.75, 'right_acceleration': -3.25}), ({'p0': 2, 'p1': 0, 'v0': 2, 'v1': 6, 'h': 2}, {'midpoint_position': 0.0, 'midpoint_velocity': -3.5, 'left_tangent': 4, 'right_tangent': 12, 'left_acceleration': -13.0, 'right_acceleration': 17.0})], 4: [({'p0': 7, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 11.5, 'midpoint_velocity': 2.875, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -0.125, 'right_acceleration': 2.125}), ({'p0': 7, 'p1': 20, 'v0': 0, 'v1': 0, 'h': 4}, {'midpoint_position': 13.5, 'midpoint_velocity': 4.875, 'left_tangent': 0, 'right_tangent': 0, 'left_acceleration': 4.875, 'right_acceleration': -4.875}), ({'p0': 7, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 1}, {'midpoint_position': 13.0, 'midpoint_velocity': 17.5, 'left_tangent': 2, 'right_tangent': 6, 'left_acceleration': 58.0, 'right_acceleration': -50.0}), ({'p0': 23, 'p1': 4, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 11.5, 'midpoint_velocity': -9.125, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -12.125, 'right_acceleration': 14.125}), ({'p0': 7, 'p1': 20, 'v0': -2, 'v1': 3, 'h': 4}, {'midpoint_position': 11.0, 'midpoint_velocity': 4.625, 'left_tangent': -8, 'right_tangent': 12, 'left_acceleration': 5.375, 'right_acceleration': -2.875}), ({'p0': 3, 'p1': 0, 'v0': 2, 'v1': 6, 'h': 2}, {'midpoint_position': 0.5, 'midpoint_velocity': -4.25, 'left_tangent': 4, 'right_tangent': 12, 'left_acceleration': -14.5, 'right_acceleration': 18.5})], 5: [({'p0': 8, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 12.0, 'midpoint_velocity': 2.5, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -0.5, 'right_acceleration': 2.5}), ({'p0': 8, 'p1': 20, 'v0': 0, 'v1': 0, 'h': 4}, {'midpoint_position': 14.0, 'midpoint_velocity': 4.5, 'left_tangent': 0, 'right_tangent': 0, 'left_acceleration': 4.5, 'right_acceleration': -4.5}), ({'p0': 8, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 1}, {'midpoint_position': 13.5, 'midpoint_velocity': 16.0, 'left_tangent': 2, 'right_tangent': 6, 'left_acceleration': 52.0, 'right_acceleration': -44.0}), ({'p0': 24, 'p1': 4, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 12.0, 'midpoint_velocity': -9.5, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -12.5, 'right_acceleration': 14.5}), ({'p0': 8, 'p1': 20, 'v0': -2, 'v1': 3, 'h': 4}, {'midpoint_position': 11.5, 'midpoint_velocity': 4.25, 'left_tangent': -8, 'right_tangent': 12, 'left_acceleration': 5.0, 'right_acceleration': -2.5}), ({'p0': 4, 'p1': 0, 'v0': 2, 'v1': 6, 'h': 2}, {'midpoint_position': 1.0, 'midpoint_velocity': -5.0, 'left_tangent': 4, 'right_tangent': 12, 'left_acceleration': -16.0, 'right_acceleration': 20.0})]}
for i, (record, expected) in enumerate(fixtures[N]):
    check('astronomical fixture %s' % i, solve(record), 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
astronomical fixture 0{'left_acceleration': 1.0, 'left_tangent': 0.5, 'midpoint_position': 10.0, 'midpoint_velocity': 4.0, 'right_acceleration': 1.0, 'right_tangent': 24}{'left_acceleration': 1.0, 'left_tangent': 8, 'midpoint_position': 10.0, 'midpoint_velocity': 4.0, 'right_acceleration': 1.0, 'right_tangent': 24}Failed
astronomical fixture 1{'left_acceleration': 6.0, 'left_tangent': 0.0, 'midpoint_position': 12.0, 'midpoint_velocity': 6.0, 'right_acceleration': -6.0, 'right_tangent': 0}{'left_acceleration': 6.0, 'left_tangent': 0, 'midpoint_position': 12.0, 'midpoint_velocity': 6.0, 'right_acceleration': -6.0, 'right_tangent': 0}Passed
astronomical fixture 2{'left_acceleration': 76.0, 'left_tangent': 2.0, 'midpoint_position': 11.5, 'midpoint_velocity': 22.0, 'right_acceleration': -68.0, 'right_tangent': 6}{'left_acceleration': 76.0, 'left_tangent': 2, 'midpoint_position': 11.5, 'midpoint_velocity': 22.0, 'right_acceleration': -68.0, 'right_tangent': 6}Passed
astronomical fixture 3{'left_acceleration': -11.0, 'left_tangent': 0.5, 'midpoint_position': 10.0, 'midpoint_velocity': -8.0, 'right_acceleration': 13.0, 'right_tangent': 24}{'left_acceleration': -11.0, 'left_tangent': 8, 'midpoint_position': 10.0, 'midpoint_velocity': -8.0, 'right_acceleration': 13.0, 'right_tangent': 24}Failed
astronomical fixture 4{'left_acceleration': 6.5, 'left_tangent': -0.5, 'midpoint_position': 9.5, 'midpoint_velocity': 5.75, 'right_acceleration': -4.0, 'right_tangent': 12}{'left_acceleration': 6.5, 'left_tangent': -8, 'midpoint_position': 9.5, 'midpoint_velocity': 5.75, 'right_acceleration': -4.0, 'right_tangent': 12}Failed
astronomical fixture 5{'left_acceleration': -10.0, 'left_tangent': 1.0, 'midpoint_position': -1.0, 'midpoint_velocity': -2.0, 'right_acceleration': 14.0, 'right_tangent': 12}{'left_acceleration': -10.0, 'left_tangent': 4, 'midpoint_position': -1.0, 'midpoint_velocity': -2.0, 'right_acceleration': 14.0, 'right_tangent': 12}Failed

SHA-256 / 3c3b4f8ad66913d756a283c58829dfaa25625ec768100517f8295250ce38435b

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    return {'midpoint_position': (d['p0']+d['p1'])/2+d['h']*(d['v0']-d['v1'])/8, 'midpoint_velocity': 1.5*(d['p1']-d['p0'])/d['h']-(d['v0']+d['v1'])/4, 'left_tangent': d['h']*d['v0'], 'right_tangent': d['h']*d['v1'], 'left_acceleration': 6*(d['p1']-d['p0'])/d['h']**2-(4*d['v0']+2*d['v1'])/d['h'], 'right_acceleration': -6*(d['p1']-d['p0'])/d['h']**2+(2*d['v0']+4*d['v1'])/d['h']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'p0': 4, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 10.0, 'midpoint_velocity': 4.0, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': 1.0, 'right_acceleration': 1.0}), ({'p0': 4, 'p1': 20, 'v0': 0, 'v1': 0, 'h': 4}, {'midpoint_position': 12.0, 'midpoint_velocity': 6.0, 'left_tangent': 0, 'right_tangent': 0, 'left_acceleration': 6.0, 'right_acceleration': -6.0}), ({'p0': 4, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 1}, {'midpoint_position': 11.5, 'midpoint_velocity': 22.0, 'left_tangent': 2, 'right_tangent': 6, 'left_acceleration': 76.0, 'right_acceleration': -68.0}), ({'p0': 20, 'p1': 4, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 10.0, 'midpoint_velocity': -8.0, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -11.0, 'right_acceleration': 13.0}), ({'p0': 4, 'p1': 20, 'v0': -2, 'v1': 3, 'h': 4}, {'midpoint_position': 9.5, 'midpoint_velocity': 5.75, 'left_tangent': -8, 'right_tangent': 12, 'left_acceleration': 6.5, 'right_acceleration': -4.0}), ({'p0': 0, 'p1': 0, 'v0': 2, 'v1': 6, 'h': 2}, {'midpoint_position': -1.0, 'midpoint_velocity': -2.0, 'left_tangent': 4, 'right_tangent': 12, 'left_acceleration': -10.0, 'right_acceleration': 14.0})], 2: [({'p0': 5, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 10.5, 'midpoint_velocity': 3.625, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': 0.625, 'right_acceleration': 1.375}), ({'p0': 5, 'p1': 20, 'v0': 0, 'v1': 0, 'h': 4}, {'midpoint_position': 12.5, 'midpoint_velocity': 5.625, 'left_tangent': 0, 'right_tangent': 0, 'left_acceleration': 5.625, 'right_acceleration': -5.625}), ({'p0': 5, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 1}, {'midpoint_position': 12.0, 'midpoint_velocity': 20.5, 'left_tangent': 2, 'right_tangent': 6, 'left_acceleration': 70.0, 'right_acceleration': -62.0}), ({'p0': 21, 'p1': 4, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 10.5, 'midpoint_velocity': -8.375, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -11.375, 'right_acceleration': 13.375}), ({'p0': 5, 'p1': 20, 'v0': -2, 'v1': 3, 'h': 4}, {'midpoint_position': 10.0, 'midpoint_velocity': 5.375, 'left_tangent': -8, 'right_tangent': 12, 'left_acceleration': 6.125, 'right_acceleration': -3.625}), ({'p0': 1, 'p1': 0, 'v0': 2, 'v1': 6, 'h': 2}, {'midpoint_position': -0.5, 'midpoint_velocity': -2.75, 'left_tangent': 4, 'right_tangent': 12, 'left_acceleration': -11.5, 'right_acceleration': 15.5})], 3: [({'p0': 6, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 11.0, 'midpoint_velocity': 3.25, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': 0.25, 'right_acceleration': 1.75}), ({'p0': 6, 'p1': 20, 'v0': 0, 'v1': 0, 'h': 4}, {'midpoint_position': 13.0, 'midpoint_velocity': 5.25, 'left_tangent': 0, 'right_tangent': 0, 'left_acceleration': 5.25, 'right_acceleration': -5.25}), ({'p0': 6, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 1}, {'midpoint_position': 12.5, 'midpoint_velocity': 19.0, 'left_tangent': 2, 'right_tangent': 6, 'left_acceleration': 64.0, 'right_acceleration': -56.0}), ({'p0': 22, 'p1': 4, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 11.0, 'midpoint_velocity': -8.75, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -11.75, 'right_acceleration': 13.75}), ({'p0': 6, 'p1': 20, 'v0': -2, 'v1': 3, 'h': 4}, {'midpoint_position': 10.5, 'midpoint_velocity': 5.0, 'left_tangent': -8, 'right_tangent': 12, 'left_acceleration': 5.75, 'right_acceleration': -3.25}), ({'p0': 2, 'p1': 0, 'v0': 2, 'v1': 6, 'h': 2}, {'midpoint_position': 0.0, 'midpoint_velocity': -3.5, 'left_tangent': 4, 'right_tangent': 12, 'left_acceleration': -13.0, 'right_acceleration': 17.0})], 4: [({'p0': 7, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 11.5, 'midpoint_velocity': 2.875, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -0.125, 'right_acceleration': 2.125}), ({'p0': 7, 'p1': 20, 'v0': 0, 'v1': 0, 'h': 4}, {'midpoint_position': 13.5, 'midpoint_velocity': 4.875, 'left_tangent': 0, 'right_tangent': 0, 'left_acceleration': 4.875, 'right_acceleration': -4.875}), ({'p0': 7, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 1}, {'midpoint_position': 13.0, 'midpoint_velocity': 17.5, 'left_tangent': 2, 'right_tangent': 6, 'left_acceleration': 58.0, 'right_acceleration': -50.0}), ({'p0': 23, 'p1': 4, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 11.5, 'midpoint_velocity': -9.125, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -12.125, 'right_acceleration': 14.125}), ({'p0': 7, 'p1': 20, 'v0': -2, 'v1': 3, 'h': 4}, {'midpoint_position': 11.0, 'midpoint_velocity': 4.625, 'left_tangent': -8, 'right_tangent': 12, 'left_acceleration': 5.375, 'right_acceleration': -2.875}), ({'p0': 3, 'p1': 0, 'v0': 2, 'v1': 6, 'h': 2}, {'midpoint_position': 0.5, 'midpoint_velocity': -4.25, 'left_tangent': 4, 'right_tangent': 12, 'left_acceleration': -14.5, 'right_acceleration': 18.5})], 5: [({'p0': 8, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 12.0, 'midpoint_velocity': 2.5, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -0.5, 'right_acceleration': 2.5}), ({'p0': 8, 'p1': 20, 'v0': 0, 'v1': 0, 'h': 4}, {'midpoint_position': 14.0, 'midpoint_velocity': 4.5, 'left_tangent': 0, 'right_tangent': 0, 'left_acceleration': 4.5, 'right_acceleration': -4.5}), ({'p0': 8, 'p1': 20, 'v0': 2, 'v1': 6, 'h': 1}, {'midpoint_position': 13.5, 'midpoint_velocity': 16.0, 'left_tangent': 2, 'right_tangent': 6, 'left_acceleration': 52.0, 'right_acceleration': -44.0}), ({'p0': 24, 'p1': 4, 'v0': 2, 'v1': 6, 'h': 4}, {'midpoint_position': 12.0, 'midpoint_velocity': -9.5, 'left_tangent': 8, 'right_tangent': 24, 'left_acceleration': -12.5, 'right_acceleration': 14.5}), ({'p0': 8, 'p1': 20, 'v0': -2, 'v1': 3, 'h': 4}, {'midpoint_position': 11.5, 'midpoint_velocity': 4.25, 'left_tangent': -8, 'right_tangent': 12, 'left_acceleration': 5.0, 'right_acceleration': -2.5}), ({'p0': 4, 'p1': 0, 'v0': 2, 'v1': 6, 'h': 2}, {'midpoint_position': 1.0, 'midpoint_velocity': -5.0, 'left_tangent': 4, 'right_tangent': 12, 'left_acceleration': -16.0, 'right_acceleration': 20.0})]}
for i, (record, expected) in enumerate(fixtures[N]):
    check('astronomical fixture %s' % i, solve(record), 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
astronomical fixture 0{'left_acceleration': 1.0, 'left_tangent': 8, 'midpoint_position': 10.0, 'midpoint_velocity': 4.0, 'right_acceleration': 1.0, 'right_tangent': 24}{'left_acceleration': 1.0, 'left_tangent': 8, 'midpoint_position': 10.0, 'midpoint_velocity': 4.0, 'right_acceleration': 1.0, 'right_tangent': 24}Passed
astronomical fixture 1{'left_acceleration': 6.0, 'left_tangent': 0, 'midpoint_position': 12.0, 'midpoint_velocity': 6.0, 'right_acceleration': -6.0, 'right_tangent': 0}{'left_acceleration': 6.0, 'left_tangent': 0, 'midpoint_position': 12.0, 'midpoint_velocity': 6.0, 'right_acceleration': -6.0, 'right_tangent': 0}Passed
astronomical fixture 2{'left_acceleration': 76.0, 'left_tangent': 2, 'midpoint_position': 11.5, 'midpoint_velocity': 22.0, 'right_acceleration': -68.0, 'right_tangent': 6}{'left_acceleration': 76.0, 'left_tangent': 2, 'midpoint_position': 11.5, 'midpoint_velocity': 22.0, 'right_acceleration': -68.0, 'right_tangent': 6}Passed
astronomical fixture 3{'left_acceleration': -11.0, 'left_tangent': 8, 'midpoint_position': 10.0, 'midpoint_velocity': -8.0, 'right_acceleration': 13.0, 'right_tangent': 24}{'left_acceleration': -11.0, 'left_tangent': 8, 'midpoint_position': 10.0, 'midpoint_velocity': -8.0, 'right_acceleration': 13.0, 'right_tangent': 24}Passed
astronomical fixture 4{'left_acceleration': 6.5, 'left_tangent': -8, 'midpoint_position': 9.5, 'midpoint_velocity': 5.75, 'right_acceleration': -4.0, 'right_tangent': 12}{'left_acceleration': 6.5, 'left_tangent': -8, 'midpoint_position': 9.5, 'midpoint_velocity': 5.75, 'right_acceleration': -4.0, 'right_tangent': 12}Passed
astronomical fixture 5{'left_acceleration': -10.0, 'left_tangent': 4, 'midpoint_position': -1.0, 'midpoint_velocity': -2.0, 'right_acceleration': 14.0, 'right_tangent': 12}{'left_acceleration': -10.0, 'left_tangent': 4, 'midpoint_position': -1.0, 'midpoint_velocity': -2.0, 'right_acceleration': 14.0, 'right_tangent': 12}Passed

SHA-256 / c57ddac600f55031c864ffc543586f5efe8dace7090113a057da393ab082b6e7

Verification & scope

Explicitly stipulated finite algebraic adapter; no standards conformance, physical accuracy, or production-library claim. Inputs are the documented finite valid model domain. 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:45:57.200119+00:00.

Case digest / 932e5212c6041c8555d9a313f6ce9401f2c414e1835d41fd96d27361610b1555