FA-56141 / Astronomical coordinate conventions / Open access
Fabry perot spectral order: Adjacent Fabry-Perot order is treated as an additive wavelength step · case 01
The adapter reports an incorrect adjacent order wavelength while other fields remain valid.
ROOT CAUSE
Adjacent Fabry-Perot order is treated as an additive wavelength step. Faulty expression: 2*d['T']*d['q']/d['m']+1
VERIFIED REPAIR
Preserve the declared model convention at this site: 2*d['T']*d['q']/(d['m']+1)
Unsuccessful approach: A partial convention repair still uses 2*d['T']*d['q']/(d['m']-1) if d['m']>1 else None
Case contract
A reduced Fabry-Perot scan supplies optical thickness T, integer interference order m>0, cosine q of incidence angle, channel thickness step d, channel k, and separate calibration line wavelength line. Wavelength is 2*(T+k*d)*q/m. Interference order is a coordinate label, not the channel index. Output fields are defined by: wavelength = 2*(d['T']+d['k']*d['d'])*d['q']/d['m']; channel_dispersion = 2*d['d']*d['q']/d['m']; adjacent_order_wavelength = 2*d['T']*d['q']/(d['m']+1); free_spectral_interval = 2*d['T']*d['q']/d['m']-2*d['T']*d['q']/(d['m']+1); normal_incidence = 2*d['T']/d['m']; thickness_from_line = d['line']*d['m']/(2*d['q'])
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 {'wavelength': 2*(d['T']+d['k']*d['d'])*d['q']/d['m'], 'channel_dispersion': 2*d['d']*d['q']/d['m'], 'adjacent_order_wavelength': 2*d['T']*d['q']/d['m']+1, 'free_spectral_interval': 2*d['T']*d['q']/d['m']-2*d['T']*d['q']/(d['m']+1), 'normal_incidence': 2*d['T']/d['m'], 'thickness_from_line': d['line']*d['m']/(2*d['q'])}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'T': 120, 'm': 4, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 31.5, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.0, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0}), ({'T': 120, 'm': 4, 'q': 1, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 63.0, 'channel_dispersion': 1.0, 'adjacent_order_wavelength': 48.0, 'free_spectral_interval': 12.0, 'normal_incidence': 60.0, 'thickness_from_line': 60.0}), ({'T': 120, 'm': 4, 'q': 0.5, 'd': 2, 'k': 0, 'line': 30}, {'wavelength': 30.0, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.0, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0}), ({'T': 120, 'm': 4, 'q': 0.5, 'd': -2, 'k': 3, 'line': 30}, {'wavelength': 28.5, 'channel_dispersion': -0.5, 'adjacent_order_wavelength': 24.0, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0}), ({'T': 120, 'm': 1, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 126.0, 'channel_dispersion': 2.0, 'adjacent_order_wavelength': 60.0, 'free_spectral_interval': 60.0, 'normal_incidence': 240.0, 'thickness_from_line': 30.0}), ({'T': 120, 'm': 4, 'q': 0.25, 'd': 0, 'k': 3, 'line': 30}, {'wavelength': 15.0, 'channel_dispersion': 0.0, 'adjacent_order_wavelength': 12.0, 'free_spectral_interval': 3.0, 'normal_incidence': 60.0, 'thickness_from_line': 240.0})], 2: [({'T': 121, 'm': 4, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 31.75, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.2, 'free_spectral_interval': 6.050000000000001, 'normal_incidence': 60.5, 'thickness_from_line': 120.0}), ({'T': 121, 'm': 4, 'q': 1, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 63.5, 'channel_dispersion': 1.0, 'adjacent_order_wavelength': 48.4, 'free_spectral_interval': 12.100000000000001, 'normal_incidence': 60.5, 'thickness_from_line': 60.0}), ({'T': 121, 'm': 4, 'q': 0.5, 'd': 2, 'k': 0, 'line': 30}, {'wavelength': 30.25, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.2, 'free_spectral_interval': 6.050000000000001, 'normal_incidence': 60.5, 'thickness_from_line': 120.0}), ({'T': 121, 'm': 4, 'q': 0.5, 'd': -2, 'k': 3, 'line': 30}, {'wavelength': 28.75, 'channel_dispersion': -0.5, 'adjacent_order_wavelength': 24.2, 'free_spectral_interval': 6.050000000000001, 'normal_incidence': 60.5, 'thickness_from_line': 120.0}), ({'T': 121, 'm': 1, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 127.0, 'channel_dispersion': 2.0, 'adjacent_order_wavelength': 60.5, 'free_spectral_interval': 60.5, 'normal_incidence': 242.0, 'thickness_from_line': 30.0}), ({'T': 121, 'm': 4, 'q': 0.25, 'd': 0, 'k': 3, 'line': 30}, {'wavelength': 15.125, 'channel_dispersion': 0.0, 'adjacent_order_wavelength': 12.1, 'free_spectral_interval': 3.0250000000000004, 'normal_incidence': 60.5, 'thickness_from_line': 240.0})], 3: [({'T': 122, 'm': 4, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 32.0, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.4, 'free_spectral_interval': 6.100000000000001, 'normal_incidence': 61.0, 'thickness_from_line': 120.0}), ({'T': 122, 'm': 4, 'q': 1, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 64.0, 'channel_dispersion': 1.0, 'adjacent_order_wavelength': 48.8, 'free_spectral_interval': 12.200000000000003, 'normal_incidence': 61.0, 'thickness_from_line': 60.0}), ({'T': 122, 'm': 4, 'q': 0.5, 'd': 2, 'k': 0, 'line': 30}, {'wavelength': 30.5, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.4, 'free_spectral_interval': 6.100000000000001, 'normal_incidence': 61.0, 'thickness_from_line': 120.0}), ({'T': 122, 'm': 4, 'q': 0.5, 'd': -2, 'k': 3, 'line': 30}, {'wavelength': 29.0, 'channel_dispersion': -0.5, 'adjacent_order_wavelength': 24.4, 'free_spectral_interval': 6.100000000000001, 'normal_incidence': 61.0, 'thickness_from_line': 120.0}), ({'T': 122, 'm': 1, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 128.0, 'channel_dispersion': 2.0, 'adjacent_order_wavelength': 61.0, 'free_spectral_interval': 61.0, 'normal_incidence': 244.0, 'thickness_from_line': 30.0}), ({'T': 122, 'm': 4, 'q': 0.25, 'd': 0, 'k': 3, 'line': 30}, {'wavelength': 15.25, 'channel_dispersion': 0.0, 'adjacent_order_wavelength': 12.2, 'free_spectral_interval': 3.0500000000000007, 'normal_incidence': 61.0, 'thickness_from_line': 240.0})], 4: [({'T': 123, 'm': 4, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 32.25, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.6, 'free_spectral_interval': 6.149999999999999, 'normal_incidence': 61.5, 'thickness_from_line': 120.0}), ({'T': 123, 'm': 4, 'q': 1, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 64.5, 'channel_dispersion': 1.0, 'adjacent_order_wavelength': 49.2, 'free_spectral_interval': 12.299999999999997, 'normal_incidence': 61.5, 'thickness_from_line': 60.0}), ({'T': 123, 'm': 4, 'q': 0.5, 'd': 2, 'k': 0, 'line': 30}, {'wavelength': 30.75, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.6, 'free_spectral_interval': 6.149999999999999, 'normal_incidence': 61.5, 'thickness_from_line': 120.0}), ({'T': 123, 'm': 4, 'q': 0.5, 'd': -2, 'k': 3, 'line': 30}, {'wavelength': 29.25, 'channel_dispersion': -0.5, 'adjacent_order_wavelength': 24.6, 'free_spectral_interval': 6.149999999999999, 'normal_incidence': 61.5, 'thickness_from_line': 120.0}), ({'T': 123, 'm': 1, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 129.0, 'channel_dispersion': 2.0, 'adjacent_order_wavelength': 61.5, 'free_spectral_interval': 61.5, 'normal_incidence': 246.0, 'thickness_from_line': 30.0}), ({'T': 123, 'm': 4, 'q': 0.25, 'd': 0, 'k': 3, 'line': 30}, {'wavelength': 15.375, 'channel_dispersion': 0.0, 'adjacent_order_wavelength': 12.3, 'free_spectral_interval': 3.0749999999999993, 'normal_incidence': 61.5, 'thickness_from_line': 240.0})], 5: [({'T': 124, 'm': 4, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 32.5, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.8, 'free_spectral_interval': 6.199999999999999, 'normal_incidence': 62.0, 'thickness_from_line': 120.0}), ({'T': 124, 'm': 4, 'q': 1, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 65.0, 'channel_dispersion': 1.0, 'adjacent_order_wavelength': 49.6, 'free_spectral_interval': 12.399999999999999, 'normal_incidence': 62.0, 'thickness_from_line': 60.0}), ({'T': 124, 'm': 4, 'q': 0.5, 'd': 2, 'k': 0, 'line': 30}, {'wavelength': 31.0, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.8, 'free_spectral_interval': 6.199999999999999, 'normal_incidence': 62.0, 'thickness_from_line': 120.0}), ({'T': 124, 'm': 4, 'q': 0.5, 'd': -2, 'k': 3, 'line': 30}, {'wavelength': 29.5, 'channel_dispersion': -0.5, 'adjacent_order_wavelength': 24.8, 'free_spectral_interval': 6.199999999999999, 'normal_incidence': 62.0, 'thickness_from_line': 120.0}), ({'T': 124, 'm': 1, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 130.0, 'channel_dispersion': 2.0, 'adjacent_order_wavelength': 62.0, 'free_spectral_interval': 62.0, 'normal_incidence': 248.0, 'thickness_from_line': 30.0}), ({'T': 124, 'm': 4, 'q': 0.25, 'd': 0, 'k': 3, 'line': 30}, {'wavelength': 15.5, 'channel_dispersion': 0.0, 'adjacent_order_wavelength': 12.4, 'free_spectral_interval': 3.0999999999999996, 'normal_incidence': 62.0, 'thickness_from_line': 240.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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| astronomical fixture 0 | {'adjacent_order_wavelength': 31.0, 'channel_dispersion': 0.5, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0, 'wavelength': 31.5} | {'adjacent_order_wavelength': 24.0, 'channel_dispersion': 0.5, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0, 'wavelength': 31.5} | Failed |
| astronomical fixture 1 | {'adjacent_order_wavelength': 61.0, 'channel_dispersion': 1.0, 'free_spectral_interval': 12.0, 'normal_incidence': 60.0, 'thickness_from_line': 60.0, 'wavelength': 63.0} | {'adjacent_order_wavelength': 48.0, 'channel_dispersion': 1.0, 'free_spectral_interval': 12.0, 'normal_incidence': 60.0, 'thickness_from_line': 60.0, 'wavelength': 63.0} | Failed |
| astronomical fixture 2 | {'adjacent_order_wavelength': 31.0, 'channel_dispersion': 0.5, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0, 'wavelength': 30.0} | {'adjacent_order_wavelength': 24.0, 'channel_dispersion': 0.5, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0, 'wavelength': 30.0} | Failed |
| astronomical fixture 3 | {'adjacent_order_wavelength': 31.0, 'channel_dispersion': -0.5, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0, 'wavelength': 28.5} | {'adjacent_order_wavelength': 24.0, 'channel_dispersion': -0.5, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0, 'wavelength': 28.5} | Failed |
| astronomical fixture 4 | {'adjacent_order_wavelength': 121.0, 'channel_dispersion': 2.0, 'free_spectral_interval': 60.0, 'normal_incidence': 240.0, 'thickness_from_line': 30.0, 'wavelength': 126.0} | {'adjacent_order_wavelength': 60.0, 'channel_dispersion': 2.0, 'free_spectral_interval': 60.0, 'normal_incidence': 240.0, 'thickness_from_line': 30.0, 'wavelength': 126.0} | Failed |
| astronomical fixture 5 | {'adjacent_order_wavelength': 16.0, 'channel_dispersion': 0.0, 'free_spectral_interval': 3.0, 'normal_incidence': 60.0, 'thickness_from_line': 240.0, 'wavelength': 15.0} | {'adjacent_order_wavelength': 12.0, 'channel_dispersion': 0.0, 'free_spectral_interval': 3.0, 'normal_incidence': 60.0, 'thickness_from_line': 240.0, 'wavelength': 15.0} | Failed |
SHA-256 / f2f978e354c7a4e92c1f36ab36c0c49a9dff038a982b77f9b147fc9812f404ca
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
return {'wavelength': 2*(d['T']+d['k']*d['d'])*d['q']/d['m'], 'channel_dispersion': 2*d['d']*d['q']/d['m'], 'adjacent_order_wavelength': 2*d['T']*d['q']/(d['m']-1) if d['m']>1 else None, 'free_spectral_interval': 2*d['T']*d['q']/d['m']-2*d['T']*d['q']/(d['m']+1), 'normal_incidence': 2*d['T']/d['m'], 'thickness_from_line': d['line']*d['m']/(2*d['q'])}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'T': 120, 'm': 4, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 31.5, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.0, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0}), ({'T': 120, 'm': 4, 'q': 1, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 63.0, 'channel_dispersion': 1.0, 'adjacent_order_wavelength': 48.0, 'free_spectral_interval': 12.0, 'normal_incidence': 60.0, 'thickness_from_line': 60.0}), ({'T': 120, 'm': 4, 'q': 0.5, 'd': 2, 'k': 0, 'line': 30}, {'wavelength': 30.0, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.0, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0}), ({'T': 120, 'm': 4, 'q': 0.5, 'd': -2, 'k': 3, 'line': 30}, {'wavelength': 28.5, 'channel_dispersion': -0.5, 'adjacent_order_wavelength': 24.0, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0}), ({'T': 120, 'm': 1, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 126.0, 'channel_dispersion': 2.0, 'adjacent_order_wavelength': 60.0, 'free_spectral_interval': 60.0, 'normal_incidence': 240.0, 'thickness_from_line': 30.0}), ({'T': 120, 'm': 4, 'q': 0.25, 'd': 0, 'k': 3, 'line': 30}, {'wavelength': 15.0, 'channel_dispersion': 0.0, 'adjacent_order_wavelength': 12.0, 'free_spectral_interval': 3.0, 'normal_incidence': 60.0, 'thickness_from_line': 240.0})], 2: [({'T': 121, 'm': 4, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 31.75, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.2, 'free_spectral_interval': 6.050000000000001, 'normal_incidence': 60.5, 'thickness_from_line': 120.0}), ({'T': 121, 'm': 4, 'q': 1, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 63.5, 'channel_dispersion': 1.0, 'adjacent_order_wavelength': 48.4, 'free_spectral_interval': 12.100000000000001, 'normal_incidence': 60.5, 'thickness_from_line': 60.0}), ({'T': 121, 'm': 4, 'q': 0.5, 'd': 2, 'k': 0, 'line': 30}, {'wavelength': 30.25, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.2, 'free_spectral_interval': 6.050000000000001, 'normal_incidence': 60.5, 'thickness_from_line': 120.0}), ({'T': 121, 'm': 4, 'q': 0.5, 'd': -2, 'k': 3, 'line': 30}, {'wavelength': 28.75, 'channel_dispersion': -0.5, 'adjacent_order_wavelength': 24.2, 'free_spectral_interval': 6.050000000000001, 'normal_incidence': 60.5, 'thickness_from_line': 120.0}), ({'T': 121, 'm': 1, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 127.0, 'channel_dispersion': 2.0, 'adjacent_order_wavelength': 60.5, 'free_spectral_interval': 60.5, 'normal_incidence': 242.0, 'thickness_from_line': 30.0}), ({'T': 121, 'm': 4, 'q': 0.25, 'd': 0, 'k': 3, 'line': 30}, {'wavelength': 15.125, 'channel_dispersion': 0.0, 'adjacent_order_wavelength': 12.1, 'free_spectral_interval': 3.0250000000000004, 'normal_incidence': 60.5, 'thickness_from_line': 240.0})], 3: [({'T': 122, 'm': 4, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 32.0, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.4, 'free_spectral_interval': 6.100000000000001, 'normal_incidence': 61.0, 'thickness_from_line': 120.0}), ({'T': 122, 'm': 4, 'q': 1, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 64.0, 'channel_dispersion': 1.0, 'adjacent_order_wavelength': 48.8, 'free_spectral_interval': 12.200000000000003, 'normal_incidence': 61.0, 'thickness_from_line': 60.0}), ({'T': 122, 'm': 4, 'q': 0.5, 'd': 2, 'k': 0, 'line': 30}, {'wavelength': 30.5, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.4, 'free_spectral_interval': 6.100000000000001, 'normal_incidence': 61.0, 'thickness_from_line': 120.0}), ({'T': 122, 'm': 4, 'q': 0.5, 'd': -2, 'k': 3, 'line': 30}, {'wavelength': 29.0, 'channel_dispersion': -0.5, 'adjacent_order_wavelength': 24.4, 'free_spectral_interval': 6.100000000000001, 'normal_incidence': 61.0, 'thickness_from_line': 120.0}), ({'T': 122, 'm': 1, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 128.0, 'channel_dispersion': 2.0, 'adjacent_order_wavelength': 61.0, 'free_spectral_interval': 61.0, 'normal_incidence': 244.0, 'thickness_from_line': 30.0}), ({'T': 122, 'm': 4, 'q': 0.25, 'd': 0, 'k': 3, 'line': 30}, {'wavelength': 15.25, 'channel_dispersion': 0.0, 'adjacent_order_wavelength': 12.2, 'free_spectral_interval': 3.0500000000000007, 'normal_incidence': 61.0, 'thickness_from_line': 240.0})], 4: [({'T': 123, 'm': 4, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 32.25, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.6, 'free_spectral_interval': 6.149999999999999, 'normal_incidence': 61.5, 'thickness_from_line': 120.0}), ({'T': 123, 'm': 4, 'q': 1, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 64.5, 'channel_dispersion': 1.0, 'adjacent_order_wavelength': 49.2, 'free_spectral_interval': 12.299999999999997, 'normal_incidence': 61.5, 'thickness_from_line': 60.0}), ({'T': 123, 'm': 4, 'q': 0.5, 'd': 2, 'k': 0, 'line': 30}, {'wavelength': 30.75, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.6, 'free_spectral_interval': 6.149999999999999, 'normal_incidence': 61.5, 'thickness_from_line': 120.0}), ({'T': 123, 'm': 4, 'q': 0.5, 'd': -2, 'k': 3, 'line': 30}, {'wavelength': 29.25, 'channel_dispersion': -0.5, 'adjacent_order_wavelength': 24.6, 'free_spectral_interval': 6.149999999999999, 'normal_incidence': 61.5, 'thickness_from_line': 120.0}), ({'T': 123, 'm': 1, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 129.0, 'channel_dispersion': 2.0, 'adjacent_order_wavelength': 61.5, 'free_spectral_interval': 61.5, 'normal_incidence': 246.0, 'thickness_from_line': 30.0}), ({'T': 123, 'm': 4, 'q': 0.25, 'd': 0, 'k': 3, 'line': 30}, {'wavelength': 15.375, 'channel_dispersion': 0.0, 'adjacent_order_wavelength': 12.3, 'free_spectral_interval': 3.0749999999999993, 'normal_incidence': 61.5, 'thickness_from_line': 240.0})], 5: [({'T': 124, 'm': 4, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 32.5, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.8, 'free_spectral_interval': 6.199999999999999, 'normal_incidence': 62.0, 'thickness_from_line': 120.0}), ({'T': 124, 'm': 4, 'q': 1, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 65.0, 'channel_dispersion': 1.0, 'adjacent_order_wavelength': 49.6, 'free_spectral_interval': 12.399999999999999, 'normal_incidence': 62.0, 'thickness_from_line': 60.0}), ({'T': 124, 'm': 4, 'q': 0.5, 'd': 2, 'k': 0, 'line': 30}, {'wavelength': 31.0, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.8, 'free_spectral_interval': 6.199999999999999, 'normal_incidence': 62.0, 'thickness_from_line': 120.0}), ({'T': 124, 'm': 4, 'q': 0.5, 'd': -2, 'k': 3, 'line': 30}, {'wavelength': 29.5, 'channel_dispersion': -0.5, 'adjacent_order_wavelength': 24.8, 'free_spectral_interval': 6.199999999999999, 'normal_incidence': 62.0, 'thickness_from_line': 120.0}), ({'T': 124, 'm': 1, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 130.0, 'channel_dispersion': 2.0, 'adjacent_order_wavelength': 62.0, 'free_spectral_interval': 62.0, 'normal_incidence': 248.0, 'thickness_from_line': 30.0}), ({'T': 124, 'm': 4, 'q': 0.25, 'd': 0, 'k': 3, 'line': 30}, {'wavelength': 15.5, 'channel_dispersion': 0.0, 'adjacent_order_wavelength': 12.4, 'free_spectral_interval': 3.0999999999999996, 'normal_incidence': 62.0, 'thickness_from_line': 240.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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| astronomical fixture 0 | {'adjacent_order_wavelength': 40.0, 'channel_dispersion': 0.5, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0, 'wavelength': 31.5} | {'adjacent_order_wavelength': 24.0, 'channel_dispersion': 0.5, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0, 'wavelength': 31.5} | Failed |
| astronomical fixture 1 | {'adjacent_order_wavelength': 80.0, 'channel_dispersion': 1.0, 'free_spectral_interval': 12.0, 'normal_incidence': 60.0, 'thickness_from_line': 60.0, 'wavelength': 63.0} | {'adjacent_order_wavelength': 48.0, 'channel_dispersion': 1.0, 'free_spectral_interval': 12.0, 'normal_incidence': 60.0, 'thickness_from_line': 60.0, 'wavelength': 63.0} | Failed |
| astronomical fixture 2 | {'adjacent_order_wavelength': 40.0, 'channel_dispersion': 0.5, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0, 'wavelength': 30.0} | {'adjacent_order_wavelength': 24.0, 'channel_dispersion': 0.5, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0, 'wavelength': 30.0} | Failed |
| astronomical fixture 3 | {'adjacent_order_wavelength': 40.0, 'channel_dispersion': -0.5, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0, 'wavelength': 28.5} | {'adjacent_order_wavelength': 24.0, 'channel_dispersion': -0.5, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0, 'wavelength': 28.5} | Failed |
| astronomical fixture 4 | {'adjacent_order_wavelength': None, 'channel_dispersion': 2.0, 'free_spectral_interval': 60.0, 'normal_incidence': 240.0, 'thickness_from_line': 30.0, 'wavelength': 126.0} | {'adjacent_order_wavelength': 60.0, 'channel_dispersion': 2.0, 'free_spectral_interval': 60.0, 'normal_incidence': 240.0, 'thickness_from_line': 30.0, 'wavelength': 126.0} | Failed |
| astronomical fixture 5 | {'adjacent_order_wavelength': 20.0, 'channel_dispersion': 0.0, 'free_spectral_interval': 3.0, 'normal_incidence': 60.0, 'thickness_from_line': 240.0, 'wavelength': 15.0} | {'adjacent_order_wavelength': 12.0, 'channel_dispersion': 0.0, 'free_spectral_interval': 3.0, 'normal_incidence': 60.0, 'thickness_from_line': 240.0, 'wavelength': 15.0} | Failed |
SHA-256 / ce6b5a1d80274ea17dfa41f6718b1a8d5f9a8e40903498f68429f51f20fba29a
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
return {'wavelength': 2*(d['T']+d['k']*d['d'])*d['q']/d['m'], 'channel_dispersion': 2*d['d']*d['q']/d['m'], 'adjacent_order_wavelength': 2*d['T']*d['q']/(d['m']+1), 'free_spectral_interval': 2*d['T']*d['q']/d['m']-2*d['T']*d['q']/(d['m']+1), 'normal_incidence': 2*d['T']/d['m'], 'thickness_from_line': d['line']*d['m']/(2*d['q'])}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'T': 120, 'm': 4, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 31.5, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.0, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0}), ({'T': 120, 'm': 4, 'q': 1, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 63.0, 'channel_dispersion': 1.0, 'adjacent_order_wavelength': 48.0, 'free_spectral_interval': 12.0, 'normal_incidence': 60.0, 'thickness_from_line': 60.0}), ({'T': 120, 'm': 4, 'q': 0.5, 'd': 2, 'k': 0, 'line': 30}, {'wavelength': 30.0, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.0, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0}), ({'T': 120, 'm': 4, 'q': 0.5, 'd': -2, 'k': 3, 'line': 30}, {'wavelength': 28.5, 'channel_dispersion': -0.5, 'adjacent_order_wavelength': 24.0, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0}), ({'T': 120, 'm': 1, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 126.0, 'channel_dispersion': 2.0, 'adjacent_order_wavelength': 60.0, 'free_spectral_interval': 60.0, 'normal_incidence': 240.0, 'thickness_from_line': 30.0}), ({'T': 120, 'm': 4, 'q': 0.25, 'd': 0, 'k': 3, 'line': 30}, {'wavelength': 15.0, 'channel_dispersion': 0.0, 'adjacent_order_wavelength': 12.0, 'free_spectral_interval': 3.0, 'normal_incidence': 60.0, 'thickness_from_line': 240.0})], 2: [({'T': 121, 'm': 4, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 31.75, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.2, 'free_spectral_interval': 6.050000000000001, 'normal_incidence': 60.5, 'thickness_from_line': 120.0}), ({'T': 121, 'm': 4, 'q': 1, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 63.5, 'channel_dispersion': 1.0, 'adjacent_order_wavelength': 48.4, 'free_spectral_interval': 12.100000000000001, 'normal_incidence': 60.5, 'thickness_from_line': 60.0}), ({'T': 121, 'm': 4, 'q': 0.5, 'd': 2, 'k': 0, 'line': 30}, {'wavelength': 30.25, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.2, 'free_spectral_interval': 6.050000000000001, 'normal_incidence': 60.5, 'thickness_from_line': 120.0}), ({'T': 121, 'm': 4, 'q': 0.5, 'd': -2, 'k': 3, 'line': 30}, {'wavelength': 28.75, 'channel_dispersion': -0.5, 'adjacent_order_wavelength': 24.2, 'free_spectral_interval': 6.050000000000001, 'normal_incidence': 60.5, 'thickness_from_line': 120.0}), ({'T': 121, 'm': 1, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 127.0, 'channel_dispersion': 2.0, 'adjacent_order_wavelength': 60.5, 'free_spectral_interval': 60.5, 'normal_incidence': 242.0, 'thickness_from_line': 30.0}), ({'T': 121, 'm': 4, 'q': 0.25, 'd': 0, 'k': 3, 'line': 30}, {'wavelength': 15.125, 'channel_dispersion': 0.0, 'adjacent_order_wavelength': 12.1, 'free_spectral_interval': 3.0250000000000004, 'normal_incidence': 60.5, 'thickness_from_line': 240.0})], 3: [({'T': 122, 'm': 4, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 32.0, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.4, 'free_spectral_interval': 6.100000000000001, 'normal_incidence': 61.0, 'thickness_from_line': 120.0}), ({'T': 122, 'm': 4, 'q': 1, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 64.0, 'channel_dispersion': 1.0, 'adjacent_order_wavelength': 48.8, 'free_spectral_interval': 12.200000000000003, 'normal_incidence': 61.0, 'thickness_from_line': 60.0}), ({'T': 122, 'm': 4, 'q': 0.5, 'd': 2, 'k': 0, 'line': 30}, {'wavelength': 30.5, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.4, 'free_spectral_interval': 6.100000000000001, 'normal_incidence': 61.0, 'thickness_from_line': 120.0}), ({'T': 122, 'm': 4, 'q': 0.5, 'd': -2, 'k': 3, 'line': 30}, {'wavelength': 29.0, 'channel_dispersion': -0.5, 'adjacent_order_wavelength': 24.4, 'free_spectral_interval': 6.100000000000001, 'normal_incidence': 61.0, 'thickness_from_line': 120.0}), ({'T': 122, 'm': 1, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 128.0, 'channel_dispersion': 2.0, 'adjacent_order_wavelength': 61.0, 'free_spectral_interval': 61.0, 'normal_incidence': 244.0, 'thickness_from_line': 30.0}), ({'T': 122, 'm': 4, 'q': 0.25, 'd': 0, 'k': 3, 'line': 30}, {'wavelength': 15.25, 'channel_dispersion': 0.0, 'adjacent_order_wavelength': 12.2, 'free_spectral_interval': 3.0500000000000007, 'normal_incidence': 61.0, 'thickness_from_line': 240.0})], 4: [({'T': 123, 'm': 4, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 32.25, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.6, 'free_spectral_interval': 6.149999999999999, 'normal_incidence': 61.5, 'thickness_from_line': 120.0}), ({'T': 123, 'm': 4, 'q': 1, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 64.5, 'channel_dispersion': 1.0, 'adjacent_order_wavelength': 49.2, 'free_spectral_interval': 12.299999999999997, 'normal_incidence': 61.5, 'thickness_from_line': 60.0}), ({'T': 123, 'm': 4, 'q': 0.5, 'd': 2, 'k': 0, 'line': 30}, {'wavelength': 30.75, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.6, 'free_spectral_interval': 6.149999999999999, 'normal_incidence': 61.5, 'thickness_from_line': 120.0}), ({'T': 123, 'm': 4, 'q': 0.5, 'd': -2, 'k': 3, 'line': 30}, {'wavelength': 29.25, 'channel_dispersion': -0.5, 'adjacent_order_wavelength': 24.6, 'free_spectral_interval': 6.149999999999999, 'normal_incidence': 61.5, 'thickness_from_line': 120.0}), ({'T': 123, 'm': 1, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 129.0, 'channel_dispersion': 2.0, 'adjacent_order_wavelength': 61.5, 'free_spectral_interval': 61.5, 'normal_incidence': 246.0, 'thickness_from_line': 30.0}), ({'T': 123, 'm': 4, 'q': 0.25, 'd': 0, 'k': 3, 'line': 30}, {'wavelength': 15.375, 'channel_dispersion': 0.0, 'adjacent_order_wavelength': 12.3, 'free_spectral_interval': 3.0749999999999993, 'normal_incidence': 61.5, 'thickness_from_line': 240.0})], 5: [({'T': 124, 'm': 4, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 32.5, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.8, 'free_spectral_interval': 6.199999999999999, 'normal_incidence': 62.0, 'thickness_from_line': 120.0}), ({'T': 124, 'm': 4, 'q': 1, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 65.0, 'channel_dispersion': 1.0, 'adjacent_order_wavelength': 49.6, 'free_spectral_interval': 12.399999999999999, 'normal_incidence': 62.0, 'thickness_from_line': 60.0}), ({'T': 124, 'm': 4, 'q': 0.5, 'd': 2, 'k': 0, 'line': 30}, {'wavelength': 31.0, 'channel_dispersion': 0.5, 'adjacent_order_wavelength': 24.8, 'free_spectral_interval': 6.199999999999999, 'normal_incidence': 62.0, 'thickness_from_line': 120.0}), ({'T': 124, 'm': 4, 'q': 0.5, 'd': -2, 'k': 3, 'line': 30}, {'wavelength': 29.5, 'channel_dispersion': -0.5, 'adjacent_order_wavelength': 24.8, 'free_spectral_interval': 6.199999999999999, 'normal_incidence': 62.0, 'thickness_from_line': 120.0}), ({'T': 124, 'm': 1, 'q': 0.5, 'd': 2, 'k': 3, 'line': 30}, {'wavelength': 130.0, 'channel_dispersion': 2.0, 'adjacent_order_wavelength': 62.0, 'free_spectral_interval': 62.0, 'normal_incidence': 248.0, 'thickness_from_line': 30.0}), ({'T': 124, 'm': 4, 'q': 0.25, 'd': 0, 'k': 3, 'line': 30}, {'wavelength': 15.5, 'channel_dispersion': 0.0, 'adjacent_order_wavelength': 12.4, 'free_spectral_interval': 3.0999999999999996, 'normal_incidence': 62.0, 'thickness_from_line': 240.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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| astronomical fixture 0 | {'adjacent_order_wavelength': 24.0, 'channel_dispersion': 0.5, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0, 'wavelength': 31.5} | {'adjacent_order_wavelength': 24.0, 'channel_dispersion': 0.5, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0, 'wavelength': 31.5} | Passed |
| astronomical fixture 1 | {'adjacent_order_wavelength': 48.0, 'channel_dispersion': 1.0, 'free_spectral_interval': 12.0, 'normal_incidence': 60.0, 'thickness_from_line': 60.0, 'wavelength': 63.0} | {'adjacent_order_wavelength': 48.0, 'channel_dispersion': 1.0, 'free_spectral_interval': 12.0, 'normal_incidence': 60.0, 'thickness_from_line': 60.0, 'wavelength': 63.0} | Passed |
| astronomical fixture 2 | {'adjacent_order_wavelength': 24.0, 'channel_dispersion': 0.5, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0, 'wavelength': 30.0} | {'adjacent_order_wavelength': 24.0, 'channel_dispersion': 0.5, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0, 'wavelength': 30.0} | Passed |
| astronomical fixture 3 | {'adjacent_order_wavelength': 24.0, 'channel_dispersion': -0.5, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0, 'wavelength': 28.5} | {'adjacent_order_wavelength': 24.0, 'channel_dispersion': -0.5, 'free_spectral_interval': 6.0, 'normal_incidence': 60.0, 'thickness_from_line': 120.0, 'wavelength': 28.5} | Passed |
| astronomical fixture 4 | {'adjacent_order_wavelength': 60.0, 'channel_dispersion': 2.0, 'free_spectral_interval': 60.0, 'normal_incidence': 240.0, 'thickness_from_line': 30.0, 'wavelength': 126.0} | {'adjacent_order_wavelength': 60.0, 'channel_dispersion': 2.0, 'free_spectral_interval': 60.0, 'normal_incidence': 240.0, 'thickness_from_line': 30.0, 'wavelength': 126.0} | Passed |
| astronomical fixture 5 | {'adjacent_order_wavelength': 12.0, 'channel_dispersion': 0.0, 'free_spectral_interval': 3.0, 'normal_incidence': 60.0, 'thickness_from_line': 240.0, 'wavelength': 15.0} | {'adjacent_order_wavelength': 12.0, 'channel_dispersion': 0.0, 'free_spectral_interval': 3.0, 'normal_incidence': 60.0, 'thickness_from_line': 240.0, 'wavelength': 15.0} | Passed |
SHA-256 / e677511fdb5620e6beb9c23e16a22b54bad7d12cf40fbd5c16b6ce9a1c0998f6
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:04.378335+00:00.
Case digest / a13a4aba39cc36d3f9499f79b114aa3f33588e072684609bee30a1854d7c7911