{"abstract":"The adapter reports an incorrect spatial pixel while other fields remain valid.","category":"Astronomical coordinate conventions","checks":6,"contract":"A spectrograph slit has supplied sine s and cosine c of position angle east of north. Sky offsets east E,north N map along slit E*s+N*c and across E*c-N*s. Slit scale a converts angle to detector pixels; spatial reference r and nod offset q are separate. Output fields are defined by: along_slit = d['E']*d['s']+d['N']*d['c']; across_slit = d['E']*d['c']-d['N']*d['s']; spatial_pixel = d['r']+(d['E']*d['s']+d['N']*d['c'])/d['a']; nodded_along = d['E']*d['s']+d['N']*d['c']-d['q']; nod_east = d['q']*d['s']; nod_north = d['q']*d['c']","evaluation_group":"astro-slit-sky-coordinate","failed_approach":"A partial convention repair still uses (d['E']*d['s']+d['N']*d['c'])/d['a']","family":"s3-astronomical-coordinate-conventions-slit-sky-coordinate-spatial_pixel","id":"FA-55811","implementations":{"attempt":{"sha256":"f5886c698e57bbf2f2e5a6cae6cfee516e810e52ce76bac4666194c42c0331c4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    return {'along_slit': d['E']*d['s']+d['N']*d['c'], 'across_slit': d['E']*d['c']-d['N']*d['s'], 'spatial_pixel': (d['E']*d['s']+d['N']*d['c'])/d['a'], 'nodded_along': d['E']*d['s']+d['N']*d['c']-d['q'], 'nod_east': d['q']*d['s'], 'nod_north': d['q']*d['c']}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = {1: [({'E': 3, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 5, 'across_slit': 3, 'spatial_pixel': 12.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4}), ({'E': 3, 'N': 5, 's': 1, 'c': 0, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 3, 'across_slit': -5, 'spatial_pixel': 11.5, 'nodded_along': -1, 'nod_east': 4, 'nod_north': 0}), ({'E': 3, 'N': 5, 's': 0, 'c': -1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': -5, 'across_slit': -3, 'spatial_pixel': 7.5, 'nodded_along': -9, 'nod_east': 0, 'nod_north': -4}), ({'E': 0, 'N': 0, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 0, 'across_slit': 0, 'spatial_pixel': 10.0, 'nodded_along': -4, 'nod_east': 0, 'nod_north': 4}), ({'E': 3, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 0}, {'along_slit': 5, 'across_slit': 3, 'spatial_pixel': 12.5, 'nodded_along': 5, 'nod_east': 0, 'nod_north': 0}), ({'E': 3, 'N': 5, 's': 0, 'c': 1, 'a': -2, 'r': 0, 'q': 4}, {'along_slit': 5, 'across_slit': 3, 'spatial_pixel': -2.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4})], 2: [({'E': 4, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 5, 'across_slit': 4, 'spatial_pixel': 12.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4}), ({'E': 4, 'N': 5, 's': 1, 'c': 0, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 4, 'across_slit': -5, 'spatial_pixel': 12.0, 'nodded_along': 0, 'nod_east': 4, 'nod_north': 0}), ({'E': 4, 'N': 5, 's': 0, 'c': -1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': -5, 'across_slit': -4, 'spatial_pixel': 7.5, 'nodded_along': -9, 'nod_east': 0, 'nod_north': -4}), ({'E': 1, 'N': 0, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 0, 'across_slit': 1, 'spatial_pixel': 10.0, 'nodded_along': -4, 'nod_east': 0, 'nod_north': 4}), ({'E': 4, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 0}, {'along_slit': 5, 'across_slit': 4, 'spatial_pixel': 12.5, 'nodded_along': 5, 'nod_east': 0, 'nod_north': 0}), ({'E': 4, 'N': 5, 's': 0, 'c': 1, 'a': -2, 'r': 0, 'q': 4}, {'along_slit': 5, 'across_slit': 4, 'spatial_pixel': -2.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4})], 3: [({'E': 5, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 5, 'across_slit': 5, 'spatial_pixel': 12.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4}), ({'E': 5, 'N': 5, 's': 1, 'c': 0, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 5, 'across_slit': -5, 'spatial_pixel': 12.5, 'nodded_along': 1, 'nod_east': 4, 'nod_north': 0}), ({'E': 5, 'N': 5, 's': 0, 'c': -1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': -5, 'across_slit': -5, 'spatial_pixel': 7.5, 'nodded_along': -9, 'nod_east': 0, 'nod_north': -4}), ({'E': 2, 'N': 0, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 0, 'across_slit': 2, 'spatial_pixel': 10.0, 'nodded_along': -4, 'nod_east': 0, 'nod_north': 4}), ({'E': 5, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 0}, {'along_slit': 5, 'across_slit': 5, 'spatial_pixel': 12.5, 'nodded_along': 5, 'nod_east': 0, 'nod_north': 0}), ({'E': 5, 'N': 5, 's': 0, 'c': 1, 'a': -2, 'r': 0, 'q': 4}, {'along_slit': 5, 'across_slit': 5, 'spatial_pixel': -2.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4})], 4: [({'E': 6, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 5, 'across_slit': 6, 'spatial_pixel': 12.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4}), ({'E': 6, 'N': 5, 's': 1, 'c': 0, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 6, 'across_slit': -5, 'spatial_pixel': 13.0, 'nodded_along': 2, 'nod_east': 4, 'nod_north': 0}), ({'E': 6, 'N': 5, 's': 0, 'c': -1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': -5, 'across_slit': -6, 'spatial_pixel': 7.5, 'nodded_along': -9, 'nod_east': 0, 'nod_north': -4}), ({'E': 3, 'N': 0, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 0, 'across_slit': 3, 'spatial_pixel': 10.0, 'nodded_along': -4, 'nod_east': 0, 'nod_north': 4}), ({'E': 6, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 0}, {'along_slit': 5, 'across_slit': 6, 'spatial_pixel': 12.5, 'nodded_along': 5, 'nod_east': 0, 'nod_north': 0}), ({'E': 6, 'N': 5, 's': 0, 'c': 1, 'a': -2, 'r': 0, 'q': 4}, {'along_slit': 5, 'across_slit': 6, 'spatial_pixel': -2.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4})], 5: [({'E': 7, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 5, 'across_slit': 7, 'spatial_pixel': 12.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4}), ({'E': 7, 'N': 5, 's': 1, 'c': 0, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 7, 'across_slit': -5, 'spatial_pixel': 13.5, 'nodded_along': 3, 'nod_east': 4, 'nod_north': 0}), ({'E': 7, 'N': 5, 's': 0, 'c': -1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': -5, 'across_slit': -7, 'spatial_pixel': 7.5, 'nodded_along': -9, 'nod_east': 0, 'nod_north': -4}), ({'E': 4, 'N': 0, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 0, 'across_slit': 4, 'spatial_pixel': 10.0, 'nodded_along': -4, 'nod_east': 0, 'nod_north': 4}), ({'E': 7, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 0}, {'along_slit': 5, 'across_slit': 7, 'spatial_pixel': 12.5, 'nodded_along': 5, 'nod_east': 0, 'nod_north': 0}), ({'E': 7, 'N': 5, 's': 0, 'c': 1, 'a': -2, 'r': 0, 'q': 4}, {'along_slit': 5, 'across_slit': 7, 'spatial_pixel': -2.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4})]}\nfor i, (record, expected) in enumerate(fixtures[N]):\n    check('astronomical fixture %s' % i, solve(record), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"a159883717e3b5f9b4da96d6ad8a56333f1ca662b8259598b16eab8bc3ec71e4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    return {'along_slit': d['E']*d['s']+d['N']*d['c'], 'across_slit': d['E']*d['c']-d['N']*d['s'], 'spatial_pixel': d['r']+(d['E']*d['s']+d['N']*d['c'])*d['a'], 'nodded_along': d['E']*d['s']+d['N']*d['c']-d['q'], 'nod_east': d['q']*d['s'], 'nod_north': d['q']*d['c']}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = {1: [({'E': 3, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 5, 'across_slit': 3, 'spatial_pixel': 12.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4}), ({'E': 3, 'N': 5, 's': 1, 'c': 0, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 3, 'across_slit': -5, 'spatial_pixel': 11.5, 'nodded_along': -1, 'nod_east': 4, 'nod_north': 0}), ({'E': 3, 'N': 5, 's': 0, 'c': -1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': -5, 'across_slit': -3, 'spatial_pixel': 7.5, 'nodded_along': -9, 'nod_east': 0, 'nod_north': -4}), ({'E': 0, 'N': 0, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 0, 'across_slit': 0, 'spatial_pixel': 10.0, 'nodded_along': -4, 'nod_east': 0, 'nod_north': 4}), ({'E': 3, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 0}, {'along_slit': 5, 'across_slit': 3, 'spatial_pixel': 12.5, 'nodded_along': 5, 'nod_east': 0, 'nod_north': 0}), ({'E': 3, 'N': 5, 's': 0, 'c': 1, 'a': -2, 'r': 0, 'q': 4}, {'along_slit': 5, 'across_slit': 3, 'spatial_pixel': -2.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4})], 2: [({'E': 4, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 5, 'across_slit': 4, 'spatial_pixel': 12.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4}), ({'E': 4, 'N': 5, 's': 1, 'c': 0, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 4, 'across_slit': -5, 'spatial_pixel': 12.0, 'nodded_along': 0, 'nod_east': 4, 'nod_north': 0}), ({'E': 4, 'N': 5, 's': 0, 'c': -1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': -5, 'across_slit': -4, 'spatial_pixel': 7.5, 'nodded_along': -9, 'nod_east': 0, 'nod_north': -4}), ({'E': 1, 'N': 0, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 0, 'across_slit': 1, 'spatial_pixel': 10.0, 'nodded_along': -4, 'nod_east': 0, 'nod_north': 4}), ({'E': 4, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 0}, {'along_slit': 5, 'across_slit': 4, 'spatial_pixel': 12.5, 'nodded_along': 5, 'nod_east': 0, 'nod_north': 0}), ({'E': 4, 'N': 5, 's': 0, 'c': 1, 'a': -2, 'r': 0, 'q': 4}, {'along_slit': 5, 'across_slit': 4, 'spatial_pixel': -2.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4})], 3: [({'E': 5, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 5, 'across_slit': 5, 'spatial_pixel': 12.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4}), ({'E': 5, 'N': 5, 's': 1, 'c': 0, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 5, 'across_slit': -5, 'spatial_pixel': 12.5, 'nodded_along': 1, 'nod_east': 4, 'nod_north': 0}), ({'E': 5, 'N': 5, 's': 0, 'c': -1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': -5, 'across_slit': -5, 'spatial_pixel': 7.5, 'nodded_along': -9, 'nod_east': 0, 'nod_north': -4}), ({'E': 2, 'N': 0, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 0, 'across_slit': 2, 'spatial_pixel': 10.0, 'nodded_along': -4, 'nod_east': 0, 'nod_north': 4}), ({'E': 5, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 0}, {'along_slit': 5, 'across_slit': 5, 'spatial_pixel': 12.5, 'nodded_along': 5, 'nod_east': 0, 'nod_north': 0}), ({'E': 5, 'N': 5, 's': 0, 'c': 1, 'a': -2, 'r': 0, 'q': 4}, {'along_slit': 5, 'across_slit': 5, 'spatial_pixel': -2.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4})], 4: [({'E': 6, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 5, 'across_slit': 6, 'spatial_pixel': 12.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4}), ({'E': 6, 'N': 5, 's': 1, 'c': 0, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 6, 'across_slit': -5, 'spatial_pixel': 13.0, 'nodded_along': 2, 'nod_east': 4, 'nod_north': 0}), ({'E': 6, 'N': 5, 's': 0, 'c': -1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': -5, 'across_slit': -6, 'spatial_pixel': 7.5, 'nodded_along': -9, 'nod_east': 0, 'nod_north': -4}), ({'E': 3, 'N': 0, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 0, 'across_slit': 3, 'spatial_pixel': 10.0, 'nodded_along': -4, 'nod_east': 0, 'nod_north': 4}), ({'E': 6, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 0}, {'along_slit': 5, 'across_slit': 6, 'spatial_pixel': 12.5, 'nodded_along': 5, 'nod_east': 0, 'nod_north': 0}), ({'E': 6, 'N': 5, 's': 0, 'c': 1, 'a': -2, 'r': 0, 'q': 4}, {'along_slit': 5, 'across_slit': 6, 'spatial_pixel': -2.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4})], 5: [({'E': 7, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 5, 'across_slit': 7, 'spatial_pixel': 12.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4}), ({'E': 7, 'N': 5, 's': 1, 'c': 0, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 7, 'across_slit': -5, 'spatial_pixel': 13.5, 'nodded_along': 3, 'nod_east': 4, 'nod_north': 0}), ({'E': 7, 'N': 5, 's': 0, 'c': -1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': -5, 'across_slit': -7, 'spatial_pixel': 7.5, 'nodded_along': -9, 'nod_east': 0, 'nod_north': -4}), ({'E': 4, 'N': 0, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 0, 'across_slit': 4, 'spatial_pixel': 10.0, 'nodded_along': -4, 'nod_east': 0, 'nod_north': 4}), ({'E': 7, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 0}, {'along_slit': 5, 'across_slit': 7, 'spatial_pixel': 12.5, 'nodded_along': 5, 'nod_east': 0, 'nod_north': 0}), ({'E': 7, 'N': 5, 's': 0, 'c': 1, 'a': -2, 'r': 0, 'q': 4}, {'along_slit': 5, 'across_slit': 7, 'spatial_pixel': -2.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4})]}\nfor i, (record, expected) in enumerate(fixtures[N]):\n    check('astronomical fixture %s' % i, solve(record), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"d0e97af665e27e06f84d4a8f17b07909d3792d196afed7cd2d23d5e5c964e895","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    return {'along_slit': d['E']*d['s']+d['N']*d['c'], 'across_slit': d['E']*d['c']-d['N']*d['s'], 'spatial_pixel': d['r']+(d['E']*d['s']+d['N']*d['c'])/d['a'], 'nodded_along': d['E']*d['s']+d['N']*d['c']-d['q'], 'nod_east': d['q']*d['s'], 'nod_north': d['q']*d['c']}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = {1: [({'E': 3, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 5, 'across_slit': 3, 'spatial_pixel': 12.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4}), ({'E': 3, 'N': 5, 's': 1, 'c': 0, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 3, 'across_slit': -5, 'spatial_pixel': 11.5, 'nodded_along': -1, 'nod_east': 4, 'nod_north': 0}), ({'E': 3, 'N': 5, 's': 0, 'c': -1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': -5, 'across_slit': -3, 'spatial_pixel': 7.5, 'nodded_along': -9, 'nod_east': 0, 'nod_north': -4}), ({'E': 0, 'N': 0, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 0, 'across_slit': 0, 'spatial_pixel': 10.0, 'nodded_along': -4, 'nod_east': 0, 'nod_north': 4}), ({'E': 3, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 0}, {'along_slit': 5, 'across_slit': 3, 'spatial_pixel': 12.5, 'nodded_along': 5, 'nod_east': 0, 'nod_north': 0}), ({'E': 3, 'N': 5, 's': 0, 'c': 1, 'a': -2, 'r': 0, 'q': 4}, {'along_slit': 5, 'across_slit': 3, 'spatial_pixel': -2.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4})], 2: [({'E': 4, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 5, 'across_slit': 4, 'spatial_pixel': 12.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4}), ({'E': 4, 'N': 5, 's': 1, 'c': 0, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 4, 'across_slit': -5, 'spatial_pixel': 12.0, 'nodded_along': 0, 'nod_east': 4, 'nod_north': 0}), ({'E': 4, 'N': 5, 's': 0, 'c': -1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': -5, 'across_slit': -4, 'spatial_pixel': 7.5, 'nodded_along': -9, 'nod_east': 0, 'nod_north': -4}), ({'E': 1, 'N': 0, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 0, 'across_slit': 1, 'spatial_pixel': 10.0, 'nodded_along': -4, 'nod_east': 0, 'nod_north': 4}), ({'E': 4, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 0}, {'along_slit': 5, 'across_slit': 4, 'spatial_pixel': 12.5, 'nodded_along': 5, 'nod_east': 0, 'nod_north': 0}), ({'E': 4, 'N': 5, 's': 0, 'c': 1, 'a': -2, 'r': 0, 'q': 4}, {'along_slit': 5, 'across_slit': 4, 'spatial_pixel': -2.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4})], 3: [({'E': 5, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 5, 'across_slit': 5, 'spatial_pixel': 12.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4}), ({'E': 5, 'N': 5, 's': 1, 'c': 0, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 5, 'across_slit': -5, 'spatial_pixel': 12.5, 'nodded_along': 1, 'nod_east': 4, 'nod_north': 0}), ({'E': 5, 'N': 5, 's': 0, 'c': -1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': -5, 'across_slit': -5, 'spatial_pixel': 7.5, 'nodded_along': -9, 'nod_east': 0, 'nod_north': -4}), ({'E': 2, 'N': 0, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 0, 'across_slit': 2, 'spatial_pixel': 10.0, 'nodded_along': -4, 'nod_east': 0, 'nod_north': 4}), ({'E': 5, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 0}, {'along_slit': 5, 'across_slit': 5, 'spatial_pixel': 12.5, 'nodded_along': 5, 'nod_east': 0, 'nod_north': 0}), ({'E': 5, 'N': 5, 's': 0, 'c': 1, 'a': -2, 'r': 0, 'q': 4}, {'along_slit': 5, 'across_slit': 5, 'spatial_pixel': -2.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4})], 4: [({'E': 6, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 5, 'across_slit': 6, 'spatial_pixel': 12.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4}), ({'E': 6, 'N': 5, 's': 1, 'c': 0, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 6, 'across_slit': -5, 'spatial_pixel': 13.0, 'nodded_along': 2, 'nod_east': 4, 'nod_north': 0}), ({'E': 6, 'N': 5, 's': 0, 'c': -1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': -5, 'across_slit': -6, 'spatial_pixel': 7.5, 'nodded_along': -9, 'nod_east': 0, 'nod_north': -4}), ({'E': 3, 'N': 0, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 0, 'across_slit': 3, 'spatial_pixel': 10.0, 'nodded_along': -4, 'nod_east': 0, 'nod_north': 4}), ({'E': 6, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 0}, {'along_slit': 5, 'across_slit': 6, 'spatial_pixel': 12.5, 'nodded_along': 5, 'nod_east': 0, 'nod_north': 0}), ({'E': 6, 'N': 5, 's': 0, 'c': 1, 'a': -2, 'r': 0, 'q': 4}, {'along_slit': 5, 'across_slit': 6, 'spatial_pixel': -2.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4})], 5: [({'E': 7, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 5, 'across_slit': 7, 'spatial_pixel': 12.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4}), ({'E': 7, 'N': 5, 's': 1, 'c': 0, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 7, 'across_slit': -5, 'spatial_pixel': 13.5, 'nodded_along': 3, 'nod_east': 4, 'nod_north': 0}), ({'E': 7, 'N': 5, 's': 0, 'c': -1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': -5, 'across_slit': -7, 'spatial_pixel': 7.5, 'nodded_along': -9, 'nod_east': 0, 'nod_north': -4}), ({'E': 4, 'N': 0, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 4}, {'along_slit': 0, 'across_slit': 4, 'spatial_pixel': 10.0, 'nodded_along': -4, 'nod_east': 0, 'nod_north': 4}), ({'E': 7, 'N': 5, 's': 0, 'c': 1, 'a': 2, 'r': 10, 'q': 0}, {'along_slit': 5, 'across_slit': 7, 'spatial_pixel': 12.5, 'nodded_along': 5, 'nod_east': 0, 'nod_north': 0}), ({'E': 7, 'N': 5, 's': 0, 'c': 1, 'a': -2, 'r': 0, 'q': 4}, {'along_slit': 5, 'across_slit': 7, 'spatial_pixel': -2.5, 'nodded_along': 1, 'nod_east': 0, 'nod_north': 4})]}\nfor i, (record, expected) in enumerate(fixtures[N]):\n    check('astronomical fixture %s' % i, solve(record), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"s3-astronomical-coordinate-conventions-slit-sky-coordinate-spatial_pixel","generated_at":"2026-09-29T14:46:01.327254+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Catalog, detector, sky-coordinate, and spectroscopy adapters must preserve the association between numeric coordinates and their declared reference conventions.","repair":"Preserve the declared model convention at this site: d['r']+(d['E']*d['s']+d['N']*d['c'])/d['a']","root_cause":"Slit sky-angle to detector mapping uses the plate scale in the wrong direction. Faulty expression: d['r']+(d['E']*d['s']+d['N']*d['c'])*d['a']","sha256":"e59a0219e4a50ce4201d7c3a12ca058afb2ca7c12cc3890e80dd4f07c241bc64","title":"Slit sky coordinate: Slit sky-angle to detector mapping uses the plate scale in the wrong direction · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.803,"exit_code":1,"observations":[{"actual":{"across_slit":3,"along_slit":5,"nod_east":0,"nod_north":4,"nodded_along":1,"spatial_pixel":2.5},"check":"astronomical fixture 0","expected":{"across_slit":3,"along_slit":5,"nod_east":0,"nod_north":4,"nodded_along":1,"spatial_pixel":12.5},"passed":false},{"actual":{"across_slit":-5,"along_slit":3,"nod_east":4,"nod_north":0,"nodded_along":-1,"spatial_pixel":1.5},"check":"astronomical fixture 1","expected":{"across_slit":-5,"along_slit":3,"nod_east":4,"nod_north":0,"nodded_along":-1,"spatial_pixel":11.5},"passed":false},{"actual":{"across_slit":-3,"along_slit":-5,"nod_east":0,"nod_north":-4,"nodded_along":-9,"spatial_pixel":-2.5},"check":"astronomical fixture 2","expected":{"across_slit":-3,"along_slit":-5,"nod_east":0,"nod_north":-4,"nodded_along":-9,"spatial_pixel":7.5},"passed":false},{"actual":{"across_slit":0,"along_slit":0,"nod_east":0,"nod_north":4,"nodded_along":-4,"spatial_pixel":0.0},"check":"astronomical fixture 3","expected":{"across_slit":0,"along_slit":0,"nod_east":0,"nod_north":4,"nodded_along":-4,"spatial_pixel":10.0},"passed":false},{"actual":{"across_slit":3,"along_slit":5,"nod_east":0,"nod_north":0,"nodded_along":5,"spatial_pixel":2.5},"check":"astronomical fixture 4","expected":{"across_slit":3,"along_slit":5,"nod_east":0,"nod_north":0,"nodded_along":5,"spatial_pixel":12.5},"passed":false},{"actual":{"across_slit":3,"along_slit":5,"nod_east":0,"nod_north":4,"nodded_along":1,"spatial_pixel":-2.5},"check":"astronomical fixture 5","expected":{"across_slit":3,"along_slit":5,"nod_east":0,"nod_north":4,"nodded_along":1,"spatial_pixel":-2.5},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"astronomical fixture 0\", \"actual\": {\"along_slit\": 5, \"across_slit\": 3, \"spatial_pixel\": 2.5, \"nodded_along\": 1, \"nod_east\": 0, \"nod_north\": 4}, \"expected\": {\"along_slit\": 5, \"across_slit\": 3, \"spatial_pixel\": 12.5, \"nodded_along\": 1, \"nod_east\": 0, \"nod_north\": 4}, \"passed\": false}, {\"check\": \"astronomical fixture 1\", \"actual\": {\"along_slit\": 3, \"across_slit\": -5, \"spatial_pixel\": 1.5, \"nodded_along\": -1, \"nod_east\": 4, \"nod_north\": 0}, \"expected\": {\"along_slit\": 3, \"across_slit\": -5, \"spatial_pixel\": 11.5, \"nodded_along\": -1, \"nod_east\": 4, \"nod_north\": 0}, \"passed\": false}, {\"check\": \"astronomical fixture 2\", \"actual\": {\"along_slit\": -5, \"across_slit\": -3, \"spatial_pixel\": -2.5, \"nodded_along\": -9, \"nod_east\": 0, \"nod_north\": -4}, \"expected\": {\"along_slit\": -5, \"across_slit\": -3, \"spatial_pixel\": 7.5, \"nodded_along\": -9, \"nod_east\": 0, \"nod_north\": -4}, \"passed\": false}, {\"check\": \"astronomical fixture 3\", \"actual\": {\"along_slit\": 0, \"across_slit\": 0, \"spatial_pixel\": 0.0, \"nodded_along\": -4, \"nod_east\": 0, \"nod_north\": 4}, \"expected\": {\"along_slit\": 0, \"across_slit\": 0, \"spatial_pixel\": 10.0, \"nodded_along\": -4, \"nod_east\": 0, \"nod_north\": 4}, \"passed\": false}, {\"check\": \"astronomical fixture 4\", \"actual\": {\"along_slit\": 5, \"across_slit\": 3, \"spatial_pixel\": 2.5, \"nodded_along\": 5, \"nod_east\": 0, \"nod_north\": 0}, \"expected\": {\"along_slit\": 5, \"across_slit\": 3, \"spatial_pixel\": 12.5, \"nodded_along\": 5, \"nod_east\": 0, \"nod_north\": 0}, \"passed\": false}, {\"check\": \"astronomical fixture 5\", \"actual\": {\"along_slit\": 5, \"across_slit\": 3, \"spatial_pixel\": -2.5, \"nodded_along\": 1, \"nod_east\": 0, \"nod_north\": 4}, \"expected\": {\"along_slit\": 5, \"across_slit\": 3, \"spatial_pixel\": -2.5, \"nodded_along\": 1, \"nod_east\": 0, \"nod_north\": 4}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.764,"exit_code":1,"observations":[{"actual":{"across_slit":3,"along_slit":5,"nod_east":0,"nod_north":4,"nodded_along":1,"spatial_pixel":20},"check":"astronomical fixture 0","expected":{"across_slit":3,"along_slit":5,"nod_east":0,"nod_north":4,"nodded_along":1,"spatial_pixel":12.5},"passed":false},{"actual":{"across_slit":-5,"along_slit":3,"nod_east":4,"nod_north":0,"nodded_along":-1,"spatial_pixel":16},"check":"astronomical fixture 1","expected":{"across_slit":-5,"along_slit":3,"nod_east":4,"nod_north":0,"nodded_along":-1,"spatial_pixel":11.5},"passed":false},{"actual":{"across_slit":-3,"along_slit":-5,"nod_east":0,"nod_north":-4,"nodded_along":-9,"spatial_pixel":0},"check":"astronomical fixture 2","expected":{"across_slit":-3,"along_slit":-5,"nod_east":0,"nod_north":-4,"nodded_along":-9,"spatial_pixel":7.5},"passed":false},{"actual":{"across_slit":0,"along_slit":0,"nod_east":0,"nod_north":4,"nodded_along":-4,"spatial_pixel":10},"check":"astronomical fixture 3","expected":{"across_slit":0,"along_slit":0,"nod_east":0,"nod_north":4,"nodded_along":-4,"spatial_pixel":10.0},"passed":true},{"actual":{"across_slit":3,"along_slit":5,"nod_east":0,"nod_north":0,"nodded_along":5,"spatial_pixel":20},"check":"astronomical fixture 4","expected":{"across_slit":3,"along_slit":5,"nod_east":0,"nod_north":0,"nodded_along":5,"spatial_pixel":12.5},"passed":false},{"actual":{"across_slit":3,"along_slit":5,"nod_east":0,"nod_north":4,"nodded_along":1,"spatial_pixel":-10},"check":"astronomical fixture 5","expected":{"across_slit":3,"along_slit":5,"nod_east":0,"nod_north":4,"nodded_along":1,"spatial_pixel":-2.5},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"astronomical fixture 0\", \"actual\": {\"along_slit\": 5, \"across_slit\": 3, \"spatial_pixel\": 20, \"nodded_along\": 1, \"nod_east\": 0, \"nod_north\": 4}, \"expected\": {\"along_slit\": 5, \"across_slit\": 3, \"spatial_pixel\": 12.5, \"nodded_along\": 1, \"nod_east\": 0, \"nod_north\": 4}, \"passed\": false}, {\"check\": \"astronomical fixture 1\", \"actual\": {\"along_slit\": 3, \"across_slit\": -5, \"spatial_pixel\": 16, \"nodded_along\": -1, \"nod_east\": 4, \"nod_north\": 0}, \"expected\": {\"along_slit\": 3, \"across_slit\": -5, \"spatial_pixel\": 11.5, \"nodded_along\": -1, \"nod_east\": 4, \"nod_north\": 0}, \"passed\": false}, {\"check\": \"astronomical fixture 2\", \"actual\": {\"along_slit\": -5, \"across_slit\": -3, \"spatial_pixel\": 0, \"nodded_along\": -9, \"nod_east\": 0, \"nod_north\": -4}, \"expected\": {\"along_slit\": -5, \"across_slit\": -3, \"spatial_pixel\": 7.5, \"nodded_along\": -9, \"nod_east\": 0, \"nod_north\": -4}, \"passed\": false}, {\"check\": \"astronomical fixture 3\", \"actual\": {\"along_slit\": 0, \"across_slit\": 0, \"spatial_pixel\": 10, \"nodded_along\": -4, \"nod_east\": 0, \"nod_north\": 4}, \"expected\": {\"along_slit\": 0, \"across_slit\": 0, \"spatial_pixel\": 10.0, \"nodded_along\": -4, \"nod_east\": 0, \"nod_north\": 4}, \"passed\": true}, {\"check\": \"astronomical fixture 4\", \"actual\": {\"along_slit\": 5, \"across_slit\": 3, \"spatial_pixel\": 20, \"nodded_along\": 5, \"nod_east\": 0, \"nod_north\": 0}, \"expected\": {\"along_slit\": 5, \"across_slit\": 3, \"spatial_pixel\": 12.5, \"nodded_along\": 5, \"nod_east\": 0, \"nod_north\": 0}, \"passed\": false}, {\"check\": \"astronomical fixture 5\", \"actual\": {\"along_slit\": 5, \"across_slit\": 3, \"spatial_pixel\": -10, \"nodded_along\": 1, \"nod_east\": 0, \"nod_north\": 4}, \"expected\": {\"along_slit\": 5, \"across_slit\": 3, \"spatial_pixel\": -2.5, \"nodded_along\": 1, \"nod_east\": 0, \"nod_north\": 4}, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.607,"exit_code":0,"observations":[{"actual":{"across_slit":3,"along_slit":5,"nod_east":0,"nod_north":4,"nodded_along":1,"spatial_pixel":12.5},"check":"astronomical fixture 0","expected":{"across_slit":3,"along_slit":5,"nod_east":0,"nod_north":4,"nodded_along":1,"spatial_pixel":12.5},"passed":true},{"actual":{"across_slit":-5,"along_slit":3,"nod_east":4,"nod_north":0,"nodded_along":-1,"spatial_pixel":11.5},"check":"astronomical fixture 1","expected":{"across_slit":-5,"along_slit":3,"nod_east":4,"nod_north":0,"nodded_along":-1,"spatial_pixel":11.5},"passed":true},{"actual":{"across_slit":-3,"along_slit":-5,"nod_east":0,"nod_north":-4,"nodded_along":-9,"spatial_pixel":7.5},"check":"astronomical fixture 2","expected":{"across_slit":-3,"along_slit":-5,"nod_east":0,"nod_north":-4,"nodded_along":-9,"spatial_pixel":7.5},"passed":true},{"actual":{"across_slit":0,"along_slit":0,"nod_east":0,"nod_north":4,"nodded_along":-4,"spatial_pixel":10.0},"check":"astronomical fixture 3","expected":{"across_slit":0,"along_slit":0,"nod_east":0,"nod_north":4,"nodded_along":-4,"spatial_pixel":10.0},"passed":true},{"actual":{"across_slit":3,"along_slit":5,"nod_east":0,"nod_north":0,"nodded_along":5,"spatial_pixel":12.5},"check":"astronomical fixture 4","expected":{"across_slit":3,"along_slit":5,"nod_east":0,"nod_north":0,"nodded_along":5,"spatial_pixel":12.5},"passed":true},{"actual":{"across_slit":3,"along_slit":5,"nod_east":0,"nod_north":4,"nodded_along":1,"spatial_pixel":-2.5},"check":"astronomical fixture 5","expected":{"across_slit":3,"along_slit":5,"nod_east":0,"nod_north":4,"nodded_along":1,"spatial_pixel":-2.5},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"astronomical fixture 0\", \"actual\": {\"along_slit\": 5, \"across_slit\": 3, \"spatial_pixel\": 12.5, \"nodded_along\": 1, \"nod_east\": 0, \"nod_north\": 4}, \"expected\": {\"along_slit\": 5, \"across_slit\": 3, \"spatial_pixel\": 12.5, \"nodded_along\": 1, \"nod_east\": 0, \"nod_north\": 4}, \"passed\": true}, {\"check\": \"astronomical fixture 1\", \"actual\": {\"along_slit\": 3, \"across_slit\": -5, \"spatial_pixel\": 11.5, \"nodded_along\": -1, \"nod_east\": 4, \"nod_north\": 0}, \"expected\": {\"along_slit\": 3, \"across_slit\": -5, \"spatial_pixel\": 11.5, \"nodded_along\": -1, \"nod_east\": 4, \"nod_north\": 0}, \"passed\": true}, {\"check\": \"astronomical fixture 2\", \"actual\": {\"along_slit\": -5, \"across_slit\": -3, \"spatial_pixel\": 7.5, \"nodded_along\": -9, \"nod_east\": 0, \"nod_north\": -4}, \"expected\": {\"along_slit\": -5, \"across_slit\": -3, \"spatial_pixel\": 7.5, \"nodded_along\": -9, \"nod_east\": 0, \"nod_north\": -4}, \"passed\": true}, {\"check\": \"astronomical fixture 3\", \"actual\": {\"along_slit\": 0, \"across_slit\": 0, \"spatial_pixel\": 10.0, \"nodded_along\": -4, \"nod_east\": 0, \"nod_north\": 4}, \"expected\": {\"along_slit\": 0, \"across_slit\": 0, \"spatial_pixel\": 10.0, \"nodded_along\": -4, \"nod_east\": 0, \"nod_north\": 4}, \"passed\": true}, {\"check\": \"astronomical fixture 4\", \"actual\": {\"along_slit\": 5, \"across_slit\": 3, \"spatial_pixel\": 12.5, \"nodded_along\": 5, \"nod_east\": 0, \"nod_north\": 0}, \"expected\": {\"along_slit\": 5, \"across_slit\": 3, \"spatial_pixel\": 12.5, \"nodded_along\": 5, \"nod_east\": 0, \"nod_north\": 0}, \"passed\": true}, {\"check\": \"astronomical fixture 5\", \"actual\": {\"along_slit\": 5, \"across_slit\": 3, \"spatial_pixel\": -2.5, \"nodded_along\": 1, \"nod_east\": 0, \"nod_north\": 4}, \"expected\": {\"along_slit\": 5, \"across_slit\": 3, \"spatial_pixel\": -2.5, \"nodded_along\": 1, \"nod_east\": 0, \"nod_north\": 4}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}