FAILURE MAP
← Case archive

FA-55856 / Astronomical coordinate conventions / Open access

Polarization sky position angle: Inverse sky polarization rotation repeats the forward spin-two transform · case 01

The adapter reports an incorrect inverse q while other fields remain valid.

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

ROOT CAUSE

Inverse sky polarization rotation repeats the forward spin-two transform. Faulty expression: d['c']*d['Q']-d['s']*d['U']

VERIFIED REPAIR

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

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

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 / 813fe588aaf579f876ca612d0a95036ff86de1b56357d3fe3f847c97bc1a9ef9

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['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['s']*d['Q']+d['c']*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': 3, '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': 5, '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}Failed
astronomical fixture 2{'inverse_q': -3, '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': 3, '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 / 571c0038d30ba52ef0694f40c5d9787c6b566ad33570052a5a4ca99f4b65d863

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

Case digest / 88c998abd073d233374b221f1c4a1a3129a5e7602587e3fd129e4ce9384bbd4c