{"abstract":"The adapter reports an incorrect nod north 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['q']*d['c']","family":"s3-astronomical-coordinate-conventions-slit-sky-coordinate-nod_north","id":"FA-55826","implementations":{"attempt":{"sha256":"31e57cce1dca5a9b8dc6527ef8a0ab26c9bd9b34f10be44541bb7fb8175aaccc","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"},"broken":{"sha256":"005e241a0d5e4682be35bf5215d35613e3361e9180e7bce3d82503a72326629f","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['s']}\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-nod_north","generated_at":"2026-09-29T14:46:01.406135+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['q']*d['c']","root_cause":"Along-slit nod is projected onto north with a detector-axis angle convention. Faulty expression: d['q']*d['s']","sha256":"1c12d4ea7191742ccc300b43dc6efbfa0280351f7f49bc31970e75560a62ba90","title":"Slit sky coordinate: Along-slit nod is projected onto north with a detector-axis angle convention · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.343,"exit_code":1,"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":false},{"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":false},{"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":false},{"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":false}],"passed":false,"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\": false}, {\"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\": false}, {\"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\": false}, {\"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\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.132,"exit_code":1,"observations":[{"actual":{"across_slit":3,"along_slit":5,"nod_east":0,"nod_north":0,"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":false},{"actual":{"across_slit":-5,"along_slit":3,"nod_east":4,"nod_north":4,"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":false},{"actual":{"across_slit":-3,"along_slit":-5,"nod_east":0,"nod_north":0,"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":false},{"actual":{"across_slit":0,"along_slit":0,"nod_east":0,"nod_north":0,"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":false},{"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":0,"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":false}],"passed":false,"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\": 0}, \"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\": 11.5, \"nodded_along\": -1, \"nod_east\": 4, \"nod_north\": 4}, \"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\": 7.5, \"nodded_along\": -9, \"nod_east\": 0, \"nod_north\": 0}, \"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.0, \"nodded_along\": -4, \"nod_east\": 0, \"nod_north\": 0}, \"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\": 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\": 0}, \"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":40.111,"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"}