FAILURE MAP
← Case archive

FA-55776 / Astronomical coordinate conventions / Open access

Celestial stereographic projection: Stereographic latitude is computed using a tangent-plane denominator · case 01

The adapter reports an incorrect plane north while other fields remain valid.

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

ROOT CAUSE

Stereographic latitude is computed using a tangent-plane denominator. Faulty expression: 2*d['n']/d['z'] if d['z']!=0 else None

VERIFIED REPAIR

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

Unsuccessful approach: A partial convention repair still uses 2*d['n']/(1+abs(d['z']))

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']/d['z'] if d['z']!=0 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': 6.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}Failed
astronomical fixture 1{'plane_east': 4.0, 'plane_north': None, '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}Failed
astronomical fixture 2{'plane_east': None, 'plane_north': -6.0, '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}Failed
astronomical fixture 3{'plane_east': 2.6666666666666665, 'plane_north': 12.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}Failed
astronomical fixture 4{'plane_east': 2.0, 'plane_north': 6.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}Failed
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}Failed

SHA-256 / eb8b0b4f3c80b1a7d765c3ed99eaea672fb4e9aa675a0938d9b451177bbd258f

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+abs(d['z'])), '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': 3.0, '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}Failed
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': -2.6666666666666665, '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}Failed

SHA-256 / 3b47f6d5f44799babafaa2a82f9da411d53017e34803917c46ca22d0b164b080

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

Case digest / 11cae009f1d775c241071684375dd5be3c936cdac2ff678826864c00aadbd9dc