FA-55411 / Astronomical coordinate conventions / Open access
Solar longitude conventions: Central-meridian-relative solar longitude is mislabeled as Carrington longitude · case 01
The adapter reports an incorrect carrington while other fields remain valid.
ROOT CAUSE
Central-meridian-relative solar longitude is mislabeled as Carrington longitude. Faulty expression: (d['C']-d['s'])%360
VERIFIED REPAIR
Preserve the declared model convention at this site: (d['C']+d['s'])%360
Unsuccessful approach: A partial convention repair still uses d['s']%360
Case contract
A reduced solar adapter stores Stonyhurst longitude s relative to central meridian C. Carrington longitude is C+s modulo a turn. A west-positive disk offset is supplied separately; rotation transport over dt uses rates r for feature and rc for central meridian. Angles are model degrees. Output fields are defined by: carrington = (d['C']+d['s'])%360; stonyhurst_from_carrington = ((d['C']+d['s'])%360-d['C']+180)%360-180; image_east_offset = -d['west']; transported_feature = (d['C']+d['s']+d['r']*d['dt'])%360; transported_relative = (d['s']+(d['r']-d['rc'])*d['dt']+180)%360-180; central_meridian = (d['C']+d['rc']*d['dt'])%360
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 {'carrington': (d['C']-d['s'])%360, 'stonyhurst_from_carrington': ((d['C']+d['s'])%360-d['C']+180)%360-180, 'image_east_offset': -d['west'], 'transported_feature': (d['C']+d['s']+d['r']*d['dt'])%360, 'transported_relative': (d['s']+(d['r']-d['rc'])*d['dt']+180)%360-180, 'central_meridian': (d['C']+d['rc']*d['dt'])%360}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'s': 20, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 170, 'stonyhurst_from_carrington': 20, 'image_east_offset': -3, 'transported_feature': 198, 'transported_relative': 22, 'central_meridian': 176}), ({'s': 20, 'C': 350, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 10, 'stonyhurst_from_carrington': 20, 'image_east_offset': -3, 'transported_feature': 38, 'transported_relative': 22, 'central_meridian': 16}), ({'s': -40, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 110, 'stonyhurst_from_carrington': -40, 'image_east_offset': -3, 'transported_feature': 138, 'transported_relative': -38, 'central_meridian': 176}), ({'s': 20, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 0}, {'carrington': 170, 'stonyhurst_from_carrington': 20, 'image_east_offset': -3, 'transported_feature': 170, 'transported_relative': 20, 'central_meridian': 150}), ({'s': 20, 'C': 150, 'west': 3, 'r': 12, 'rc': 14, 'dt': -2}, {'carrington': 170, 'stonyhurst_from_carrington': 20, 'image_east_offset': -3, 'transported_feature': 146, 'transported_relative': 24, 'central_meridian': 122}), ({'s': 20, 'C': 0, 'west': -5, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 20, 'stonyhurst_from_carrington': 20, 'image_east_offset': 5, 'transported_feature': 48, 'transported_relative': 22, 'central_meridian': 26})], 2: [({'s': 21, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 171, 'stonyhurst_from_carrington': 21, 'image_east_offset': -3, 'transported_feature': 199, 'transported_relative': 23, 'central_meridian': 176}), ({'s': 21, 'C': 350, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 11, 'stonyhurst_from_carrington': 21, 'image_east_offset': -3, 'transported_feature': 39, 'transported_relative': 23, 'central_meridian': 16}), ({'s': -39, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 111, 'stonyhurst_from_carrington': -39, 'image_east_offset': -3, 'transported_feature': 139, 'transported_relative': -37, 'central_meridian': 176}), ({'s': 21, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 0}, {'carrington': 171, 'stonyhurst_from_carrington': 21, 'image_east_offset': -3, 'transported_feature': 171, 'transported_relative': 21, 'central_meridian': 150}), ({'s': 21, 'C': 150, 'west': 3, 'r': 12, 'rc': 14, 'dt': -2}, {'carrington': 171, 'stonyhurst_from_carrington': 21, 'image_east_offset': -3, 'transported_feature': 147, 'transported_relative': 25, 'central_meridian': 122}), ({'s': 21, 'C': 0, 'west': -5, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 21, 'stonyhurst_from_carrington': 21, 'image_east_offset': 5, 'transported_feature': 49, 'transported_relative': 23, 'central_meridian': 26})], 3: [({'s': 22, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 172, 'stonyhurst_from_carrington': 22, 'image_east_offset': -3, 'transported_feature': 200, 'transported_relative': 24, 'central_meridian': 176}), ({'s': 22, 'C': 350, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 12, 'stonyhurst_from_carrington': 22, 'image_east_offset': -3, 'transported_feature': 40, 'transported_relative': 24, 'central_meridian': 16}), ({'s': -38, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 112, 'stonyhurst_from_carrington': -38, 'image_east_offset': -3, 'transported_feature': 140, 'transported_relative': -36, 'central_meridian': 176}), ({'s': 22, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 0}, {'carrington': 172, 'stonyhurst_from_carrington': 22, 'image_east_offset': -3, 'transported_feature': 172, 'transported_relative': 22, 'central_meridian': 150}), ({'s': 22, 'C': 150, 'west': 3, 'r': 12, 'rc': 14, 'dt': -2}, {'carrington': 172, 'stonyhurst_from_carrington': 22, 'image_east_offset': -3, 'transported_feature': 148, 'transported_relative': 26, 'central_meridian': 122}), ({'s': 22, 'C': 0, 'west': -5, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 22, 'stonyhurst_from_carrington': 22, 'image_east_offset': 5, 'transported_feature': 50, 'transported_relative': 24, 'central_meridian': 26})], 4: [({'s': 23, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 173, 'stonyhurst_from_carrington': 23, 'image_east_offset': -3, 'transported_feature': 201, 'transported_relative': 25, 'central_meridian': 176}), ({'s': 23, 'C': 350, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 13, 'stonyhurst_from_carrington': 23, 'image_east_offset': -3, 'transported_feature': 41, 'transported_relative': 25, 'central_meridian': 16}), ({'s': -37, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 113, 'stonyhurst_from_carrington': -37, 'image_east_offset': -3, 'transported_feature': 141, 'transported_relative': -35, 'central_meridian': 176}), ({'s': 23, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 0}, {'carrington': 173, 'stonyhurst_from_carrington': 23, 'image_east_offset': -3, 'transported_feature': 173, 'transported_relative': 23, 'central_meridian': 150}), ({'s': 23, 'C': 150, 'west': 3, 'r': 12, 'rc': 14, 'dt': -2}, {'carrington': 173, 'stonyhurst_from_carrington': 23, 'image_east_offset': -3, 'transported_feature': 149, 'transported_relative': 27, 'central_meridian': 122}), ({'s': 23, 'C': 0, 'west': -5, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 23, 'stonyhurst_from_carrington': 23, 'image_east_offset': 5, 'transported_feature': 51, 'transported_relative': 25, 'central_meridian': 26})], 5: [({'s': 24, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 174, 'stonyhurst_from_carrington': 24, 'image_east_offset': -3, 'transported_feature': 202, 'transported_relative': 26, 'central_meridian': 176}), ({'s': 24, 'C': 350, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 14, 'stonyhurst_from_carrington': 24, 'image_east_offset': -3, 'transported_feature': 42, 'transported_relative': 26, 'central_meridian': 16}), ({'s': -36, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 114, 'stonyhurst_from_carrington': -36, 'image_east_offset': -3, 'transported_feature': 142, 'transported_relative': -34, 'central_meridian': 176}), ({'s': 24, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 0}, {'carrington': 174, 'stonyhurst_from_carrington': 24, 'image_east_offset': -3, 'transported_feature': 174, 'transported_relative': 24, 'central_meridian': 150}), ({'s': 24, 'C': 150, 'west': 3, 'r': 12, 'rc': 14, 'dt': -2}, {'carrington': 174, 'stonyhurst_from_carrington': 24, 'image_east_offset': -3, 'transported_feature': 150, 'transported_relative': 28, 'central_meridian': 122}), ({'s': 24, 'C': 0, 'west': -5, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 24, 'stonyhurst_from_carrington': 24, 'image_east_offset': 5, 'transported_feature': 52, 'transported_relative': 26, 'central_meridian': 26})]}
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| astronomical fixture 0 | {'carrington': 130, 'central_meridian': 176, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 198, 'transported_relative': 22} | {'carrington': 170, 'central_meridian': 176, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 198, 'transported_relative': 22} | Failed |
| astronomical fixture 1 | {'carrington': 330, 'central_meridian': 16, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 38, 'transported_relative': 22} | {'carrington': 10, 'central_meridian': 16, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 38, 'transported_relative': 22} | Failed |
| astronomical fixture 2 | {'carrington': 190, 'central_meridian': 176, 'image_east_offset': -3, 'stonyhurst_from_carrington': -40, 'transported_feature': 138, 'transported_relative': -38} | {'carrington': 110, 'central_meridian': 176, 'image_east_offset': -3, 'stonyhurst_from_carrington': -40, 'transported_feature': 138, 'transported_relative': -38} | Failed |
| astronomical fixture 3 | {'carrington': 130, 'central_meridian': 150, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 170, 'transported_relative': 20} | {'carrington': 170, 'central_meridian': 150, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 170, 'transported_relative': 20} | Failed |
| astronomical fixture 4 | {'carrington': 130, 'central_meridian': 122, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 146, 'transported_relative': 24} | {'carrington': 170, 'central_meridian': 122, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 146, 'transported_relative': 24} | Failed |
| astronomical fixture 5 | {'carrington': 340, 'central_meridian': 26, 'image_east_offset': 5, 'stonyhurst_from_carrington': 20, 'transported_feature': 48, 'transported_relative': 22} | {'carrington': 20, 'central_meridian': 26, 'image_east_offset': 5, 'stonyhurst_from_carrington': 20, 'transported_feature': 48, 'transported_relative': 22} | Failed |
SHA-256 / 281de75c009fceb5225620487e4c6dfeb477d6d73fed88ecc04bc0b95bec37de
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
return {'carrington': d['s']%360, 'stonyhurst_from_carrington': ((d['C']+d['s'])%360-d['C']+180)%360-180, 'image_east_offset': -d['west'], 'transported_feature': (d['C']+d['s']+d['r']*d['dt'])%360, 'transported_relative': (d['s']+(d['r']-d['rc'])*d['dt']+180)%360-180, 'central_meridian': (d['C']+d['rc']*d['dt'])%360}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'s': 20, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 170, 'stonyhurst_from_carrington': 20, 'image_east_offset': -3, 'transported_feature': 198, 'transported_relative': 22, 'central_meridian': 176}), ({'s': 20, 'C': 350, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 10, 'stonyhurst_from_carrington': 20, 'image_east_offset': -3, 'transported_feature': 38, 'transported_relative': 22, 'central_meridian': 16}), ({'s': -40, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 110, 'stonyhurst_from_carrington': -40, 'image_east_offset': -3, 'transported_feature': 138, 'transported_relative': -38, 'central_meridian': 176}), ({'s': 20, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 0}, {'carrington': 170, 'stonyhurst_from_carrington': 20, 'image_east_offset': -3, 'transported_feature': 170, 'transported_relative': 20, 'central_meridian': 150}), ({'s': 20, 'C': 150, 'west': 3, 'r': 12, 'rc': 14, 'dt': -2}, {'carrington': 170, 'stonyhurst_from_carrington': 20, 'image_east_offset': -3, 'transported_feature': 146, 'transported_relative': 24, 'central_meridian': 122}), ({'s': 20, 'C': 0, 'west': -5, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 20, 'stonyhurst_from_carrington': 20, 'image_east_offset': 5, 'transported_feature': 48, 'transported_relative': 22, 'central_meridian': 26})], 2: [({'s': 21, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 171, 'stonyhurst_from_carrington': 21, 'image_east_offset': -3, 'transported_feature': 199, 'transported_relative': 23, 'central_meridian': 176}), ({'s': 21, 'C': 350, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 11, 'stonyhurst_from_carrington': 21, 'image_east_offset': -3, 'transported_feature': 39, 'transported_relative': 23, 'central_meridian': 16}), ({'s': -39, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 111, 'stonyhurst_from_carrington': -39, 'image_east_offset': -3, 'transported_feature': 139, 'transported_relative': -37, 'central_meridian': 176}), ({'s': 21, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 0}, {'carrington': 171, 'stonyhurst_from_carrington': 21, 'image_east_offset': -3, 'transported_feature': 171, 'transported_relative': 21, 'central_meridian': 150}), ({'s': 21, 'C': 150, 'west': 3, 'r': 12, 'rc': 14, 'dt': -2}, {'carrington': 171, 'stonyhurst_from_carrington': 21, 'image_east_offset': -3, 'transported_feature': 147, 'transported_relative': 25, 'central_meridian': 122}), ({'s': 21, 'C': 0, 'west': -5, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 21, 'stonyhurst_from_carrington': 21, 'image_east_offset': 5, 'transported_feature': 49, 'transported_relative': 23, 'central_meridian': 26})], 3: [({'s': 22, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 172, 'stonyhurst_from_carrington': 22, 'image_east_offset': -3, 'transported_feature': 200, 'transported_relative': 24, 'central_meridian': 176}), ({'s': 22, 'C': 350, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 12, 'stonyhurst_from_carrington': 22, 'image_east_offset': -3, 'transported_feature': 40, 'transported_relative': 24, 'central_meridian': 16}), ({'s': -38, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 112, 'stonyhurst_from_carrington': -38, 'image_east_offset': -3, 'transported_feature': 140, 'transported_relative': -36, 'central_meridian': 176}), ({'s': 22, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 0}, {'carrington': 172, 'stonyhurst_from_carrington': 22, 'image_east_offset': -3, 'transported_feature': 172, 'transported_relative': 22, 'central_meridian': 150}), ({'s': 22, 'C': 150, 'west': 3, 'r': 12, 'rc': 14, 'dt': -2}, {'carrington': 172, 'stonyhurst_from_carrington': 22, 'image_east_offset': -3, 'transported_feature': 148, 'transported_relative': 26, 'central_meridian': 122}), ({'s': 22, 'C': 0, 'west': -5, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 22, 'stonyhurst_from_carrington': 22, 'image_east_offset': 5, 'transported_feature': 50, 'transported_relative': 24, 'central_meridian': 26})], 4: [({'s': 23, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 173, 'stonyhurst_from_carrington': 23, 'image_east_offset': -3, 'transported_feature': 201, 'transported_relative': 25, 'central_meridian': 176}), ({'s': 23, 'C': 350, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 13, 'stonyhurst_from_carrington': 23, 'image_east_offset': -3, 'transported_feature': 41, 'transported_relative': 25, 'central_meridian': 16}), ({'s': -37, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 113, 'stonyhurst_from_carrington': -37, 'image_east_offset': -3, 'transported_feature': 141, 'transported_relative': -35, 'central_meridian': 176}), ({'s': 23, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 0}, {'carrington': 173, 'stonyhurst_from_carrington': 23, 'image_east_offset': -3, 'transported_feature': 173, 'transported_relative': 23, 'central_meridian': 150}), ({'s': 23, 'C': 150, 'west': 3, 'r': 12, 'rc': 14, 'dt': -2}, {'carrington': 173, 'stonyhurst_from_carrington': 23, 'image_east_offset': -3, 'transported_feature': 149, 'transported_relative': 27, 'central_meridian': 122}), ({'s': 23, 'C': 0, 'west': -5, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 23, 'stonyhurst_from_carrington': 23, 'image_east_offset': 5, 'transported_feature': 51, 'transported_relative': 25, 'central_meridian': 26})], 5: [({'s': 24, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 174, 'stonyhurst_from_carrington': 24, 'image_east_offset': -3, 'transported_feature': 202, 'transported_relative': 26, 'central_meridian': 176}), ({'s': 24, 'C': 350, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 14, 'stonyhurst_from_carrington': 24, 'image_east_offset': -3, 'transported_feature': 42, 'transported_relative': 26, 'central_meridian': 16}), ({'s': -36, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 114, 'stonyhurst_from_carrington': -36, 'image_east_offset': -3, 'transported_feature': 142, 'transported_relative': -34, 'central_meridian': 176}), ({'s': 24, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 0}, {'carrington': 174, 'stonyhurst_from_carrington': 24, 'image_east_offset': -3, 'transported_feature': 174, 'transported_relative': 24, 'central_meridian': 150}), ({'s': 24, 'C': 150, 'west': 3, 'r': 12, 'rc': 14, 'dt': -2}, {'carrington': 174, 'stonyhurst_from_carrington': 24, 'image_east_offset': -3, 'transported_feature': 150, 'transported_relative': 28, 'central_meridian': 122}), ({'s': 24, 'C': 0, 'west': -5, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 24, 'stonyhurst_from_carrington': 24, 'image_east_offset': 5, 'transported_feature': 52, 'transported_relative': 26, 'central_meridian': 26})]}
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| astronomical fixture 0 | {'carrington': 20, 'central_meridian': 176, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 198, 'transported_relative': 22} | {'carrington': 170, 'central_meridian': 176, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 198, 'transported_relative': 22} | Failed |
| astronomical fixture 1 | {'carrington': 20, 'central_meridian': 16, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 38, 'transported_relative': 22} | {'carrington': 10, 'central_meridian': 16, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 38, 'transported_relative': 22} | Failed |
| astronomical fixture 2 | {'carrington': 320, 'central_meridian': 176, 'image_east_offset': -3, 'stonyhurst_from_carrington': -40, 'transported_feature': 138, 'transported_relative': -38} | {'carrington': 110, 'central_meridian': 176, 'image_east_offset': -3, 'stonyhurst_from_carrington': -40, 'transported_feature': 138, 'transported_relative': -38} | Failed |
| astronomical fixture 3 | {'carrington': 20, 'central_meridian': 150, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 170, 'transported_relative': 20} | {'carrington': 170, 'central_meridian': 150, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 170, 'transported_relative': 20} | Failed |
| astronomical fixture 4 | {'carrington': 20, 'central_meridian': 122, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 146, 'transported_relative': 24} | {'carrington': 170, 'central_meridian': 122, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 146, 'transported_relative': 24} | Failed |
| astronomical fixture 5 | {'carrington': 20, 'central_meridian': 26, 'image_east_offset': 5, 'stonyhurst_from_carrington': 20, 'transported_feature': 48, 'transported_relative': 22} | {'carrington': 20, 'central_meridian': 26, 'image_east_offset': 5, 'stonyhurst_from_carrington': 20, 'transported_feature': 48, 'transported_relative': 22} | Passed |
SHA-256 / 9f0b8b45d85fe95b4269541582342087cfb1ac3e6b1e7415f5f6c3166d4aa5cf
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
return {'carrington': (d['C']+d['s'])%360, 'stonyhurst_from_carrington': ((d['C']+d['s'])%360-d['C']+180)%360-180, 'image_east_offset': -d['west'], 'transported_feature': (d['C']+d['s']+d['r']*d['dt'])%360, 'transported_relative': (d['s']+(d['r']-d['rc'])*d['dt']+180)%360-180, 'central_meridian': (d['C']+d['rc']*d['dt'])%360}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'s': 20, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 170, 'stonyhurst_from_carrington': 20, 'image_east_offset': -3, 'transported_feature': 198, 'transported_relative': 22, 'central_meridian': 176}), ({'s': 20, 'C': 350, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 10, 'stonyhurst_from_carrington': 20, 'image_east_offset': -3, 'transported_feature': 38, 'transported_relative': 22, 'central_meridian': 16}), ({'s': -40, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 110, 'stonyhurst_from_carrington': -40, 'image_east_offset': -3, 'transported_feature': 138, 'transported_relative': -38, 'central_meridian': 176}), ({'s': 20, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 0}, {'carrington': 170, 'stonyhurst_from_carrington': 20, 'image_east_offset': -3, 'transported_feature': 170, 'transported_relative': 20, 'central_meridian': 150}), ({'s': 20, 'C': 150, 'west': 3, 'r': 12, 'rc': 14, 'dt': -2}, {'carrington': 170, 'stonyhurst_from_carrington': 20, 'image_east_offset': -3, 'transported_feature': 146, 'transported_relative': 24, 'central_meridian': 122}), ({'s': 20, 'C': 0, 'west': -5, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 20, 'stonyhurst_from_carrington': 20, 'image_east_offset': 5, 'transported_feature': 48, 'transported_relative': 22, 'central_meridian': 26})], 2: [({'s': 21, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 171, 'stonyhurst_from_carrington': 21, 'image_east_offset': -3, 'transported_feature': 199, 'transported_relative': 23, 'central_meridian': 176}), ({'s': 21, 'C': 350, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 11, 'stonyhurst_from_carrington': 21, 'image_east_offset': -3, 'transported_feature': 39, 'transported_relative': 23, 'central_meridian': 16}), ({'s': -39, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 111, 'stonyhurst_from_carrington': -39, 'image_east_offset': -3, 'transported_feature': 139, 'transported_relative': -37, 'central_meridian': 176}), ({'s': 21, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 0}, {'carrington': 171, 'stonyhurst_from_carrington': 21, 'image_east_offset': -3, 'transported_feature': 171, 'transported_relative': 21, 'central_meridian': 150}), ({'s': 21, 'C': 150, 'west': 3, 'r': 12, 'rc': 14, 'dt': -2}, {'carrington': 171, 'stonyhurst_from_carrington': 21, 'image_east_offset': -3, 'transported_feature': 147, 'transported_relative': 25, 'central_meridian': 122}), ({'s': 21, 'C': 0, 'west': -5, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 21, 'stonyhurst_from_carrington': 21, 'image_east_offset': 5, 'transported_feature': 49, 'transported_relative': 23, 'central_meridian': 26})], 3: [({'s': 22, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 172, 'stonyhurst_from_carrington': 22, 'image_east_offset': -3, 'transported_feature': 200, 'transported_relative': 24, 'central_meridian': 176}), ({'s': 22, 'C': 350, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 12, 'stonyhurst_from_carrington': 22, 'image_east_offset': -3, 'transported_feature': 40, 'transported_relative': 24, 'central_meridian': 16}), ({'s': -38, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 112, 'stonyhurst_from_carrington': -38, 'image_east_offset': -3, 'transported_feature': 140, 'transported_relative': -36, 'central_meridian': 176}), ({'s': 22, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 0}, {'carrington': 172, 'stonyhurst_from_carrington': 22, 'image_east_offset': -3, 'transported_feature': 172, 'transported_relative': 22, 'central_meridian': 150}), ({'s': 22, 'C': 150, 'west': 3, 'r': 12, 'rc': 14, 'dt': -2}, {'carrington': 172, 'stonyhurst_from_carrington': 22, 'image_east_offset': -3, 'transported_feature': 148, 'transported_relative': 26, 'central_meridian': 122}), ({'s': 22, 'C': 0, 'west': -5, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 22, 'stonyhurst_from_carrington': 22, 'image_east_offset': 5, 'transported_feature': 50, 'transported_relative': 24, 'central_meridian': 26})], 4: [({'s': 23, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 173, 'stonyhurst_from_carrington': 23, 'image_east_offset': -3, 'transported_feature': 201, 'transported_relative': 25, 'central_meridian': 176}), ({'s': 23, 'C': 350, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 13, 'stonyhurst_from_carrington': 23, 'image_east_offset': -3, 'transported_feature': 41, 'transported_relative': 25, 'central_meridian': 16}), ({'s': -37, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 113, 'stonyhurst_from_carrington': -37, 'image_east_offset': -3, 'transported_feature': 141, 'transported_relative': -35, 'central_meridian': 176}), ({'s': 23, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 0}, {'carrington': 173, 'stonyhurst_from_carrington': 23, 'image_east_offset': -3, 'transported_feature': 173, 'transported_relative': 23, 'central_meridian': 150}), ({'s': 23, 'C': 150, 'west': 3, 'r': 12, 'rc': 14, 'dt': -2}, {'carrington': 173, 'stonyhurst_from_carrington': 23, 'image_east_offset': -3, 'transported_feature': 149, 'transported_relative': 27, 'central_meridian': 122}), ({'s': 23, 'C': 0, 'west': -5, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 23, 'stonyhurst_from_carrington': 23, 'image_east_offset': 5, 'transported_feature': 51, 'transported_relative': 25, 'central_meridian': 26})], 5: [({'s': 24, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 174, 'stonyhurst_from_carrington': 24, 'image_east_offset': -3, 'transported_feature': 202, 'transported_relative': 26, 'central_meridian': 176}), ({'s': 24, 'C': 350, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 14, 'stonyhurst_from_carrington': 24, 'image_east_offset': -3, 'transported_feature': 42, 'transported_relative': 26, 'central_meridian': 16}), ({'s': -36, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 114, 'stonyhurst_from_carrington': -36, 'image_east_offset': -3, 'transported_feature': 142, 'transported_relative': -34, 'central_meridian': 176}), ({'s': 24, 'C': 150, 'west': 3, 'r': 14, 'rc': 13, 'dt': 0}, {'carrington': 174, 'stonyhurst_from_carrington': 24, 'image_east_offset': -3, 'transported_feature': 174, 'transported_relative': 24, 'central_meridian': 150}), ({'s': 24, 'C': 150, 'west': 3, 'r': 12, 'rc': 14, 'dt': -2}, {'carrington': 174, 'stonyhurst_from_carrington': 24, 'image_east_offset': -3, 'transported_feature': 150, 'transported_relative': 28, 'central_meridian': 122}), ({'s': 24, 'C': 0, 'west': -5, 'r': 14, 'rc': 13, 'dt': 2}, {'carrington': 24, 'stonyhurst_from_carrington': 24, 'image_east_offset': 5, 'transported_feature': 52, 'transported_relative': 26, 'central_meridian': 26})]}
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| astronomical fixture 0 | {'carrington': 170, 'central_meridian': 176, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 198, 'transported_relative': 22} | {'carrington': 170, 'central_meridian': 176, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 198, 'transported_relative': 22} | Passed |
| astronomical fixture 1 | {'carrington': 10, 'central_meridian': 16, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 38, 'transported_relative': 22} | {'carrington': 10, 'central_meridian': 16, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 38, 'transported_relative': 22} | Passed |
| astronomical fixture 2 | {'carrington': 110, 'central_meridian': 176, 'image_east_offset': -3, 'stonyhurst_from_carrington': -40, 'transported_feature': 138, 'transported_relative': -38} | {'carrington': 110, 'central_meridian': 176, 'image_east_offset': -3, 'stonyhurst_from_carrington': -40, 'transported_feature': 138, 'transported_relative': -38} | Passed |
| astronomical fixture 3 | {'carrington': 170, 'central_meridian': 150, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 170, 'transported_relative': 20} | {'carrington': 170, 'central_meridian': 150, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 170, 'transported_relative': 20} | Passed |
| astronomical fixture 4 | {'carrington': 170, 'central_meridian': 122, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 146, 'transported_relative': 24} | {'carrington': 170, 'central_meridian': 122, 'image_east_offset': -3, 'stonyhurst_from_carrington': 20, 'transported_feature': 146, 'transported_relative': 24} | Passed |
| astronomical fixture 5 | {'carrington': 20, 'central_meridian': 26, 'image_east_offset': 5, 'stonyhurst_from_carrington': 20, 'transported_feature': 48, 'transported_relative': 22} | {'carrington': 20, 'central_meridian': 26, 'image_east_offset': 5, 'stonyhurst_from_carrington': 20, 'transported_feature': 48, 'transported_relative': 22} | Passed |
SHA-256 / 80f1601ed750d804aa0498ff34464c36a9df4dd0aeab4687a132d76727f7720d
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.548598+00:00.
Case digest / 8bcd2390f94d5d243d1bf61f1b4246c470d45dd2dfb9561b70f0cab181d5c111