FA-55656 / Astronomical coordinate conventions / Open access
Spectral channel edges: Spectral channel support substitutes spacing for full instrumental width · case 01
The adapter reports an incorrect edges while other fields remain valid.
ROOT CAUSE
Spectral channel support substitutes spacing for full instrumental width. Faulty expression: [d['c0']+d['i']*d['d']-d['w'],d['c0']+d['i']*d['d']+d['w']]
VERIFIED REPAIR
Preserve the declared model convention at this site: [d['c0']+d['i']*d['d']-d['w']/2,d['c0']+d['i']*d['d']+d['w']/2]
Unsuccessful approach: A partial convention repair still uses [d['c0']+d['i']*d['d']-d['d']/2,d['c0']+d['i']*d['d']+d['d']/2]
Case contract
A spectral window has first center c0, signed center step d, integer channel i starting at zero, full width w>0, channel averaging factor b, and total n channels. Edges are always ascending world-coordinate values; averaging preserves the mean of contributing channel centers. Output fields are defined by: center = d['c0']+d['i']*d['d']; edges = [d['c0']+d['i']*d['d']-d['w']/2,d['c0']+d['i']*d['d']+d['w']/2]; averaged_center = d['c0']+(d['i']*d['b']+(d['b']-1)/2)*d['d']; averaged_step = d['b']*d['d']; window_center = d['c0']+(d['n']-1)*d['d']/2; window_extent = abs((d['n']-1)*d['d'])+d['w']
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 {'center': d['c0']+d['i']*d['d'], 'edges': [d['c0']+d['i']*d['d']-d['w'],d['c0']+d['i']*d['d']+d['w']], 'averaged_center': d['c0']+(d['i']*d['b']+(d['b']-1)/2)*d['d'], 'averaged_step': d['b']*d['d'], 'window_center': d['c0']+(d['n']-1)*d['d']/2, 'window_extent': abs((d['n']-1)*d['d'])+d['w']}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'c0': 100, 'd': 4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 108, 'edges': [106.5, 109.5], 'averaged_center': 118.0, 'averaged_step': 8, 'window_center': 114.0, 'window_extent': 31}), ({'c0': 100, 'd': -4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 92, 'edges': [90.5, 93.5], 'averaged_center': 82.0, 'averaged_step': -8, 'window_center': 86.0, 'window_extent': 31}), ({'c0': 100, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 8}, {'center': 100, 'edges': [98.5, 101.5], 'averaged_center': 102.0, 'averaged_step': 8, 'window_center': 114.0, 'window_extent': 31}), ({'c0': 100, 'd': 4, 'i': 2, 'w': 3, 'b': 1, 'n': 8}, {'center': 108, 'edges': [106.5, 109.5], 'averaged_center': 108.0, 'averaged_step': 4, 'window_center': 114.0, 'window_extent': 31}), ({'c0': 100, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 1}, {'center': 100, 'edges': [98.5, 101.5], 'averaged_center': 102.0, 'averaged_step': 8, 'window_center': 100.0, 'window_extent': 3}), ({'c0': 100, 'd': 2, 'i': 2, 'w': 8, 'b': 2, 'n': 8}, {'center': 104, 'edges': [100.0, 108.0], 'averaged_center': 109.0, 'averaged_step': 4, 'window_center': 107.0, 'window_extent': 22})], 2: [({'c0': 101, 'd': 4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 109, 'edges': [107.5, 110.5], 'averaged_center': 119.0, 'averaged_step': 8, 'window_center': 115.0, 'window_extent': 31}), ({'c0': 101, 'd': -4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 93, 'edges': [91.5, 94.5], 'averaged_center': 83.0, 'averaged_step': -8, 'window_center': 87.0, 'window_extent': 31}), ({'c0': 101, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 8}, {'center': 101, 'edges': [99.5, 102.5], 'averaged_center': 103.0, 'averaged_step': 8, 'window_center': 115.0, 'window_extent': 31}), ({'c0': 101, 'd': 4, 'i': 2, 'w': 3, 'b': 1, 'n': 8}, {'center': 109, 'edges': [107.5, 110.5], 'averaged_center': 109.0, 'averaged_step': 4, 'window_center': 115.0, 'window_extent': 31}), ({'c0': 101, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 1}, {'center': 101, 'edges': [99.5, 102.5], 'averaged_center': 103.0, 'averaged_step': 8, 'window_center': 101.0, 'window_extent': 3}), ({'c0': 101, 'd': 2, 'i': 2, 'w': 8, 'b': 2, 'n': 8}, {'center': 105, 'edges': [101.0, 109.0], 'averaged_center': 110.0, 'averaged_step': 4, 'window_center': 108.0, 'window_extent': 22})], 3: [({'c0': 102, 'd': 4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 110, 'edges': [108.5, 111.5], 'averaged_center': 120.0, 'averaged_step': 8, 'window_center': 116.0, 'window_extent': 31}), ({'c0': 102, 'd': -4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 94, 'edges': [92.5, 95.5], 'averaged_center': 84.0, 'averaged_step': -8, 'window_center': 88.0, 'window_extent': 31}), ({'c0': 102, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 8}, {'center': 102, 'edges': [100.5, 103.5], 'averaged_center': 104.0, 'averaged_step': 8, 'window_center': 116.0, 'window_extent': 31}), ({'c0': 102, 'd': 4, 'i': 2, 'w': 3, 'b': 1, 'n': 8}, {'center': 110, 'edges': [108.5, 111.5], 'averaged_center': 110.0, 'averaged_step': 4, 'window_center': 116.0, 'window_extent': 31}), ({'c0': 102, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 1}, {'center': 102, 'edges': [100.5, 103.5], 'averaged_center': 104.0, 'averaged_step': 8, 'window_center': 102.0, 'window_extent': 3}), ({'c0': 102, 'd': 2, 'i': 2, 'w': 8, 'b': 2, 'n': 8}, {'center': 106, 'edges': [102.0, 110.0], 'averaged_center': 111.0, 'averaged_step': 4, 'window_center': 109.0, 'window_extent': 22})], 4: [({'c0': 103, 'd': 4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 111, 'edges': [109.5, 112.5], 'averaged_center': 121.0, 'averaged_step': 8, 'window_center': 117.0, 'window_extent': 31}), ({'c0': 103, 'd': -4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 95, 'edges': [93.5, 96.5], 'averaged_center': 85.0, 'averaged_step': -8, 'window_center': 89.0, 'window_extent': 31}), ({'c0': 103, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 8}, {'center': 103, 'edges': [101.5, 104.5], 'averaged_center': 105.0, 'averaged_step': 8, 'window_center': 117.0, 'window_extent': 31}), ({'c0': 103, 'd': 4, 'i': 2, 'w': 3, 'b': 1, 'n': 8}, {'center': 111, 'edges': [109.5, 112.5], 'averaged_center': 111.0, 'averaged_step': 4, 'window_center': 117.0, 'window_extent': 31}), ({'c0': 103, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 1}, {'center': 103, 'edges': [101.5, 104.5], 'averaged_center': 105.0, 'averaged_step': 8, 'window_center': 103.0, 'window_extent': 3}), ({'c0': 103, 'd': 2, 'i': 2, 'w': 8, 'b': 2, 'n': 8}, {'center': 107, 'edges': [103.0, 111.0], 'averaged_center': 112.0, 'averaged_step': 4, 'window_center': 110.0, 'window_extent': 22})], 5: [({'c0': 104, 'd': 4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 112, 'edges': [110.5, 113.5], 'averaged_center': 122.0, 'averaged_step': 8, 'window_center': 118.0, 'window_extent': 31}), ({'c0': 104, 'd': -4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 96, 'edges': [94.5, 97.5], 'averaged_center': 86.0, 'averaged_step': -8, 'window_center': 90.0, 'window_extent': 31}), ({'c0': 104, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 8}, {'center': 104, 'edges': [102.5, 105.5], 'averaged_center': 106.0, 'averaged_step': 8, 'window_center': 118.0, 'window_extent': 31}), ({'c0': 104, 'd': 4, 'i': 2, 'w': 3, 'b': 1, 'n': 8}, {'center': 112, 'edges': [110.5, 113.5], 'averaged_center': 112.0, 'averaged_step': 4, 'window_center': 118.0, 'window_extent': 31}), ({'c0': 104, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 1}, {'center': 104, 'edges': [102.5, 105.5], 'averaged_center': 106.0, 'averaged_step': 8, 'window_center': 104.0, 'window_extent': 3}), ({'c0': 104, 'd': 2, 'i': 2, 'w': 8, 'b': 2, 'n': 8}, {'center': 108, 'edges': [104.0, 112.0], 'averaged_center': 113.0, 'averaged_step': 4, 'window_center': 111.0, 'window_extent': 22})]}
for i, (record, expected) in enumerate(fixtures[N]):
check('astronomical fixture %s' % i, solve(record), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| astronomical fixture 0 | {'averaged_center': 118.0, 'averaged_step': 8, 'center': 108, 'edges': [105, 111], 'window_center': 114.0, 'window_extent': 31} | {'averaged_center': 118.0, 'averaged_step': 8, 'center': 108, 'edges': [106.5, 109.5], 'window_center': 114.0, 'window_extent': 31} | Failed |
| astronomical fixture 1 | {'averaged_center': 82.0, 'averaged_step': -8, 'center': 92, 'edges': [89, 95], 'window_center': 86.0, 'window_extent': 31} | {'averaged_center': 82.0, 'averaged_step': -8, 'center': 92, 'edges': [90.5, 93.5], 'window_center': 86.0, 'window_extent': 31} | Failed |
| astronomical fixture 2 | {'averaged_center': 102.0, 'averaged_step': 8, 'center': 100, 'edges': [97, 103], 'window_center': 114.0, 'window_extent': 31} | {'averaged_center': 102.0, 'averaged_step': 8, 'center': 100, 'edges': [98.5, 101.5], 'window_center': 114.0, 'window_extent': 31} | Failed |
| astronomical fixture 3 | {'averaged_center': 108.0, 'averaged_step': 4, 'center': 108, 'edges': [105, 111], 'window_center': 114.0, 'window_extent': 31} | {'averaged_center': 108.0, 'averaged_step': 4, 'center': 108, 'edges': [106.5, 109.5], 'window_center': 114.0, 'window_extent': 31} | Failed |
| astronomical fixture 4 | {'averaged_center': 102.0, 'averaged_step': 8, 'center': 100, 'edges': [97, 103], 'window_center': 100.0, 'window_extent': 3} | {'averaged_center': 102.0, 'averaged_step': 8, 'center': 100, 'edges': [98.5, 101.5], 'window_center': 100.0, 'window_extent': 3} | Failed |
| astronomical fixture 5 | {'averaged_center': 109.0, 'averaged_step': 4, 'center': 104, 'edges': [96, 112], 'window_center': 107.0, 'window_extent': 22} | {'averaged_center': 109.0, 'averaged_step': 4, 'center': 104, 'edges': [100.0, 108.0], 'window_center': 107.0, 'window_extent': 22} | Failed |
SHA-256 / cafcf2d4c47ca4f708bc0e6ce1e97c439a323bb439313a6d0ddc13618c7602c2
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
return {'center': d['c0']+d['i']*d['d'], 'edges': [d['c0']+d['i']*d['d']-d['d']/2,d['c0']+d['i']*d['d']+d['d']/2], 'averaged_center': d['c0']+(d['i']*d['b']+(d['b']-1)/2)*d['d'], 'averaged_step': d['b']*d['d'], 'window_center': d['c0']+(d['n']-1)*d['d']/2, 'window_extent': abs((d['n']-1)*d['d'])+d['w']}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'c0': 100, 'd': 4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 108, 'edges': [106.5, 109.5], 'averaged_center': 118.0, 'averaged_step': 8, 'window_center': 114.0, 'window_extent': 31}), ({'c0': 100, 'd': -4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 92, 'edges': [90.5, 93.5], 'averaged_center': 82.0, 'averaged_step': -8, 'window_center': 86.0, 'window_extent': 31}), ({'c0': 100, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 8}, {'center': 100, 'edges': [98.5, 101.5], 'averaged_center': 102.0, 'averaged_step': 8, 'window_center': 114.0, 'window_extent': 31}), ({'c0': 100, 'd': 4, 'i': 2, 'w': 3, 'b': 1, 'n': 8}, {'center': 108, 'edges': [106.5, 109.5], 'averaged_center': 108.0, 'averaged_step': 4, 'window_center': 114.0, 'window_extent': 31}), ({'c0': 100, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 1}, {'center': 100, 'edges': [98.5, 101.5], 'averaged_center': 102.0, 'averaged_step': 8, 'window_center': 100.0, 'window_extent': 3}), ({'c0': 100, 'd': 2, 'i': 2, 'w': 8, 'b': 2, 'n': 8}, {'center': 104, 'edges': [100.0, 108.0], 'averaged_center': 109.0, 'averaged_step': 4, 'window_center': 107.0, 'window_extent': 22})], 2: [({'c0': 101, 'd': 4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 109, 'edges': [107.5, 110.5], 'averaged_center': 119.0, 'averaged_step': 8, 'window_center': 115.0, 'window_extent': 31}), ({'c0': 101, 'd': -4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 93, 'edges': [91.5, 94.5], 'averaged_center': 83.0, 'averaged_step': -8, 'window_center': 87.0, 'window_extent': 31}), ({'c0': 101, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 8}, {'center': 101, 'edges': [99.5, 102.5], 'averaged_center': 103.0, 'averaged_step': 8, 'window_center': 115.0, 'window_extent': 31}), ({'c0': 101, 'd': 4, 'i': 2, 'w': 3, 'b': 1, 'n': 8}, {'center': 109, 'edges': [107.5, 110.5], 'averaged_center': 109.0, 'averaged_step': 4, 'window_center': 115.0, 'window_extent': 31}), ({'c0': 101, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 1}, {'center': 101, 'edges': [99.5, 102.5], 'averaged_center': 103.0, 'averaged_step': 8, 'window_center': 101.0, 'window_extent': 3}), ({'c0': 101, 'd': 2, 'i': 2, 'w': 8, 'b': 2, 'n': 8}, {'center': 105, 'edges': [101.0, 109.0], 'averaged_center': 110.0, 'averaged_step': 4, 'window_center': 108.0, 'window_extent': 22})], 3: [({'c0': 102, 'd': 4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 110, 'edges': [108.5, 111.5], 'averaged_center': 120.0, 'averaged_step': 8, 'window_center': 116.0, 'window_extent': 31}), ({'c0': 102, 'd': -4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 94, 'edges': [92.5, 95.5], 'averaged_center': 84.0, 'averaged_step': -8, 'window_center': 88.0, 'window_extent': 31}), ({'c0': 102, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 8}, {'center': 102, 'edges': [100.5, 103.5], 'averaged_center': 104.0, 'averaged_step': 8, 'window_center': 116.0, 'window_extent': 31}), ({'c0': 102, 'd': 4, 'i': 2, 'w': 3, 'b': 1, 'n': 8}, {'center': 110, 'edges': [108.5, 111.5], 'averaged_center': 110.0, 'averaged_step': 4, 'window_center': 116.0, 'window_extent': 31}), ({'c0': 102, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 1}, {'center': 102, 'edges': [100.5, 103.5], 'averaged_center': 104.0, 'averaged_step': 8, 'window_center': 102.0, 'window_extent': 3}), ({'c0': 102, 'd': 2, 'i': 2, 'w': 8, 'b': 2, 'n': 8}, {'center': 106, 'edges': [102.0, 110.0], 'averaged_center': 111.0, 'averaged_step': 4, 'window_center': 109.0, 'window_extent': 22})], 4: [({'c0': 103, 'd': 4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 111, 'edges': [109.5, 112.5], 'averaged_center': 121.0, 'averaged_step': 8, 'window_center': 117.0, 'window_extent': 31}), ({'c0': 103, 'd': -4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 95, 'edges': [93.5, 96.5], 'averaged_center': 85.0, 'averaged_step': -8, 'window_center': 89.0, 'window_extent': 31}), ({'c0': 103, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 8}, {'center': 103, 'edges': [101.5, 104.5], 'averaged_center': 105.0, 'averaged_step': 8, 'window_center': 117.0, 'window_extent': 31}), ({'c0': 103, 'd': 4, 'i': 2, 'w': 3, 'b': 1, 'n': 8}, {'center': 111, 'edges': [109.5, 112.5], 'averaged_center': 111.0, 'averaged_step': 4, 'window_center': 117.0, 'window_extent': 31}), ({'c0': 103, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 1}, {'center': 103, 'edges': [101.5, 104.5], 'averaged_center': 105.0, 'averaged_step': 8, 'window_center': 103.0, 'window_extent': 3}), ({'c0': 103, 'd': 2, 'i': 2, 'w': 8, 'b': 2, 'n': 8}, {'center': 107, 'edges': [103.0, 111.0], 'averaged_center': 112.0, 'averaged_step': 4, 'window_center': 110.0, 'window_extent': 22})], 5: [({'c0': 104, 'd': 4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 112, 'edges': [110.5, 113.5], 'averaged_center': 122.0, 'averaged_step': 8, 'window_center': 118.0, 'window_extent': 31}), ({'c0': 104, 'd': -4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 96, 'edges': [94.5, 97.5], 'averaged_center': 86.0, 'averaged_step': -8, 'window_center': 90.0, 'window_extent': 31}), ({'c0': 104, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 8}, {'center': 104, 'edges': [102.5, 105.5], 'averaged_center': 106.0, 'averaged_step': 8, 'window_center': 118.0, 'window_extent': 31}), ({'c0': 104, 'd': 4, 'i': 2, 'w': 3, 'b': 1, 'n': 8}, {'center': 112, 'edges': [110.5, 113.5], 'averaged_center': 112.0, 'averaged_step': 4, 'window_center': 118.0, 'window_extent': 31}), ({'c0': 104, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 1}, {'center': 104, 'edges': [102.5, 105.5], 'averaged_center': 106.0, 'averaged_step': 8, 'window_center': 104.0, 'window_extent': 3}), ({'c0': 104, 'd': 2, 'i': 2, 'w': 8, 'b': 2, 'n': 8}, {'center': 108, 'edges': [104.0, 112.0], 'averaged_center': 113.0, 'averaged_step': 4, 'window_center': 111.0, 'window_extent': 22})]}
for i, (record, expected) in enumerate(fixtures[N]):
check('astronomical fixture %s' % i, solve(record), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| astronomical fixture 0 | {'averaged_center': 118.0, 'averaged_step': 8, 'center': 108, 'edges': [106.0, 110.0], 'window_center': 114.0, 'window_extent': 31} | {'averaged_center': 118.0, 'averaged_step': 8, 'center': 108, 'edges': [106.5, 109.5], 'window_center': 114.0, 'window_extent': 31} | Failed |
| astronomical fixture 1 | {'averaged_center': 82.0, 'averaged_step': -8, 'center': 92, 'edges': [94.0, 90.0], 'window_center': 86.0, 'window_extent': 31} | {'averaged_center': 82.0, 'averaged_step': -8, 'center': 92, 'edges': [90.5, 93.5], 'window_center': 86.0, 'window_extent': 31} | Failed |
| astronomical fixture 2 | {'averaged_center': 102.0, 'averaged_step': 8, 'center': 100, 'edges': [98.0, 102.0], 'window_center': 114.0, 'window_extent': 31} | {'averaged_center': 102.0, 'averaged_step': 8, 'center': 100, 'edges': [98.5, 101.5], 'window_center': 114.0, 'window_extent': 31} | Failed |
| astronomical fixture 3 | {'averaged_center': 108.0, 'averaged_step': 4, 'center': 108, 'edges': [106.0, 110.0], 'window_center': 114.0, 'window_extent': 31} | {'averaged_center': 108.0, 'averaged_step': 4, 'center': 108, 'edges': [106.5, 109.5], 'window_center': 114.0, 'window_extent': 31} | Failed |
| astronomical fixture 4 | {'averaged_center': 102.0, 'averaged_step': 8, 'center': 100, 'edges': [98.0, 102.0], 'window_center': 100.0, 'window_extent': 3} | {'averaged_center': 102.0, 'averaged_step': 8, 'center': 100, 'edges': [98.5, 101.5], 'window_center': 100.0, 'window_extent': 3} | Failed |
| astronomical fixture 5 | {'averaged_center': 109.0, 'averaged_step': 4, 'center': 104, 'edges': [103.0, 105.0], 'window_center': 107.0, 'window_extent': 22} | {'averaged_center': 109.0, 'averaged_step': 4, 'center': 104, 'edges': [100.0, 108.0], 'window_center': 107.0, 'window_extent': 22} | Failed |
SHA-256 / 00773d12982f76fd64eff3e25822d20f16f4cbb9fc9c430460176f0c0d00ea3f
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
return {'center': d['c0']+d['i']*d['d'], 'edges': [d['c0']+d['i']*d['d']-d['w']/2,d['c0']+d['i']*d['d']+d['w']/2], 'averaged_center': d['c0']+(d['i']*d['b']+(d['b']-1)/2)*d['d'], 'averaged_step': d['b']*d['d'], 'window_center': d['c0']+(d['n']-1)*d['d']/2, 'window_extent': abs((d['n']-1)*d['d'])+d['w']}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'c0': 100, 'd': 4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 108, 'edges': [106.5, 109.5], 'averaged_center': 118.0, 'averaged_step': 8, 'window_center': 114.0, 'window_extent': 31}), ({'c0': 100, 'd': -4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 92, 'edges': [90.5, 93.5], 'averaged_center': 82.0, 'averaged_step': -8, 'window_center': 86.0, 'window_extent': 31}), ({'c0': 100, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 8}, {'center': 100, 'edges': [98.5, 101.5], 'averaged_center': 102.0, 'averaged_step': 8, 'window_center': 114.0, 'window_extent': 31}), ({'c0': 100, 'd': 4, 'i': 2, 'w': 3, 'b': 1, 'n': 8}, {'center': 108, 'edges': [106.5, 109.5], 'averaged_center': 108.0, 'averaged_step': 4, 'window_center': 114.0, 'window_extent': 31}), ({'c0': 100, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 1}, {'center': 100, 'edges': [98.5, 101.5], 'averaged_center': 102.0, 'averaged_step': 8, 'window_center': 100.0, 'window_extent': 3}), ({'c0': 100, 'd': 2, 'i': 2, 'w': 8, 'b': 2, 'n': 8}, {'center': 104, 'edges': [100.0, 108.0], 'averaged_center': 109.0, 'averaged_step': 4, 'window_center': 107.0, 'window_extent': 22})], 2: [({'c0': 101, 'd': 4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 109, 'edges': [107.5, 110.5], 'averaged_center': 119.0, 'averaged_step': 8, 'window_center': 115.0, 'window_extent': 31}), ({'c0': 101, 'd': -4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 93, 'edges': [91.5, 94.5], 'averaged_center': 83.0, 'averaged_step': -8, 'window_center': 87.0, 'window_extent': 31}), ({'c0': 101, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 8}, {'center': 101, 'edges': [99.5, 102.5], 'averaged_center': 103.0, 'averaged_step': 8, 'window_center': 115.0, 'window_extent': 31}), ({'c0': 101, 'd': 4, 'i': 2, 'w': 3, 'b': 1, 'n': 8}, {'center': 109, 'edges': [107.5, 110.5], 'averaged_center': 109.0, 'averaged_step': 4, 'window_center': 115.0, 'window_extent': 31}), ({'c0': 101, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 1}, {'center': 101, 'edges': [99.5, 102.5], 'averaged_center': 103.0, 'averaged_step': 8, 'window_center': 101.0, 'window_extent': 3}), ({'c0': 101, 'd': 2, 'i': 2, 'w': 8, 'b': 2, 'n': 8}, {'center': 105, 'edges': [101.0, 109.0], 'averaged_center': 110.0, 'averaged_step': 4, 'window_center': 108.0, 'window_extent': 22})], 3: [({'c0': 102, 'd': 4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 110, 'edges': [108.5, 111.5], 'averaged_center': 120.0, 'averaged_step': 8, 'window_center': 116.0, 'window_extent': 31}), ({'c0': 102, 'd': -4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 94, 'edges': [92.5, 95.5], 'averaged_center': 84.0, 'averaged_step': -8, 'window_center': 88.0, 'window_extent': 31}), ({'c0': 102, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 8}, {'center': 102, 'edges': [100.5, 103.5], 'averaged_center': 104.0, 'averaged_step': 8, 'window_center': 116.0, 'window_extent': 31}), ({'c0': 102, 'd': 4, 'i': 2, 'w': 3, 'b': 1, 'n': 8}, {'center': 110, 'edges': [108.5, 111.5], 'averaged_center': 110.0, 'averaged_step': 4, 'window_center': 116.0, 'window_extent': 31}), ({'c0': 102, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 1}, {'center': 102, 'edges': [100.5, 103.5], 'averaged_center': 104.0, 'averaged_step': 8, 'window_center': 102.0, 'window_extent': 3}), ({'c0': 102, 'd': 2, 'i': 2, 'w': 8, 'b': 2, 'n': 8}, {'center': 106, 'edges': [102.0, 110.0], 'averaged_center': 111.0, 'averaged_step': 4, 'window_center': 109.0, 'window_extent': 22})], 4: [({'c0': 103, 'd': 4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 111, 'edges': [109.5, 112.5], 'averaged_center': 121.0, 'averaged_step': 8, 'window_center': 117.0, 'window_extent': 31}), ({'c0': 103, 'd': -4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 95, 'edges': [93.5, 96.5], 'averaged_center': 85.0, 'averaged_step': -8, 'window_center': 89.0, 'window_extent': 31}), ({'c0': 103, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 8}, {'center': 103, 'edges': [101.5, 104.5], 'averaged_center': 105.0, 'averaged_step': 8, 'window_center': 117.0, 'window_extent': 31}), ({'c0': 103, 'd': 4, 'i': 2, 'w': 3, 'b': 1, 'n': 8}, {'center': 111, 'edges': [109.5, 112.5], 'averaged_center': 111.0, 'averaged_step': 4, 'window_center': 117.0, 'window_extent': 31}), ({'c0': 103, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 1}, {'center': 103, 'edges': [101.5, 104.5], 'averaged_center': 105.0, 'averaged_step': 8, 'window_center': 103.0, 'window_extent': 3}), ({'c0': 103, 'd': 2, 'i': 2, 'w': 8, 'b': 2, 'n': 8}, {'center': 107, 'edges': [103.0, 111.0], 'averaged_center': 112.0, 'averaged_step': 4, 'window_center': 110.0, 'window_extent': 22})], 5: [({'c0': 104, 'd': 4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 112, 'edges': [110.5, 113.5], 'averaged_center': 122.0, 'averaged_step': 8, 'window_center': 118.0, 'window_extent': 31}), ({'c0': 104, 'd': -4, 'i': 2, 'w': 3, 'b': 2, 'n': 8}, {'center': 96, 'edges': [94.5, 97.5], 'averaged_center': 86.0, 'averaged_step': -8, 'window_center': 90.0, 'window_extent': 31}), ({'c0': 104, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 8}, {'center': 104, 'edges': [102.5, 105.5], 'averaged_center': 106.0, 'averaged_step': 8, 'window_center': 118.0, 'window_extent': 31}), ({'c0': 104, 'd': 4, 'i': 2, 'w': 3, 'b': 1, 'n': 8}, {'center': 112, 'edges': [110.5, 113.5], 'averaged_center': 112.0, 'averaged_step': 4, 'window_center': 118.0, 'window_extent': 31}), ({'c0': 104, 'd': 4, 'i': 0, 'w': 3, 'b': 2, 'n': 1}, {'center': 104, 'edges': [102.5, 105.5], 'averaged_center': 106.0, 'averaged_step': 8, 'window_center': 104.0, 'window_extent': 3}), ({'c0': 104, 'd': 2, 'i': 2, 'w': 8, 'b': 2, 'n': 8}, {'center': 108, 'edges': [104.0, 112.0], 'averaged_center': 113.0, 'averaged_step': 4, 'window_center': 111.0, 'window_extent': 22})]}
for i, (record, expected) in enumerate(fixtures[N]):
check('astronomical fixture %s' % i, solve(record), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| astronomical fixture 0 | {'averaged_center': 118.0, 'averaged_step': 8, 'center': 108, 'edges': [106.5, 109.5], 'window_center': 114.0, 'window_extent': 31} | {'averaged_center': 118.0, 'averaged_step': 8, 'center': 108, 'edges': [106.5, 109.5], 'window_center': 114.0, 'window_extent': 31} | Passed |
| astronomical fixture 1 | {'averaged_center': 82.0, 'averaged_step': -8, 'center': 92, 'edges': [90.5, 93.5], 'window_center': 86.0, 'window_extent': 31} | {'averaged_center': 82.0, 'averaged_step': -8, 'center': 92, 'edges': [90.5, 93.5], 'window_center': 86.0, 'window_extent': 31} | Passed |
| astronomical fixture 2 | {'averaged_center': 102.0, 'averaged_step': 8, 'center': 100, 'edges': [98.5, 101.5], 'window_center': 114.0, 'window_extent': 31} | {'averaged_center': 102.0, 'averaged_step': 8, 'center': 100, 'edges': [98.5, 101.5], 'window_center': 114.0, 'window_extent': 31} | Passed |
| astronomical fixture 3 | {'averaged_center': 108.0, 'averaged_step': 4, 'center': 108, 'edges': [106.5, 109.5], 'window_center': 114.0, 'window_extent': 31} | {'averaged_center': 108.0, 'averaged_step': 4, 'center': 108, 'edges': [106.5, 109.5], 'window_center': 114.0, 'window_extent': 31} | Passed |
| astronomical fixture 4 | {'averaged_center': 102.0, 'averaged_step': 8, 'center': 100, 'edges': [98.5, 101.5], 'window_center': 100.0, 'window_extent': 3} | {'averaged_center': 102.0, 'averaged_step': 8, 'center': 100, 'edges': [98.5, 101.5], 'window_center': 100.0, 'window_extent': 3} | Passed |
| astronomical fixture 5 | {'averaged_center': 109.0, 'averaged_step': 4, 'center': 104, 'edges': [100.0, 108.0], 'window_center': 107.0, 'window_extent': 22} | {'averaged_center': 109.0, 'averaged_step': 4, 'center': 104, 'edges': [100.0, 108.0], 'window_center': 107.0, 'window_extent': 22} | Passed |
SHA-256 / a9d0a7962a371d3935df31ba96bbbc7dbde0495715ee41da5449dd15764d6692
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:45:59.858910+00:00.
Case digest / d03b2a2de30061ec811d25f61a9832fd5ed75bf6045ca7fcd09cf086ba5bb6cb