FAILURE MAP
← Case archive

FA-55836 / Astronomical coordinate conventions / Open access

Polarization sky position angle: Sky Stokes U rotates using a swapped instrument polarization basis · case 01

The adapter reports an incorrect sky u while other fields remain valid.

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

ROOT CAUSE

Sky Stokes U rotates using a swapped instrument polarization basis. Faulty expression: -d['s']*d['Q']+d['c']*d['U']

VERIFIED REPAIR

Preserve the declared model convention at this site: d['s']*d['Q']+d['c']*d['U']

Unsuccessful approach: A partial convention repair still uses d['s']*d['U']+d['c']*d['Q']

Case contract

Stokes Q,U rotate from instrument to sky with supplied c=cos(2theta),s=sin(2theta), so Qsky=cQ-sU and Usky=sQ+cU. Instrument mirror reverses U and V; I stays invariant. This model accepts exact supplied trigonometric values and does not infer astronomical angle zero points. Output fields are defined by: sky_q = d['c']*d['Q']-d['s']*d['U']; sky_u = d['s']*d['Q']+d['c']*d['U']; mirror_u = -d['U'] if d['mirror'] else d['U']; mirror_v = -d['V'] if d['mirror'] else d['V']; linear_power = d['Q']**2+d['U']**2; inverse_q = d['c']*d['Q']+d['s']*d['U']

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 {'sky_q': d['c']*d['Q']-d['s']*d['U'], 'sky_u': -d['s']*d['Q']+d['c']*d['U'], 'mirror_u': -d['U'] if d['mirror'] else d['U'], 'mirror_v': -d['V'] if d['mirror'] else d['V'], 'linear_power': d['Q']**2+d['U']**2, 'inverse_q': d['c']*d['Q']+d['s']*d['U']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'Q': 3, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': -5, 'sky_u': 3, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 34, 'inverse_q': 5}), ({'Q': 3, 'U': 5, 'V': 2, 'I': 20, 'c': 1, 's': 0, 'mirror': True}, {'sky_q': 3, 'sky_u': 5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 34, 'inverse_q': 3}), ({'Q': 3, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': -1, 'mirror': True}, {'sky_q': 5, 'sky_u': -3, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 34, 'inverse_q': -5}), ({'Q': 3, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': False}, {'sky_q': -5, 'sky_u': 3, 'mirror_u': 5, 'mirror_v': 2, 'linear_power': 34, 'inverse_q': 5}), ({'Q': 0, 'U': 0, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 0, 'sky_u': 0, 'mirror_u': 0, 'mirror_v': -2, 'linear_power': 0, 'inverse_q': 0}), ({'Q': 3, 'U': -3, 'V': -2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 3, 'sky_u': 3, 'mirror_u': 3, 'mirror_v': 2, 'linear_power': 18, 'inverse_q': -3})], 2: [({'Q': 4, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': -5, 'sky_u': 4, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 41, 'inverse_q': 5}), ({'Q': 4, 'U': 5, 'V': 2, 'I': 20, 'c': 1, 's': 0, 'mirror': True}, {'sky_q': 4, 'sky_u': 5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 41, 'inverse_q': 4}), ({'Q': 4, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': -1, 'mirror': True}, {'sky_q': 5, 'sky_u': -4, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 41, 'inverse_q': -5}), ({'Q': 4, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': False}, {'sky_q': -5, 'sky_u': 4, 'mirror_u': 5, 'mirror_v': 2, 'linear_power': 41, 'inverse_q': 5}), ({'Q': 1, 'U': 0, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 0, 'sky_u': 1, 'mirror_u': 0, 'mirror_v': -2, 'linear_power': 1, 'inverse_q': 0}), ({'Q': 4, 'U': -3, 'V': -2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 3, 'sky_u': 4, 'mirror_u': 3, 'mirror_v': 2, 'linear_power': 25, 'inverse_q': -3})], 3: [({'Q': 5, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': -5, 'sky_u': 5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 50, 'inverse_q': 5}), ({'Q': 5, 'U': 5, 'V': 2, 'I': 20, 'c': 1, 's': 0, 'mirror': True}, {'sky_q': 5, 'sky_u': 5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 50, 'inverse_q': 5}), ({'Q': 5, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': -1, 'mirror': True}, {'sky_q': 5, 'sky_u': -5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 50, 'inverse_q': -5}), ({'Q': 5, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': False}, {'sky_q': -5, 'sky_u': 5, 'mirror_u': 5, 'mirror_v': 2, 'linear_power': 50, 'inverse_q': 5}), ({'Q': 2, 'U': 0, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 0, 'sky_u': 2, 'mirror_u': 0, 'mirror_v': -2, 'linear_power': 4, 'inverse_q': 0}), ({'Q': 5, 'U': -3, 'V': -2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 3, 'sky_u': 5, 'mirror_u': 3, 'mirror_v': 2, 'linear_power': 34, 'inverse_q': -3})], 4: [({'Q': 6, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': -5, 'sky_u': 6, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 61, 'inverse_q': 5}), ({'Q': 6, 'U': 5, 'V': 2, 'I': 20, 'c': 1, 's': 0, 'mirror': True}, {'sky_q': 6, 'sky_u': 5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 61, 'inverse_q': 6}), ({'Q': 6, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': -1, 'mirror': True}, {'sky_q': 5, 'sky_u': -6, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 61, 'inverse_q': -5}), ({'Q': 6, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': False}, {'sky_q': -5, 'sky_u': 6, 'mirror_u': 5, 'mirror_v': 2, 'linear_power': 61, 'inverse_q': 5}), ({'Q': 3, 'U': 0, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 0, 'sky_u': 3, 'mirror_u': 0, 'mirror_v': -2, 'linear_power': 9, 'inverse_q': 0}), ({'Q': 6, 'U': -3, 'V': -2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 3, 'sky_u': 6, 'mirror_u': 3, 'mirror_v': 2, 'linear_power': 45, 'inverse_q': -3})], 5: [({'Q': 7, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': -5, 'sky_u': 7, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 74, 'inverse_q': 5}), ({'Q': 7, 'U': 5, 'V': 2, 'I': 20, 'c': 1, 's': 0, 'mirror': True}, {'sky_q': 7, 'sky_u': 5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 74, 'inverse_q': 7}), ({'Q': 7, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': -1, 'mirror': True}, {'sky_q': 5, 'sky_u': -7, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 74, 'inverse_q': -5}), ({'Q': 7, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': False}, {'sky_q': -5, 'sky_u': 7, 'mirror_u': 5, 'mirror_v': 2, 'linear_power': 74, 'inverse_q': 5}), ({'Q': 4, 'U': 0, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 0, 'sky_u': 4, 'mirror_u': 0, 'mirror_v': -2, 'linear_power': 16, 'inverse_q': 0}), ({'Q': 7, 'U': -3, 'V': -2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 3, 'sky_u': 7, 'mirror_u': 3, 'mirror_v': 2, 'linear_power': 58, 'inverse_q': -3})]}
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{'inverse_q': 5, 'linear_power': 34, 'mirror_u': -5, 'mirror_v': -2, 'sky_q': -5, 'sky_u': -3}{'inverse_q': 5, 'linear_power': 34, 'mirror_u': -5, 'mirror_v': -2, 'sky_q': -5, 'sky_u': 3}Failed
astronomical fixture 1{'inverse_q': 3, 'linear_power': 34, 'mirror_u': -5, 'mirror_v': -2, 'sky_q': 3, 'sky_u': 5}{'inverse_q': 3, 'linear_power': 34, 'mirror_u': -5, 'mirror_v': -2, 'sky_q': 3, 'sky_u': 5}Passed
astronomical fixture 2{'inverse_q': -5, 'linear_power': 34, 'mirror_u': -5, 'mirror_v': -2, 'sky_q': 5, 'sky_u': 3}{'inverse_q': -5, 'linear_power': 34, 'mirror_u': -5, 'mirror_v': -2, 'sky_q': 5, 'sky_u': -3}Failed
astronomical fixture 3{'inverse_q': 5, 'linear_power': 34, 'mirror_u': 5, 'mirror_v': 2, 'sky_q': -5, 'sky_u': -3}{'inverse_q': 5, 'linear_power': 34, 'mirror_u': 5, 'mirror_v': 2, 'sky_q': -5, 'sky_u': 3}Failed
astronomical fixture 4{'inverse_q': 0, 'linear_power': 0, 'mirror_u': 0, 'mirror_v': -2, 'sky_q': 0, 'sky_u': 0}{'inverse_q': 0, 'linear_power': 0, 'mirror_u': 0, 'mirror_v': -2, 'sky_q': 0, 'sky_u': 0}Passed
astronomical fixture 5{'inverse_q': -3, 'linear_power': 18, 'mirror_u': 3, 'mirror_v': 2, 'sky_q': 3, 'sky_u': -3}{'inverse_q': -3, 'linear_power': 18, 'mirror_u': 3, 'mirror_v': 2, 'sky_q': 3, 'sky_u': 3}Failed

SHA-256 / d175e4a1ff0547ae1bc7ff87a7e15820586eb8064e1d33a1ec6cefbfd19e3d76

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(d):
    return {'sky_q': d['c']*d['Q']-d['s']*d['U'], 'sky_u': d['s']*d['U']+d['c']*d['Q'], 'mirror_u': -d['U'] if d['mirror'] else d['U'], 'mirror_v': -d['V'] if d['mirror'] else d['V'], 'linear_power': d['Q']**2+d['U']**2, 'inverse_q': d['c']*d['Q']+d['s']*d['U']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'Q': 3, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': -5, 'sky_u': 3, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 34, 'inverse_q': 5}), ({'Q': 3, 'U': 5, 'V': 2, 'I': 20, 'c': 1, 's': 0, 'mirror': True}, {'sky_q': 3, 'sky_u': 5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 34, 'inverse_q': 3}), ({'Q': 3, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': -1, 'mirror': True}, {'sky_q': 5, 'sky_u': -3, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 34, 'inverse_q': -5}), ({'Q': 3, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': False}, {'sky_q': -5, 'sky_u': 3, 'mirror_u': 5, 'mirror_v': 2, 'linear_power': 34, 'inverse_q': 5}), ({'Q': 0, 'U': 0, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 0, 'sky_u': 0, 'mirror_u': 0, 'mirror_v': -2, 'linear_power': 0, 'inverse_q': 0}), ({'Q': 3, 'U': -3, 'V': -2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 3, 'sky_u': 3, 'mirror_u': 3, 'mirror_v': 2, 'linear_power': 18, 'inverse_q': -3})], 2: [({'Q': 4, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': -5, 'sky_u': 4, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 41, 'inverse_q': 5}), ({'Q': 4, 'U': 5, 'V': 2, 'I': 20, 'c': 1, 's': 0, 'mirror': True}, {'sky_q': 4, 'sky_u': 5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 41, 'inverse_q': 4}), ({'Q': 4, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': -1, 'mirror': True}, {'sky_q': 5, 'sky_u': -4, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 41, 'inverse_q': -5}), ({'Q': 4, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': False}, {'sky_q': -5, 'sky_u': 4, 'mirror_u': 5, 'mirror_v': 2, 'linear_power': 41, 'inverse_q': 5}), ({'Q': 1, 'U': 0, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 0, 'sky_u': 1, 'mirror_u': 0, 'mirror_v': -2, 'linear_power': 1, 'inverse_q': 0}), ({'Q': 4, 'U': -3, 'V': -2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 3, 'sky_u': 4, 'mirror_u': 3, 'mirror_v': 2, 'linear_power': 25, 'inverse_q': -3})], 3: [({'Q': 5, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': -5, 'sky_u': 5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 50, 'inverse_q': 5}), ({'Q': 5, 'U': 5, 'V': 2, 'I': 20, 'c': 1, 's': 0, 'mirror': True}, {'sky_q': 5, 'sky_u': 5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 50, 'inverse_q': 5}), ({'Q': 5, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': -1, 'mirror': True}, {'sky_q': 5, 'sky_u': -5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 50, 'inverse_q': -5}), ({'Q': 5, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': False}, {'sky_q': -5, 'sky_u': 5, 'mirror_u': 5, 'mirror_v': 2, 'linear_power': 50, 'inverse_q': 5}), ({'Q': 2, 'U': 0, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 0, 'sky_u': 2, 'mirror_u': 0, 'mirror_v': -2, 'linear_power': 4, 'inverse_q': 0}), ({'Q': 5, 'U': -3, 'V': -2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 3, 'sky_u': 5, 'mirror_u': 3, 'mirror_v': 2, 'linear_power': 34, 'inverse_q': -3})], 4: [({'Q': 6, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': -5, 'sky_u': 6, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 61, 'inverse_q': 5}), ({'Q': 6, 'U': 5, 'V': 2, 'I': 20, 'c': 1, 's': 0, 'mirror': True}, {'sky_q': 6, 'sky_u': 5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 61, 'inverse_q': 6}), ({'Q': 6, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': -1, 'mirror': True}, {'sky_q': 5, 'sky_u': -6, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 61, 'inverse_q': -5}), ({'Q': 6, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': False}, {'sky_q': -5, 'sky_u': 6, 'mirror_u': 5, 'mirror_v': 2, 'linear_power': 61, 'inverse_q': 5}), ({'Q': 3, 'U': 0, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 0, 'sky_u': 3, 'mirror_u': 0, 'mirror_v': -2, 'linear_power': 9, 'inverse_q': 0}), ({'Q': 6, 'U': -3, 'V': -2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 3, 'sky_u': 6, 'mirror_u': 3, 'mirror_v': 2, 'linear_power': 45, 'inverse_q': -3})], 5: [({'Q': 7, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': -5, 'sky_u': 7, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 74, 'inverse_q': 5}), ({'Q': 7, 'U': 5, 'V': 2, 'I': 20, 'c': 1, 's': 0, 'mirror': True}, {'sky_q': 7, 'sky_u': 5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 74, 'inverse_q': 7}), ({'Q': 7, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': -1, 'mirror': True}, {'sky_q': 5, 'sky_u': -7, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 74, 'inverse_q': -5}), ({'Q': 7, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': False}, {'sky_q': -5, 'sky_u': 7, 'mirror_u': 5, 'mirror_v': 2, 'linear_power': 74, 'inverse_q': 5}), ({'Q': 4, 'U': 0, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 0, 'sky_u': 4, 'mirror_u': 0, 'mirror_v': -2, 'linear_power': 16, 'inverse_q': 0}), ({'Q': 7, 'U': -3, 'V': -2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 3, 'sky_u': 7, 'mirror_u': 3, 'mirror_v': 2, 'linear_power': 58, 'inverse_q': -3})]}
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{'inverse_q': 5, 'linear_power': 34, 'mirror_u': -5, 'mirror_v': -2, 'sky_q': -5, 'sky_u': 5}{'inverse_q': 5, 'linear_power': 34, 'mirror_u': -5, 'mirror_v': -2, 'sky_q': -5, 'sky_u': 3}Failed
astronomical fixture 1{'inverse_q': 3, 'linear_power': 34, 'mirror_u': -5, 'mirror_v': -2, 'sky_q': 3, 'sky_u': 3}{'inverse_q': 3, 'linear_power': 34, 'mirror_u': -5, 'mirror_v': -2, 'sky_q': 3, 'sky_u': 5}Failed
astronomical fixture 2{'inverse_q': -5, 'linear_power': 34, 'mirror_u': -5, 'mirror_v': -2, 'sky_q': 5, 'sky_u': -5}{'inverse_q': -5, 'linear_power': 34, 'mirror_u': -5, 'mirror_v': -2, 'sky_q': 5, 'sky_u': -3}Failed
astronomical fixture 3{'inverse_q': 5, 'linear_power': 34, 'mirror_u': 5, 'mirror_v': 2, 'sky_q': -5, 'sky_u': 5}{'inverse_q': 5, 'linear_power': 34, 'mirror_u': 5, 'mirror_v': 2, 'sky_q': -5, 'sky_u': 3}Failed
astronomical fixture 4{'inverse_q': 0, 'linear_power': 0, 'mirror_u': 0, 'mirror_v': -2, 'sky_q': 0, 'sky_u': 0}{'inverse_q': 0, 'linear_power': 0, 'mirror_u': 0, 'mirror_v': -2, 'sky_q': 0, 'sky_u': 0}Passed
astronomical fixture 5{'inverse_q': -3, 'linear_power': 18, 'mirror_u': 3, 'mirror_v': 2, 'sky_q': 3, 'sky_u': -3}{'inverse_q': -3, 'linear_power': 18, 'mirror_u': 3, 'mirror_v': 2, 'sky_q': 3, 'sky_u': 3}Failed

SHA-256 / ff90a5303e5a2a01c0ffad77f30055adad43414e5ffef005f276859f20b154e7

3 / The verified repair

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

N = 1
observations = []
def solve(d):
    return {'sky_q': d['c']*d['Q']-d['s']*d['U'], 'sky_u': d['s']*d['Q']+d['c']*d['U'], 'mirror_u': -d['U'] if d['mirror'] else d['U'], 'mirror_v': -d['V'] if d['mirror'] else d['V'], 'linear_power': d['Q']**2+d['U']**2, 'inverse_q': d['c']*d['Q']+d['s']*d['U']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'Q': 3, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': -5, 'sky_u': 3, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 34, 'inverse_q': 5}), ({'Q': 3, 'U': 5, 'V': 2, 'I': 20, 'c': 1, 's': 0, 'mirror': True}, {'sky_q': 3, 'sky_u': 5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 34, 'inverse_q': 3}), ({'Q': 3, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': -1, 'mirror': True}, {'sky_q': 5, 'sky_u': -3, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 34, 'inverse_q': -5}), ({'Q': 3, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': False}, {'sky_q': -5, 'sky_u': 3, 'mirror_u': 5, 'mirror_v': 2, 'linear_power': 34, 'inverse_q': 5}), ({'Q': 0, 'U': 0, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 0, 'sky_u': 0, 'mirror_u': 0, 'mirror_v': -2, 'linear_power': 0, 'inverse_q': 0}), ({'Q': 3, 'U': -3, 'V': -2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 3, 'sky_u': 3, 'mirror_u': 3, 'mirror_v': 2, 'linear_power': 18, 'inverse_q': -3})], 2: [({'Q': 4, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': -5, 'sky_u': 4, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 41, 'inverse_q': 5}), ({'Q': 4, 'U': 5, 'V': 2, 'I': 20, 'c': 1, 's': 0, 'mirror': True}, {'sky_q': 4, 'sky_u': 5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 41, 'inverse_q': 4}), ({'Q': 4, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': -1, 'mirror': True}, {'sky_q': 5, 'sky_u': -4, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 41, 'inverse_q': -5}), ({'Q': 4, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': False}, {'sky_q': -5, 'sky_u': 4, 'mirror_u': 5, 'mirror_v': 2, 'linear_power': 41, 'inverse_q': 5}), ({'Q': 1, 'U': 0, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 0, 'sky_u': 1, 'mirror_u': 0, 'mirror_v': -2, 'linear_power': 1, 'inverse_q': 0}), ({'Q': 4, 'U': -3, 'V': -2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 3, 'sky_u': 4, 'mirror_u': 3, 'mirror_v': 2, 'linear_power': 25, 'inverse_q': -3})], 3: [({'Q': 5, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': -5, 'sky_u': 5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 50, 'inverse_q': 5}), ({'Q': 5, 'U': 5, 'V': 2, 'I': 20, 'c': 1, 's': 0, 'mirror': True}, {'sky_q': 5, 'sky_u': 5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 50, 'inverse_q': 5}), ({'Q': 5, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': -1, 'mirror': True}, {'sky_q': 5, 'sky_u': -5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 50, 'inverse_q': -5}), ({'Q': 5, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': False}, {'sky_q': -5, 'sky_u': 5, 'mirror_u': 5, 'mirror_v': 2, 'linear_power': 50, 'inverse_q': 5}), ({'Q': 2, 'U': 0, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 0, 'sky_u': 2, 'mirror_u': 0, 'mirror_v': -2, 'linear_power': 4, 'inverse_q': 0}), ({'Q': 5, 'U': -3, 'V': -2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 3, 'sky_u': 5, 'mirror_u': 3, 'mirror_v': 2, 'linear_power': 34, 'inverse_q': -3})], 4: [({'Q': 6, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': -5, 'sky_u': 6, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 61, 'inverse_q': 5}), ({'Q': 6, 'U': 5, 'V': 2, 'I': 20, 'c': 1, 's': 0, 'mirror': True}, {'sky_q': 6, 'sky_u': 5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 61, 'inverse_q': 6}), ({'Q': 6, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': -1, 'mirror': True}, {'sky_q': 5, 'sky_u': -6, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 61, 'inverse_q': -5}), ({'Q': 6, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': False}, {'sky_q': -5, 'sky_u': 6, 'mirror_u': 5, 'mirror_v': 2, 'linear_power': 61, 'inverse_q': 5}), ({'Q': 3, 'U': 0, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 0, 'sky_u': 3, 'mirror_u': 0, 'mirror_v': -2, 'linear_power': 9, 'inverse_q': 0}), ({'Q': 6, 'U': -3, 'V': -2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 3, 'sky_u': 6, 'mirror_u': 3, 'mirror_v': 2, 'linear_power': 45, 'inverse_q': -3})], 5: [({'Q': 7, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': -5, 'sky_u': 7, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 74, 'inverse_q': 5}), ({'Q': 7, 'U': 5, 'V': 2, 'I': 20, 'c': 1, 's': 0, 'mirror': True}, {'sky_q': 7, 'sky_u': 5, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 74, 'inverse_q': 7}), ({'Q': 7, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': -1, 'mirror': True}, {'sky_q': 5, 'sky_u': -7, 'mirror_u': -5, 'mirror_v': -2, 'linear_power': 74, 'inverse_q': -5}), ({'Q': 7, 'U': 5, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': False}, {'sky_q': -5, 'sky_u': 7, 'mirror_u': 5, 'mirror_v': 2, 'linear_power': 74, 'inverse_q': 5}), ({'Q': 4, 'U': 0, 'V': 2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 0, 'sky_u': 4, 'mirror_u': 0, 'mirror_v': -2, 'linear_power': 16, 'inverse_q': 0}), ({'Q': 7, 'U': -3, 'V': -2, 'I': 20, 'c': 0, 's': 1, 'mirror': True}, {'sky_q': 3, 'sky_u': 7, 'mirror_u': 3, 'mirror_v': 2, 'linear_power': 58, 'inverse_q': -3})]}
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{'inverse_q': 5, 'linear_power': 34, 'mirror_u': -5, 'mirror_v': -2, 'sky_q': -5, 'sky_u': 3}{'inverse_q': 5, 'linear_power': 34, 'mirror_u': -5, 'mirror_v': -2, 'sky_q': -5, 'sky_u': 3}Passed
astronomical fixture 1{'inverse_q': 3, 'linear_power': 34, 'mirror_u': -5, 'mirror_v': -2, 'sky_q': 3, 'sky_u': 5}{'inverse_q': 3, 'linear_power': 34, 'mirror_u': -5, 'mirror_v': -2, 'sky_q': 3, 'sky_u': 5}Passed
astronomical fixture 2{'inverse_q': -5, 'linear_power': 34, 'mirror_u': -5, 'mirror_v': -2, 'sky_q': 5, 'sky_u': -3}{'inverse_q': -5, 'linear_power': 34, 'mirror_u': -5, 'mirror_v': -2, 'sky_q': 5, 'sky_u': -3}Passed
astronomical fixture 3{'inverse_q': 5, 'linear_power': 34, 'mirror_u': 5, 'mirror_v': 2, 'sky_q': -5, 'sky_u': 3}{'inverse_q': 5, 'linear_power': 34, 'mirror_u': 5, 'mirror_v': 2, 'sky_q': -5, 'sky_u': 3}Passed
astronomical fixture 4{'inverse_q': 0, 'linear_power': 0, 'mirror_u': 0, 'mirror_v': -2, 'sky_q': 0, 'sky_u': 0}{'inverse_q': 0, 'linear_power': 0, 'mirror_u': 0, 'mirror_v': -2, 'sky_q': 0, 'sky_u': 0}Passed
astronomical fixture 5{'inverse_q': -3, 'linear_power': 18, 'mirror_u': 3, 'mirror_v': 2, 'sky_q': 3, 'sky_u': 3}{'inverse_q': -3, 'linear_power': 18, 'mirror_u': 3, 'mirror_v': 2, 'sky_q': 3, 'sky_u': 3}Passed

SHA-256 / 4a28fb175f463b27848a789e4161743149251237d929e14d72838e7c0dd23f07

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

Case digest / 191838d883458b05fa78b136932fb0951e0527cf861cc20782fe51d09bd689b1