FAILURE MAP
← Case archive

FA-55796 / Astronomical coordinate conventions / Open access

Celestial stereographic projection: Stereographic scale metadata reports the inverse magnification · case 01

The adapter reports an incorrect radial scale while other fields remain valid.

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

ROOT CAUSE

Stereographic scale metadata reports the inverse magnification. Faulty expression: (1+d['z'])/2

VERIFIED REPAIR

Preserve the declared model convention at this site: 2/(1+d['z']) if d['z']>-1 else None

Unsuccessful approach: A partial convention repair still uses 1/(1+d['z']) if d['z']>-1 else None

Case contract

A supplied direction e,n,z is mapped by a stipulated stereographic sky chart with scale 2/(1+z), valid z>-1. Reference chart origin ox,oy is added only after projection. Exact antipode has no finite chart coordinate; inputs here have z>=-1. Output fields are defined by: plane_east = 2*d['e']/(1+d['z']) if d['z']>-1 else None; plane_north = 2*d['n']/(1+d['z']) if d['z']>-1 else None; valid = d['z']>-1; translated_east = d['ox']+2*d['e']/(1+d['z']) if d['z']>-1 else None; translated_north = d['oy']+2*d['n']/(1+d['z']) if d['z']>-1 else None; radial_scale = 2/(1+d['z']) if d['z']>-1 else None

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 {'plane_east': 2*d['e']/(1+d['z']) if d['z']>-1 else None, 'plane_north': 2*d['n']/(1+d['z']) if d['z']>-1 else None, 'valid': d['z']>-1, 'translated_east': d['ox']+2*d['e']/(1+d['z']) if d['z']>-1 else None, 'translated_north': d['oy']+2*d['n']/(1+d['z']) if d['z']>-1 else None, 'radial_scale': (1+d['z'])/2}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'e': 2, 'n': 3, 'z': 1, 'ox': 10, 'oy': 20}, {'plane_east': 2.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 12.0, 'translated_north': 23.0, 'radial_scale': 1.0}), ({'e': 2, 'n': 3, 'z': 0, 'ox': 10, 'oy': 20}, {'plane_east': 4.0, 'plane_north': 6.0, 'valid': True, 'translated_east': 14.0, 'translated_north': 26.0, 'radial_scale': 2.0}), ({'e': 2, 'n': 3, 'z': -1, 'ox': 10, 'oy': 20}, {'plane_east': None, 'plane_north': None, 'valid': False, 'translated_east': None, 'translated_north': None, 'radial_scale': None}), ({'e': 2, 'n': 3, 'z': 0.5, 'ox': 10, 'oy': 20}, {'plane_east': 2.6666666666666665, 'plane_north': 4.0, 'valid': True, 'translated_east': 12.666666666666666, 'translated_north': 24.0, 'radial_scale': 1.3333333333333333}), ({'e': 2, 'n': 3, 'z': 1, 'ox': 0, 'oy': 0}, {'plane_east': 2.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 2.0, 'translated_north': 3.0, 'radial_scale': 1.0}), ({'e': 2, 'n': -2, 'z': -0.5, 'ox': 10, 'oy': 20}, {'plane_east': 8.0, 'plane_north': -8.0, 'valid': True, 'translated_east': 18.0, 'translated_north': 12.0, 'radial_scale': 4.0})], 2: [({'e': 3, 'n': 3, 'z': 1, 'ox': 10, 'oy': 20}, {'plane_east': 3.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 13.0, 'translated_north': 23.0, 'radial_scale': 1.0}), ({'e': 3, 'n': 3, 'z': 0, 'ox': 10, 'oy': 20}, {'plane_east': 6.0, 'plane_north': 6.0, 'valid': True, 'translated_east': 16.0, 'translated_north': 26.0, 'radial_scale': 2.0}), ({'e': 3, 'n': 3, 'z': -1, 'ox': 10, 'oy': 20}, {'plane_east': None, 'plane_north': None, 'valid': False, 'translated_east': None, 'translated_north': None, 'radial_scale': None}), ({'e': 3, 'n': 3, 'z': 0.5, 'ox': 10, 'oy': 20}, {'plane_east': 4.0, 'plane_north': 4.0, 'valid': True, 'translated_east': 14.0, 'translated_north': 24.0, 'radial_scale': 1.3333333333333333}), ({'e': 3, 'n': 3, 'z': 1, 'ox': 0, 'oy': 0}, {'plane_east': 3.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 3.0, 'translated_north': 3.0, 'radial_scale': 1.0}), ({'e': 3, 'n': -2, 'z': -0.5, 'ox': 10, 'oy': 20}, {'plane_east': 12.0, 'plane_north': -8.0, 'valid': True, 'translated_east': 22.0, 'translated_north': 12.0, 'radial_scale': 4.0})], 3: [({'e': 4, 'n': 3, 'z': 1, 'ox': 10, 'oy': 20}, {'plane_east': 4.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 14.0, 'translated_north': 23.0, 'radial_scale': 1.0}), ({'e': 4, 'n': 3, 'z': 0, 'ox': 10, 'oy': 20}, {'plane_east': 8.0, 'plane_north': 6.0, 'valid': True, 'translated_east': 18.0, 'translated_north': 26.0, 'radial_scale': 2.0}), ({'e': 4, 'n': 3, 'z': -1, 'ox': 10, 'oy': 20}, {'plane_east': None, 'plane_north': None, 'valid': False, 'translated_east': None, 'translated_north': None, 'radial_scale': None}), ({'e': 4, 'n': 3, 'z': 0.5, 'ox': 10, 'oy': 20}, {'plane_east': 5.333333333333333, 'plane_north': 4.0, 'valid': True, 'translated_east': 15.333333333333332, 'translated_north': 24.0, 'radial_scale': 1.3333333333333333}), ({'e': 4, 'n': 3, 'z': 1, 'ox': 0, 'oy': 0}, {'plane_east': 4.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 4.0, 'translated_north': 3.0, 'radial_scale': 1.0}), ({'e': 4, 'n': -2, 'z': -0.5, 'ox': 10, 'oy': 20}, {'plane_east': 16.0, 'plane_north': -8.0, 'valid': True, 'translated_east': 26.0, 'translated_north': 12.0, 'radial_scale': 4.0})], 4: [({'e': 5, 'n': 3, 'z': 1, 'ox': 10, 'oy': 20}, {'plane_east': 5.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 15.0, 'translated_north': 23.0, 'radial_scale': 1.0}), ({'e': 5, 'n': 3, 'z': 0, 'ox': 10, 'oy': 20}, {'plane_east': 10.0, 'plane_north': 6.0, 'valid': True, 'translated_east': 20.0, 'translated_north': 26.0, 'radial_scale': 2.0}), ({'e': 5, 'n': 3, 'z': -1, 'ox': 10, 'oy': 20}, {'plane_east': None, 'plane_north': None, 'valid': False, 'translated_east': None, 'translated_north': None, 'radial_scale': None}), ({'e': 5, 'n': 3, 'z': 0.5, 'ox': 10, 'oy': 20}, {'plane_east': 6.666666666666667, 'plane_north': 4.0, 'valid': True, 'translated_east': 16.666666666666668, 'translated_north': 24.0, 'radial_scale': 1.3333333333333333}), ({'e': 5, 'n': 3, 'z': 1, 'ox': 0, 'oy': 0}, {'plane_east': 5.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 5.0, 'translated_north': 3.0, 'radial_scale': 1.0}), ({'e': 5, 'n': -2, 'z': -0.5, 'ox': 10, 'oy': 20}, {'plane_east': 20.0, 'plane_north': -8.0, 'valid': True, 'translated_east': 30.0, 'translated_north': 12.0, 'radial_scale': 4.0})], 5: [({'e': 6, 'n': 3, 'z': 1, 'ox': 10, 'oy': 20}, {'plane_east': 6.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 16.0, 'translated_north': 23.0, 'radial_scale': 1.0}), ({'e': 6, 'n': 3, 'z': 0, 'ox': 10, 'oy': 20}, {'plane_east': 12.0, 'plane_north': 6.0, 'valid': True, 'translated_east': 22.0, 'translated_north': 26.0, 'radial_scale': 2.0}), ({'e': 6, 'n': 3, 'z': -1, 'ox': 10, 'oy': 20}, {'plane_east': None, 'plane_north': None, 'valid': False, 'translated_east': None, 'translated_north': None, 'radial_scale': None}), ({'e': 6, 'n': 3, 'z': 0.5, 'ox': 10, 'oy': 20}, {'plane_east': 8.0, 'plane_north': 4.0, 'valid': True, 'translated_east': 18.0, 'translated_north': 24.0, 'radial_scale': 1.3333333333333333}), ({'e': 6, 'n': 3, 'z': 1, 'ox': 0, 'oy': 0}, {'plane_east': 6.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 6.0, 'translated_north': 3.0, 'radial_scale': 1.0}), ({'e': 6, 'n': -2, 'z': -0.5, 'ox': 10, 'oy': 20}, {'plane_east': 24.0, 'plane_north': -8.0, 'valid': True, 'translated_east': 34.0, 'translated_north': 12.0, 'radial_scale': 4.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{'plane_east': 2.0, 'plane_north': 3.0, 'radial_scale': 1.0, 'translated_east': 12.0, 'translated_north': 23.0, 'valid': True}{'plane_east': 2.0, 'plane_north': 3.0, 'radial_scale': 1.0, 'translated_east': 12.0, 'translated_north': 23.0, 'valid': True}Passed
astronomical fixture 1{'plane_east': 4.0, 'plane_north': 6.0, 'radial_scale': 0.5, 'translated_east': 14.0, 'translated_north': 26.0, 'valid': True}{'plane_east': 4.0, 'plane_north': 6.0, 'radial_scale': 2.0, 'translated_east': 14.0, 'translated_north': 26.0, 'valid': True}Failed
astronomical fixture 2{'plane_east': None, 'plane_north': None, 'radial_scale': 0.0, 'translated_east': None, 'translated_north': None, 'valid': False}{'plane_east': None, 'plane_north': None, 'radial_scale': None, 'translated_east': None, 'translated_north': None, 'valid': False}Failed
astronomical fixture 3{'plane_east': 2.6666666666666665, 'plane_north': 4.0, 'radial_scale': 0.75, 'translated_east': 12.666666666666666, 'translated_north': 24.0, 'valid': True}{'plane_east': 2.6666666666666665, 'plane_north': 4.0, 'radial_scale': 1.3333333333333333, 'translated_east': 12.666666666666666, 'translated_north': 24.0, 'valid': True}Failed
astronomical fixture 4{'plane_east': 2.0, 'plane_north': 3.0, 'radial_scale': 1.0, 'translated_east': 2.0, 'translated_north': 3.0, 'valid': True}{'plane_east': 2.0, 'plane_north': 3.0, 'radial_scale': 1.0, 'translated_east': 2.0, 'translated_north': 3.0, 'valid': True}Passed
astronomical fixture 5{'plane_east': 8.0, 'plane_north': -8.0, 'radial_scale': 0.25, 'translated_east': 18.0, 'translated_north': 12.0, 'valid': True}{'plane_east': 8.0, 'plane_north': -8.0, 'radial_scale': 4.0, 'translated_east': 18.0, 'translated_north': 12.0, 'valid': True}Failed

SHA-256 / f8010b396bc9a1f723d2b2d4e5d46ac92923902d6f0ccf4d81df7152e5ec938d

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(d):
    return {'plane_east': 2*d['e']/(1+d['z']) if d['z']>-1 else None, 'plane_north': 2*d['n']/(1+d['z']) if d['z']>-1 else None, 'valid': d['z']>-1, 'translated_east': d['ox']+2*d['e']/(1+d['z']) if d['z']>-1 else None, 'translated_north': d['oy']+2*d['n']/(1+d['z']) if d['z']>-1 else None, 'radial_scale': 1/(1+d['z']) if d['z']>-1 else None}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'e': 2, 'n': 3, 'z': 1, 'ox': 10, 'oy': 20}, {'plane_east': 2.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 12.0, 'translated_north': 23.0, 'radial_scale': 1.0}), ({'e': 2, 'n': 3, 'z': 0, 'ox': 10, 'oy': 20}, {'plane_east': 4.0, 'plane_north': 6.0, 'valid': True, 'translated_east': 14.0, 'translated_north': 26.0, 'radial_scale': 2.0}), ({'e': 2, 'n': 3, 'z': -1, 'ox': 10, 'oy': 20}, {'plane_east': None, 'plane_north': None, 'valid': False, 'translated_east': None, 'translated_north': None, 'radial_scale': None}), ({'e': 2, 'n': 3, 'z': 0.5, 'ox': 10, 'oy': 20}, {'plane_east': 2.6666666666666665, 'plane_north': 4.0, 'valid': True, 'translated_east': 12.666666666666666, 'translated_north': 24.0, 'radial_scale': 1.3333333333333333}), ({'e': 2, 'n': 3, 'z': 1, 'ox': 0, 'oy': 0}, {'plane_east': 2.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 2.0, 'translated_north': 3.0, 'radial_scale': 1.0}), ({'e': 2, 'n': -2, 'z': -0.5, 'ox': 10, 'oy': 20}, {'plane_east': 8.0, 'plane_north': -8.0, 'valid': True, 'translated_east': 18.0, 'translated_north': 12.0, 'radial_scale': 4.0})], 2: [({'e': 3, 'n': 3, 'z': 1, 'ox': 10, 'oy': 20}, {'plane_east': 3.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 13.0, 'translated_north': 23.0, 'radial_scale': 1.0}), ({'e': 3, 'n': 3, 'z': 0, 'ox': 10, 'oy': 20}, {'plane_east': 6.0, 'plane_north': 6.0, 'valid': True, 'translated_east': 16.0, 'translated_north': 26.0, 'radial_scale': 2.0}), ({'e': 3, 'n': 3, 'z': -1, 'ox': 10, 'oy': 20}, {'plane_east': None, 'plane_north': None, 'valid': False, 'translated_east': None, 'translated_north': None, 'radial_scale': None}), ({'e': 3, 'n': 3, 'z': 0.5, 'ox': 10, 'oy': 20}, {'plane_east': 4.0, 'plane_north': 4.0, 'valid': True, 'translated_east': 14.0, 'translated_north': 24.0, 'radial_scale': 1.3333333333333333}), ({'e': 3, 'n': 3, 'z': 1, 'ox': 0, 'oy': 0}, {'plane_east': 3.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 3.0, 'translated_north': 3.0, 'radial_scale': 1.0}), ({'e': 3, 'n': -2, 'z': -0.5, 'ox': 10, 'oy': 20}, {'plane_east': 12.0, 'plane_north': -8.0, 'valid': True, 'translated_east': 22.0, 'translated_north': 12.0, 'radial_scale': 4.0})], 3: [({'e': 4, 'n': 3, 'z': 1, 'ox': 10, 'oy': 20}, {'plane_east': 4.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 14.0, 'translated_north': 23.0, 'radial_scale': 1.0}), ({'e': 4, 'n': 3, 'z': 0, 'ox': 10, 'oy': 20}, {'plane_east': 8.0, 'plane_north': 6.0, 'valid': True, 'translated_east': 18.0, 'translated_north': 26.0, 'radial_scale': 2.0}), ({'e': 4, 'n': 3, 'z': -1, 'ox': 10, 'oy': 20}, {'plane_east': None, 'plane_north': None, 'valid': False, 'translated_east': None, 'translated_north': None, 'radial_scale': None}), ({'e': 4, 'n': 3, 'z': 0.5, 'ox': 10, 'oy': 20}, {'plane_east': 5.333333333333333, 'plane_north': 4.0, 'valid': True, 'translated_east': 15.333333333333332, 'translated_north': 24.0, 'radial_scale': 1.3333333333333333}), ({'e': 4, 'n': 3, 'z': 1, 'ox': 0, 'oy': 0}, {'plane_east': 4.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 4.0, 'translated_north': 3.0, 'radial_scale': 1.0}), ({'e': 4, 'n': -2, 'z': -0.5, 'ox': 10, 'oy': 20}, {'plane_east': 16.0, 'plane_north': -8.0, 'valid': True, 'translated_east': 26.0, 'translated_north': 12.0, 'radial_scale': 4.0})], 4: [({'e': 5, 'n': 3, 'z': 1, 'ox': 10, 'oy': 20}, {'plane_east': 5.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 15.0, 'translated_north': 23.0, 'radial_scale': 1.0}), ({'e': 5, 'n': 3, 'z': 0, 'ox': 10, 'oy': 20}, {'plane_east': 10.0, 'plane_north': 6.0, 'valid': True, 'translated_east': 20.0, 'translated_north': 26.0, 'radial_scale': 2.0}), ({'e': 5, 'n': 3, 'z': -1, 'ox': 10, 'oy': 20}, {'plane_east': None, 'plane_north': None, 'valid': False, 'translated_east': None, 'translated_north': None, 'radial_scale': None}), ({'e': 5, 'n': 3, 'z': 0.5, 'ox': 10, 'oy': 20}, {'plane_east': 6.666666666666667, 'plane_north': 4.0, 'valid': True, 'translated_east': 16.666666666666668, 'translated_north': 24.0, 'radial_scale': 1.3333333333333333}), ({'e': 5, 'n': 3, 'z': 1, 'ox': 0, 'oy': 0}, {'plane_east': 5.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 5.0, 'translated_north': 3.0, 'radial_scale': 1.0}), ({'e': 5, 'n': -2, 'z': -0.5, 'ox': 10, 'oy': 20}, {'plane_east': 20.0, 'plane_north': -8.0, 'valid': True, 'translated_east': 30.0, 'translated_north': 12.0, 'radial_scale': 4.0})], 5: [({'e': 6, 'n': 3, 'z': 1, 'ox': 10, 'oy': 20}, {'plane_east': 6.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 16.0, 'translated_north': 23.0, 'radial_scale': 1.0}), ({'e': 6, 'n': 3, 'z': 0, 'ox': 10, 'oy': 20}, {'plane_east': 12.0, 'plane_north': 6.0, 'valid': True, 'translated_east': 22.0, 'translated_north': 26.0, 'radial_scale': 2.0}), ({'e': 6, 'n': 3, 'z': -1, 'ox': 10, 'oy': 20}, {'plane_east': None, 'plane_north': None, 'valid': False, 'translated_east': None, 'translated_north': None, 'radial_scale': None}), ({'e': 6, 'n': 3, 'z': 0.5, 'ox': 10, 'oy': 20}, {'plane_east': 8.0, 'plane_north': 4.0, 'valid': True, 'translated_east': 18.0, 'translated_north': 24.0, 'radial_scale': 1.3333333333333333}), ({'e': 6, 'n': 3, 'z': 1, 'ox': 0, 'oy': 0}, {'plane_east': 6.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 6.0, 'translated_north': 3.0, 'radial_scale': 1.0}), ({'e': 6, 'n': -2, 'z': -0.5, 'ox': 10, 'oy': 20}, {'plane_east': 24.0, 'plane_north': -8.0, 'valid': True, 'translated_east': 34.0, 'translated_north': 12.0, 'radial_scale': 4.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{'plane_east': 2.0, 'plane_north': 3.0, 'radial_scale': 0.5, 'translated_east': 12.0, 'translated_north': 23.0, 'valid': True}{'plane_east': 2.0, 'plane_north': 3.0, 'radial_scale': 1.0, 'translated_east': 12.0, 'translated_north': 23.0, 'valid': True}Failed
astronomical fixture 1{'plane_east': 4.0, 'plane_north': 6.0, 'radial_scale': 1.0, 'translated_east': 14.0, 'translated_north': 26.0, 'valid': True}{'plane_east': 4.0, 'plane_north': 6.0, 'radial_scale': 2.0, 'translated_east': 14.0, 'translated_north': 26.0, 'valid': True}Failed
astronomical fixture 2{'plane_east': None, 'plane_north': None, 'radial_scale': None, 'translated_east': None, 'translated_north': None, 'valid': False}{'plane_east': None, 'plane_north': None, 'radial_scale': None, 'translated_east': None, 'translated_north': None, 'valid': False}Passed
astronomical fixture 3{'plane_east': 2.6666666666666665, 'plane_north': 4.0, 'radial_scale': 0.6666666666666666, 'translated_east': 12.666666666666666, 'translated_north': 24.0, 'valid': True}{'plane_east': 2.6666666666666665, 'plane_north': 4.0, 'radial_scale': 1.3333333333333333, 'translated_east': 12.666666666666666, 'translated_north': 24.0, 'valid': True}Failed
astronomical fixture 4{'plane_east': 2.0, 'plane_north': 3.0, 'radial_scale': 0.5, 'translated_east': 2.0, 'translated_north': 3.0, 'valid': True}{'plane_east': 2.0, 'plane_north': 3.0, 'radial_scale': 1.0, 'translated_east': 2.0, 'translated_north': 3.0, 'valid': True}Failed
astronomical fixture 5{'plane_east': 8.0, 'plane_north': -8.0, 'radial_scale': 2.0, 'translated_east': 18.0, 'translated_north': 12.0, 'valid': True}{'plane_east': 8.0, 'plane_north': -8.0, 'radial_scale': 4.0, 'translated_east': 18.0, 'translated_north': 12.0, 'valid': True}Failed

SHA-256 / 5c72eb1ea80944b286dcc934ad81bf467217b73161552f3f9e164f3be90326b9

3 / The verified repair

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

N = 1
observations = []
def solve(d):
    return {'plane_east': 2*d['e']/(1+d['z']) if d['z']>-1 else None, 'plane_north': 2*d['n']/(1+d['z']) if d['z']>-1 else None, 'valid': d['z']>-1, 'translated_east': d['ox']+2*d['e']/(1+d['z']) if d['z']>-1 else None, 'translated_north': d['oy']+2*d['n']/(1+d['z']) if d['z']>-1 else None, 'radial_scale': 2/(1+d['z']) if d['z']>-1 else None}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'e': 2, 'n': 3, 'z': 1, 'ox': 10, 'oy': 20}, {'plane_east': 2.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 12.0, 'translated_north': 23.0, 'radial_scale': 1.0}), ({'e': 2, 'n': 3, 'z': 0, 'ox': 10, 'oy': 20}, {'plane_east': 4.0, 'plane_north': 6.0, 'valid': True, 'translated_east': 14.0, 'translated_north': 26.0, 'radial_scale': 2.0}), ({'e': 2, 'n': 3, 'z': -1, 'ox': 10, 'oy': 20}, {'plane_east': None, 'plane_north': None, 'valid': False, 'translated_east': None, 'translated_north': None, 'radial_scale': None}), ({'e': 2, 'n': 3, 'z': 0.5, 'ox': 10, 'oy': 20}, {'plane_east': 2.6666666666666665, 'plane_north': 4.0, 'valid': True, 'translated_east': 12.666666666666666, 'translated_north': 24.0, 'radial_scale': 1.3333333333333333}), ({'e': 2, 'n': 3, 'z': 1, 'ox': 0, 'oy': 0}, {'plane_east': 2.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 2.0, 'translated_north': 3.0, 'radial_scale': 1.0}), ({'e': 2, 'n': -2, 'z': -0.5, 'ox': 10, 'oy': 20}, {'plane_east': 8.0, 'plane_north': -8.0, 'valid': True, 'translated_east': 18.0, 'translated_north': 12.0, 'radial_scale': 4.0})], 2: [({'e': 3, 'n': 3, 'z': 1, 'ox': 10, 'oy': 20}, {'plane_east': 3.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 13.0, 'translated_north': 23.0, 'radial_scale': 1.0}), ({'e': 3, 'n': 3, 'z': 0, 'ox': 10, 'oy': 20}, {'plane_east': 6.0, 'plane_north': 6.0, 'valid': True, 'translated_east': 16.0, 'translated_north': 26.0, 'radial_scale': 2.0}), ({'e': 3, 'n': 3, 'z': -1, 'ox': 10, 'oy': 20}, {'plane_east': None, 'plane_north': None, 'valid': False, 'translated_east': None, 'translated_north': None, 'radial_scale': None}), ({'e': 3, 'n': 3, 'z': 0.5, 'ox': 10, 'oy': 20}, {'plane_east': 4.0, 'plane_north': 4.0, 'valid': True, 'translated_east': 14.0, 'translated_north': 24.0, 'radial_scale': 1.3333333333333333}), ({'e': 3, 'n': 3, 'z': 1, 'ox': 0, 'oy': 0}, {'plane_east': 3.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 3.0, 'translated_north': 3.0, 'radial_scale': 1.0}), ({'e': 3, 'n': -2, 'z': -0.5, 'ox': 10, 'oy': 20}, {'plane_east': 12.0, 'plane_north': -8.0, 'valid': True, 'translated_east': 22.0, 'translated_north': 12.0, 'radial_scale': 4.0})], 3: [({'e': 4, 'n': 3, 'z': 1, 'ox': 10, 'oy': 20}, {'plane_east': 4.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 14.0, 'translated_north': 23.0, 'radial_scale': 1.0}), ({'e': 4, 'n': 3, 'z': 0, 'ox': 10, 'oy': 20}, {'plane_east': 8.0, 'plane_north': 6.0, 'valid': True, 'translated_east': 18.0, 'translated_north': 26.0, 'radial_scale': 2.0}), ({'e': 4, 'n': 3, 'z': -1, 'ox': 10, 'oy': 20}, {'plane_east': None, 'plane_north': None, 'valid': False, 'translated_east': None, 'translated_north': None, 'radial_scale': None}), ({'e': 4, 'n': 3, 'z': 0.5, 'ox': 10, 'oy': 20}, {'plane_east': 5.333333333333333, 'plane_north': 4.0, 'valid': True, 'translated_east': 15.333333333333332, 'translated_north': 24.0, 'radial_scale': 1.3333333333333333}), ({'e': 4, 'n': 3, 'z': 1, 'ox': 0, 'oy': 0}, {'plane_east': 4.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 4.0, 'translated_north': 3.0, 'radial_scale': 1.0}), ({'e': 4, 'n': -2, 'z': -0.5, 'ox': 10, 'oy': 20}, {'plane_east': 16.0, 'plane_north': -8.0, 'valid': True, 'translated_east': 26.0, 'translated_north': 12.0, 'radial_scale': 4.0})], 4: [({'e': 5, 'n': 3, 'z': 1, 'ox': 10, 'oy': 20}, {'plane_east': 5.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 15.0, 'translated_north': 23.0, 'radial_scale': 1.0}), ({'e': 5, 'n': 3, 'z': 0, 'ox': 10, 'oy': 20}, {'plane_east': 10.0, 'plane_north': 6.0, 'valid': True, 'translated_east': 20.0, 'translated_north': 26.0, 'radial_scale': 2.0}), ({'e': 5, 'n': 3, 'z': -1, 'ox': 10, 'oy': 20}, {'plane_east': None, 'plane_north': None, 'valid': False, 'translated_east': None, 'translated_north': None, 'radial_scale': None}), ({'e': 5, 'n': 3, 'z': 0.5, 'ox': 10, 'oy': 20}, {'plane_east': 6.666666666666667, 'plane_north': 4.0, 'valid': True, 'translated_east': 16.666666666666668, 'translated_north': 24.0, 'radial_scale': 1.3333333333333333}), ({'e': 5, 'n': 3, 'z': 1, 'ox': 0, 'oy': 0}, {'plane_east': 5.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 5.0, 'translated_north': 3.0, 'radial_scale': 1.0}), ({'e': 5, 'n': -2, 'z': -0.5, 'ox': 10, 'oy': 20}, {'plane_east': 20.0, 'plane_north': -8.0, 'valid': True, 'translated_east': 30.0, 'translated_north': 12.0, 'radial_scale': 4.0})], 5: [({'e': 6, 'n': 3, 'z': 1, 'ox': 10, 'oy': 20}, {'plane_east': 6.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 16.0, 'translated_north': 23.0, 'radial_scale': 1.0}), ({'e': 6, 'n': 3, 'z': 0, 'ox': 10, 'oy': 20}, {'plane_east': 12.0, 'plane_north': 6.0, 'valid': True, 'translated_east': 22.0, 'translated_north': 26.0, 'radial_scale': 2.0}), ({'e': 6, 'n': 3, 'z': -1, 'ox': 10, 'oy': 20}, {'plane_east': None, 'plane_north': None, 'valid': False, 'translated_east': None, 'translated_north': None, 'radial_scale': None}), ({'e': 6, 'n': 3, 'z': 0.5, 'ox': 10, 'oy': 20}, {'plane_east': 8.0, 'plane_north': 4.0, 'valid': True, 'translated_east': 18.0, 'translated_north': 24.0, 'radial_scale': 1.3333333333333333}), ({'e': 6, 'n': 3, 'z': 1, 'ox': 0, 'oy': 0}, {'plane_east': 6.0, 'plane_north': 3.0, 'valid': True, 'translated_east': 6.0, 'translated_north': 3.0, 'radial_scale': 1.0}), ({'e': 6, 'n': -2, 'z': -0.5, 'ox': 10, 'oy': 20}, {'plane_east': 24.0, 'plane_north': -8.0, 'valid': True, 'translated_east': 34.0, 'translated_north': 12.0, 'radial_scale': 4.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{'plane_east': 2.0, 'plane_north': 3.0, 'radial_scale': 1.0, 'translated_east': 12.0, 'translated_north': 23.0, 'valid': True}{'plane_east': 2.0, 'plane_north': 3.0, 'radial_scale': 1.0, 'translated_east': 12.0, 'translated_north': 23.0, 'valid': True}Passed
astronomical fixture 1{'plane_east': 4.0, 'plane_north': 6.0, 'radial_scale': 2.0, 'translated_east': 14.0, 'translated_north': 26.0, 'valid': True}{'plane_east': 4.0, 'plane_north': 6.0, 'radial_scale': 2.0, 'translated_east': 14.0, 'translated_north': 26.0, 'valid': True}Passed
astronomical fixture 2{'plane_east': None, 'plane_north': None, 'radial_scale': None, 'translated_east': None, 'translated_north': None, 'valid': False}{'plane_east': None, 'plane_north': None, 'radial_scale': None, 'translated_east': None, 'translated_north': None, 'valid': False}Passed
astronomical fixture 3{'plane_east': 2.6666666666666665, 'plane_north': 4.0, 'radial_scale': 1.3333333333333333, 'translated_east': 12.666666666666666, 'translated_north': 24.0, 'valid': True}{'plane_east': 2.6666666666666665, 'plane_north': 4.0, 'radial_scale': 1.3333333333333333, 'translated_east': 12.666666666666666, 'translated_north': 24.0, 'valid': True}Passed
astronomical fixture 4{'plane_east': 2.0, 'plane_north': 3.0, 'radial_scale': 1.0, 'translated_east': 2.0, 'translated_north': 3.0, 'valid': True}{'plane_east': 2.0, 'plane_north': 3.0, 'radial_scale': 1.0, 'translated_east': 2.0, 'translated_north': 3.0, 'valid': True}Passed
astronomical fixture 5{'plane_east': 8.0, 'plane_north': -8.0, 'radial_scale': 4.0, 'translated_east': 18.0, 'translated_north': 12.0, 'valid': True}{'plane_east': 8.0, 'plane_north': -8.0, 'radial_scale': 4.0, 'translated_east': 18.0, 'translated_north': 12.0, 'valid': True}Passed

SHA-256 / a0b80aee50b23fc7cb3daa90b2eccf63756f35dcf01c810199a8da8b5ce59377

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:46:01.154489+00:00.

Case digest / 2a35a9aa20a8b7e33d029c53602b88cdd70d635b6e27f44457f7051a5fa75860