FA-55666 / Astronomical coordinate conventions / Open access
Spectral channel edges: Averaged spectral channel step loses the original orientation · case 01
The adapter reports an incorrect averaged step while other fields remain valid.
ROOT CAUSE
Averaged spectral channel step loses the original orientation. Faulty expression: d['d']/d['b']
VERIFIED REPAIR
Preserve the declared model convention at this site: d['b']*d['d']
Unsuccessful approach: A partial convention repair still uses abs(d['b']*d['d'])
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']/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['d']/d['b'], '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': 2.0, '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} | Failed |
| astronomical fixture 1 | {'averaged_center': 82.0, 'averaged_step': -2.0, '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} | Failed |
| astronomical fixture 2 | {'averaged_center': 102.0, 'averaged_step': 2.0, '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} | Failed |
| astronomical fixture 3 | {'averaged_center': 108.0, 'averaged_step': 4.0, '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': 2.0, '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} | Failed |
| astronomical fixture 5 | {'averaged_center': 109.0, 'averaged_step': 1.0, '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} | Failed |
SHA-256 / 0f2937047ebea0977f62c66c87fcb9d9aad0492770bea321ebe0464cce089f4a
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['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': abs(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} | Failed |
| 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 / 881e1abfeb94758a3536a354c4a9787caa1d3e417d27b0b1919cf628b894eb19
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.858878+00:00.
Case digest / 19bebbd16d4bc02d32504bf3f6efe03f64797c3aa1c671ee9465268893ae82d8