FA-78856 / Image orientation metadata / Open access
Pixel bake applies a half turn for transverse tags · case 01
Tag-7 images keep swapped dimensions but their content is a 180 degree turn instead of an anti-diagonal flip.
ROOT CAUSE
The tag-7 branch reuses the tag-3 index pattern with rows and columns in stored order.
VERIFIED REPAIR
Index grid[h-1-c][w-1-r]: the output row walks stored columns backwards and the output column walks stored rows backwards.
Unsuccessful approach: Keeping only the row reversal turns the transverse into a clockwise quarter turn.
Case contract
Bake an EXIF-style orientation tag (1..8) into a row-major pixel grid so the result displays upright. Tags 2/4 mirror horizontally/vertically, 3 rotates 180, 6 rotates 90 clockwise, 8 rotates 90 counter-clockwise, 5 transposes and 7 transverses; tags outside 1..8 are treated as 1. Tags 5..8 swap the output width and height.
Why this case matters
Camera, phone and scanner images carry an orientation hint separately from the stored pixels; galleries, thumbnailers, editors and upload pipelines must interpret it consistently or photos appear sideways, mirrored or doubly rotated.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(grid, tag):
h = len(grid)
w = len(grid[0]) if h else 0
if tag not in range(1, 9):
tag = 1
if tag in (5, 6, 7, 8):
out_h, out_w = w, h
else:
out_h, out_w = h, w
out = []
for r in range(out_h):
row = []
for c in range(out_w):
if tag == 1:
v = grid[r][c]
elif tag == 2:
v = grid[r][w - 1 - c]
elif tag == 3:
v = grid[h - 1 - r][w - 1 - c]
elif tag == 4:
v = grid[h - 1 - r][c]
elif tag == 5:
v = grid[c][r]
elif tag == 6:
v = grid[h - 1 - c][r]
elif tag == 7:
v = grid[h - 1 - r][w - 1 - c]
else:
v = grid[c][w - 1 - r]
row.append(v)
out.append(row)
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[[([[1, 2, 3], [11, 12, 13], [21, 22, 23], [31, 32, 33]], 7), [[33, 23, 13, 3], [32, 22, 12, 2], [31, 21, 11, 1]]], [([[1, 2], [11, 12]], 7), [[12, 2], [11, 1]]], [([[1, 2, 3, 4], [11, 12, 13, 14], [21, 22, 23, 24], [31, 32, 33, 34]], 6), [[31, 21, 11, 1], [32, 22, 12, 2], [33, 23, 13, 3], [34, 24, 14, 4]]], [([[1], [11], [21], [31]], 8), [[1, 11, 21, 31]]], [([[1, 2, 3], [11, 12, 13], [21, 22, 23]], 6), [[21, 11, 1], [22, 12, 2], [23, 13, 3]]], [([[1, 2, 3, 4]], 5), [[1], [2], [3], [4]]], [([[1, 2, 3, 4]], 2), [[4, 3, 2, 1]]], [([[1, 2, 3, 4], [11, 12, 13, 14], [21, 22, 23, 24]], 7), [[24, 14, 4], [23, 13, 3], [22, 12, 2], [21, 11, 1]]]], [[([[2, 3], [12, 13]], 7), [[13, 3], [12, 2]]], [([[2, 3, 4], [12, 13, 14], [22, 23, 24]], 7), [[24, 14, 4], [23, 13, 3], [22, 12, 2]]], [([[2, 3, 4], [12, 13, 14], [22, 23, 24]], 0), [[2, 3, 4], [12, 13, 14], [22, 23, 24]]], [([[2, 3, 4], [12, 13, 14], [22, 23, 24], [32, 33, 34]], 6), [[32, 22, 12, 2], [33, 23, 13, 3], [34, 24, 14, 4]]], [([[2]], 1), [[2]]], [([[2, 3, 4, 5], [12, 13, 14, 15]], 6), [[12, 2], [13, 3], [14, 4], [15, 5]]], [([[2, 3]], 6), [[2], [3]]], [([[2, 3], [12, 13], [22, 23], [32, 33]], 7), [[33, 23, 13, 3], [32, 22, 12, 2]]]], [[([[3, 4, 5, 6], [13, 14, 15, 16], [23, 24, 25, 26]], 7), [[26, 16, 6], [25, 15, 5], [24, 14, 4], [23, 13, 3]]], [([[3, 4, 5, 6]], 8), [[6], [5], [4], [3]]], [([[3, 4], [13, 14], [23, 24], [33, 34]], 8), [[4, 14, 24, 34], [3, 13, 23, 33]]], [([[3]], 8), [[3]]], [([[3, 4], [13, 14], [23, 24]], 6), [[23, 13, 3], [24, 14, 4]]], [([[3, 4, 5, 6], [13, 14, 15, 16], [23, 24, 25, 26]], 8), [[6, 16, 26], [5, 15, 25], [4, 14, 24], [3, 13, 23]]], [([[3], [13]], 3), [[13], [3]]], [([[3, 4], [13, 14], [23, 24], [33, 34]], 7), [[34, 24, 14, 4], [33, 23, 13, 3]]]], [[([[4, 5], [14, 15], [24, 25], [34, 35]], 7), [[35, 25, 15, 5], [34, 24, 14, 4]]], [([[4, 5, 6], [14, 15, 16], [24, 25, 26], [34, 35, 36]], 7), [[36, 26, 16, 6], [35, 25, 15, 5], [34, 24, 14, 4]]], [([[4, 5, 6, 7], [14, 15, 16, 17], [24, 25, 26, 27]], 9), [[4, 5, 6, 7], [14, 15, 16, 17], [24, 25, 26, 27]]], [([[4, 5, 6], [14, 15, 16]], 3), [[16, 15, 14], [6, 5, 4]]], [([[4, 5], [14, 15]], 5), [[4, 14], [5, 15]]], [([[4, 5, 6, 7], [14, 15, 16, 17], [24, 25, 26, 27], [34, 35, 36, 37]], 9), [[4, 5, 6, 7], [14, 15, 16, 17], [24, 25, 26, 27], [34, 35, 36, 37]]], [([[4]], 5), [[4]]], [([[4, 5]], 7), [[5], [4]]]], [[([[5, 6, 7], [15, 16, 17], [25, 26, 27], [35, 36, 37]], 7), [[37, 27, 17, 7], [36, 26, 16, 6], [35, 25, 15, 5]]], [([[5, 6, 7, 8], [15, 16, 17, 18], [25, 26, 27, 28], [35, 36, 37, 38]], 7), [[38, 28, 18, 8], [37, 27, 17, 7], [36, 26, 16, 6], [35, 25, 15, 5]]], [([[5, 6], [15, 16]], 7), [[16, 6], [15, 5]]], [([[5], [15]], 4), [[15], [5]]], [([[5, 6]], 9), [[5, 6]]], [([[5]], 6), [[5]]], [([[5], [15], [25], [35]], 2), [[5], [15], [25], [35]]], [([[5, 6]], 7), [[6], [5]]]]]
labels = ["regression: tag 7 transverse source index", "repair trap", "combined fault", "control", "control", "boundary", "boundary", "control"]
for i, (args, expected) in enumerate(fixtures[N-1]):
check("%s %d" % (labels[i % len(labels)], i), solve(*args), 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 |
|---|---|---|---|
| regression: tag 7 transverse source index 0 | [[33, 32, 31, 33], [23, 22, 21, 23], [13, 12, 11, 13]] | [[33, 23, 13, 3], [32, 22, 12, 2], [31, 21, 11, 1]] | Failed |
| repair trap 1 | [[12, 11], [2, 1]] | [[12, 2], [11, 1]] | Failed |
| combined fault 2 | [[31, 21, 11, 1], [32, 22, 12, 2], [33, 23, 13, 3], [34, 24, 14, 4]] | [[31, 21, 11, 1], [32, 22, 12, 2], [33, 23, 13, 3], [34, 24, 14, 4]] | Passed |
| control 3 | [[1, 11, 21, 31]] | [[1, 11, 21, 31]] | Passed |
| control 4 | [[21, 11, 1], [22, 12, 2], [23, 13, 3]] | [[21, 11, 1], [22, 12, 2], [23, 13, 3]] | Passed |
| boundary 5 | [[1], [2], [3], [4]] | [[1], [2], [3], [4]] | Passed |
| boundary 6 | [[4, 3, 2, 1]] | [[4, 3, 2, 1]] | Passed |
| control 7 | [[24, 23, 22], [14, 13, 12], [4, 3, 2], [24, 23, 22]] | [[24, 14, 4], [23, 13, 3], [22, 12, 2], [21, 11, 1]] | Failed |
SHA-256 / 33221c401145cbfa8287706f53f996878d6547002282180bf9b13618f59d29ff
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(grid, tag):
h = len(grid)
w = len(grid[0]) if h else 0
if tag not in range(1, 9):
tag = 1
if tag in (5, 6, 7, 8):
out_h, out_w = w, h
else:
out_h, out_w = h, w
out = []
for r in range(out_h):
row = []
for c in range(out_w):
if tag == 1:
v = grid[r][c]
elif tag == 2:
v = grid[r][w - 1 - c]
elif tag == 3:
v = grid[h - 1 - r][w - 1 - c]
elif tag == 4:
v = grid[h - 1 - r][c]
elif tag == 5:
v = grid[c][r]
elif tag == 6:
v = grid[h - 1 - c][r]
elif tag == 7:
v = grid[h - 1 - c][r]
else:
v = grid[c][w - 1 - r]
row.append(v)
out.append(row)
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[[([[1, 2, 3], [11, 12, 13], [21, 22, 23], [31, 32, 33]], 7), [[33, 23, 13, 3], [32, 22, 12, 2], [31, 21, 11, 1]]], [([[1, 2], [11, 12]], 7), [[12, 2], [11, 1]]], [([[1, 2, 3, 4], [11, 12, 13, 14], [21, 22, 23, 24], [31, 32, 33, 34]], 6), [[31, 21, 11, 1], [32, 22, 12, 2], [33, 23, 13, 3], [34, 24, 14, 4]]], [([[1], [11], [21], [31]], 8), [[1, 11, 21, 31]]], [([[1, 2, 3], [11, 12, 13], [21, 22, 23]], 6), [[21, 11, 1], [22, 12, 2], [23, 13, 3]]], [([[1, 2, 3, 4]], 5), [[1], [2], [3], [4]]], [([[1, 2, 3, 4]], 2), [[4, 3, 2, 1]]], [([[1, 2, 3, 4], [11, 12, 13, 14], [21, 22, 23, 24]], 7), [[24, 14, 4], [23, 13, 3], [22, 12, 2], [21, 11, 1]]]], [[([[2, 3], [12, 13]], 7), [[13, 3], [12, 2]]], [([[2, 3, 4], [12, 13, 14], [22, 23, 24]], 7), [[24, 14, 4], [23, 13, 3], [22, 12, 2]]], [([[2, 3, 4], [12, 13, 14], [22, 23, 24]], 0), [[2, 3, 4], [12, 13, 14], [22, 23, 24]]], [([[2, 3, 4], [12, 13, 14], [22, 23, 24], [32, 33, 34]], 6), [[32, 22, 12, 2], [33, 23, 13, 3], [34, 24, 14, 4]]], [([[2]], 1), [[2]]], [([[2, 3, 4, 5], [12, 13, 14, 15]], 6), [[12, 2], [13, 3], [14, 4], [15, 5]]], [([[2, 3]], 6), [[2], [3]]], [([[2, 3], [12, 13], [22, 23], [32, 33]], 7), [[33, 23, 13, 3], [32, 22, 12, 2]]]], [[([[3, 4, 5, 6], [13, 14, 15, 16], [23, 24, 25, 26]], 7), [[26, 16, 6], [25, 15, 5], [24, 14, 4], [23, 13, 3]]], [([[3, 4, 5, 6]], 8), [[6], [5], [4], [3]]], [([[3, 4], [13, 14], [23, 24], [33, 34]], 8), [[4, 14, 24, 34], [3, 13, 23, 33]]], [([[3]], 8), [[3]]], [([[3, 4], [13, 14], [23, 24]], 6), [[23, 13, 3], [24, 14, 4]]], [([[3, 4, 5, 6], [13, 14, 15, 16], [23, 24, 25, 26]], 8), [[6, 16, 26], [5, 15, 25], [4, 14, 24], [3, 13, 23]]], [([[3], [13]], 3), [[13], [3]]], [([[3, 4], [13, 14], [23, 24], [33, 34]], 7), [[34, 24, 14, 4], [33, 23, 13, 3]]]], [[([[4, 5], [14, 15], [24, 25], [34, 35]], 7), [[35, 25, 15, 5], [34, 24, 14, 4]]], [([[4, 5, 6], [14, 15, 16], [24, 25, 26], [34, 35, 36]], 7), [[36, 26, 16, 6], [35, 25, 15, 5], [34, 24, 14, 4]]], [([[4, 5, 6, 7], [14, 15, 16, 17], [24, 25, 26, 27]], 9), [[4, 5, 6, 7], [14, 15, 16, 17], [24, 25, 26, 27]]], [([[4, 5, 6], [14, 15, 16]], 3), [[16, 15, 14], [6, 5, 4]]], [([[4, 5], [14, 15]], 5), [[4, 14], [5, 15]]], [([[4, 5, 6, 7], [14, 15, 16, 17], [24, 25, 26, 27], [34, 35, 36, 37]], 9), [[4, 5, 6, 7], [14, 15, 16, 17], [24, 25, 26, 27], [34, 35, 36, 37]]], [([[4]], 5), [[4]]], [([[4, 5]], 7), [[5], [4]]]], [[([[5, 6, 7], [15, 16, 17], [25, 26, 27], [35, 36, 37]], 7), [[37, 27, 17, 7], [36, 26, 16, 6], [35, 25, 15, 5]]], [([[5, 6, 7, 8], [15, 16, 17, 18], [25, 26, 27, 28], [35, 36, 37, 38]], 7), [[38, 28, 18, 8], [37, 27, 17, 7], [36, 26, 16, 6], [35, 25, 15, 5]]], [([[5, 6], [15, 16]], 7), [[16, 6], [15, 5]]], [([[5], [15]], 4), [[15], [5]]], [([[5, 6]], 9), [[5, 6]]], [([[5]], 6), [[5]]], [([[5], [15], [25], [35]], 2), [[5], [15], [25], [35]]], [([[5, 6]], 7), [[6], [5]]]]]
labels = ["regression: tag 7 transverse source index", "repair trap", "combined fault", "control", "control", "boundary", "boundary", "control"]
for i, (args, expected) in enumerate(fixtures[N-1]):
check("%s %d" % (labels[i % len(labels)], i), solve(*args), 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 |
|---|---|---|---|
| regression: tag 7 transverse source index 0 | [[31, 21, 11, 1], [32, 22, 12, 2], [33, 23, 13, 3]] | [[33, 23, 13, 3], [32, 22, 12, 2], [31, 21, 11, 1]] | Failed |
| repair trap 1 | [[11, 1], [12, 2]] | [[12, 2], [11, 1]] | Failed |
| combined fault 2 | [[31, 21, 11, 1], [32, 22, 12, 2], [33, 23, 13, 3], [34, 24, 14, 4]] | [[31, 21, 11, 1], [32, 22, 12, 2], [33, 23, 13, 3], [34, 24, 14, 4]] | Passed |
| control 3 | [[1, 11, 21, 31]] | [[1, 11, 21, 31]] | Passed |
| control 4 | [[21, 11, 1], [22, 12, 2], [23, 13, 3]] | [[21, 11, 1], [22, 12, 2], [23, 13, 3]] | Passed |
| boundary 5 | [[1], [2], [3], [4]] | [[1], [2], [3], [4]] | Passed |
| boundary 6 | [[4, 3, 2, 1]] | [[4, 3, 2, 1]] | Passed |
| control 7 | [[21, 11, 1], [22, 12, 2], [23, 13, 3], [24, 14, 4]] | [[24, 14, 4], [23, 13, 3], [22, 12, 2], [21, 11, 1]] | Failed |
SHA-256 / 7dc83a48dc111f41384747730a36a8fed06cf7fc95a3d1375241c8752bed6acd
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(grid, tag):
h = len(grid)
w = len(grid[0]) if h else 0
if tag not in range(1, 9):
tag = 1
if tag in (5, 6, 7, 8):
out_h, out_w = w, h
else:
out_h, out_w = h, w
out = []
for r in range(out_h):
row = []
for c in range(out_w):
if tag == 1:
v = grid[r][c]
elif tag == 2:
v = grid[r][w - 1 - c]
elif tag == 3:
v = grid[h - 1 - r][w - 1 - c]
elif tag == 4:
v = grid[h - 1 - r][c]
elif tag == 5:
v = grid[c][r]
elif tag == 6:
v = grid[h - 1 - c][r]
elif tag == 7:
v = grid[h - 1 - c][w - 1 - r]
else:
v = grid[c][w - 1 - r]
row.append(v)
out.append(row)
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[[([[1, 2, 3], [11, 12, 13], [21, 22, 23], [31, 32, 33]], 7), [[33, 23, 13, 3], [32, 22, 12, 2], [31, 21, 11, 1]]], [([[1, 2], [11, 12]], 7), [[12, 2], [11, 1]]], [([[1, 2, 3, 4], [11, 12, 13, 14], [21, 22, 23, 24], [31, 32, 33, 34]], 6), [[31, 21, 11, 1], [32, 22, 12, 2], [33, 23, 13, 3], [34, 24, 14, 4]]], [([[1], [11], [21], [31]], 8), [[1, 11, 21, 31]]], [([[1, 2, 3], [11, 12, 13], [21, 22, 23]], 6), [[21, 11, 1], [22, 12, 2], [23, 13, 3]]], [([[1, 2, 3, 4]], 5), [[1], [2], [3], [4]]], [([[1, 2, 3, 4]], 2), [[4, 3, 2, 1]]], [([[1, 2, 3, 4], [11, 12, 13, 14], [21, 22, 23, 24]], 7), [[24, 14, 4], [23, 13, 3], [22, 12, 2], [21, 11, 1]]]], [[([[2, 3], [12, 13]], 7), [[13, 3], [12, 2]]], [([[2, 3, 4], [12, 13, 14], [22, 23, 24]], 7), [[24, 14, 4], [23, 13, 3], [22, 12, 2]]], [([[2, 3, 4], [12, 13, 14], [22, 23, 24]], 0), [[2, 3, 4], [12, 13, 14], [22, 23, 24]]], [([[2, 3, 4], [12, 13, 14], [22, 23, 24], [32, 33, 34]], 6), [[32, 22, 12, 2], [33, 23, 13, 3], [34, 24, 14, 4]]], [([[2]], 1), [[2]]], [([[2, 3, 4, 5], [12, 13, 14, 15]], 6), [[12, 2], [13, 3], [14, 4], [15, 5]]], [([[2, 3]], 6), [[2], [3]]], [([[2, 3], [12, 13], [22, 23], [32, 33]], 7), [[33, 23, 13, 3], [32, 22, 12, 2]]]], [[([[3, 4, 5, 6], [13, 14, 15, 16], [23, 24, 25, 26]], 7), [[26, 16, 6], [25, 15, 5], [24, 14, 4], [23, 13, 3]]], [([[3, 4, 5, 6]], 8), [[6], [5], [4], [3]]], [([[3, 4], [13, 14], [23, 24], [33, 34]], 8), [[4, 14, 24, 34], [3, 13, 23, 33]]], [([[3]], 8), [[3]]], [([[3, 4], [13, 14], [23, 24]], 6), [[23, 13, 3], [24, 14, 4]]], [([[3, 4, 5, 6], [13, 14, 15, 16], [23, 24, 25, 26]], 8), [[6, 16, 26], [5, 15, 25], [4, 14, 24], [3, 13, 23]]], [([[3], [13]], 3), [[13], [3]]], [([[3, 4], [13, 14], [23, 24], [33, 34]], 7), [[34, 24, 14, 4], [33, 23, 13, 3]]]], [[([[4, 5], [14, 15], [24, 25], [34, 35]], 7), [[35, 25, 15, 5], [34, 24, 14, 4]]], [([[4, 5, 6], [14, 15, 16], [24, 25, 26], [34, 35, 36]], 7), [[36, 26, 16, 6], [35, 25, 15, 5], [34, 24, 14, 4]]], [([[4, 5, 6, 7], [14, 15, 16, 17], [24, 25, 26, 27]], 9), [[4, 5, 6, 7], [14, 15, 16, 17], [24, 25, 26, 27]]], [([[4, 5, 6], [14, 15, 16]], 3), [[16, 15, 14], [6, 5, 4]]], [([[4, 5], [14, 15]], 5), [[4, 14], [5, 15]]], [([[4, 5, 6, 7], [14, 15, 16, 17], [24, 25, 26, 27], [34, 35, 36, 37]], 9), [[4, 5, 6, 7], [14, 15, 16, 17], [24, 25, 26, 27], [34, 35, 36, 37]]], [([[4]], 5), [[4]]], [([[4, 5]], 7), [[5], [4]]]], [[([[5, 6, 7], [15, 16, 17], [25, 26, 27], [35, 36, 37]], 7), [[37, 27, 17, 7], [36, 26, 16, 6], [35, 25, 15, 5]]], [([[5, 6, 7, 8], [15, 16, 17, 18], [25, 26, 27, 28], [35, 36, 37, 38]], 7), [[38, 28, 18, 8], [37, 27, 17, 7], [36, 26, 16, 6], [35, 25, 15, 5]]], [([[5, 6], [15, 16]], 7), [[16, 6], [15, 5]]], [([[5], [15]], 4), [[15], [5]]], [([[5, 6]], 9), [[5, 6]]], [([[5]], 6), [[5]]], [([[5], [15], [25], [35]], 2), [[5], [15], [25], [35]]], [([[5, 6]], 7), [[6], [5]]]]]
labels = ["regression: tag 7 transverse source index", "repair trap", "combined fault", "control", "control", "boundary", "boundary", "control"]
for i, (args, expected) in enumerate(fixtures[N-1]):
check("%s %d" % (labels[i % len(labels)], i), solve(*args), 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 |
|---|---|---|---|
| regression: tag 7 transverse source index 0 | [[33, 23, 13, 3], [32, 22, 12, 2], [31, 21, 11, 1]] | [[33, 23, 13, 3], [32, 22, 12, 2], [31, 21, 11, 1]] | Passed |
| repair trap 1 | [[12, 2], [11, 1]] | [[12, 2], [11, 1]] | Passed |
| combined fault 2 | [[31, 21, 11, 1], [32, 22, 12, 2], [33, 23, 13, 3], [34, 24, 14, 4]] | [[31, 21, 11, 1], [32, 22, 12, 2], [33, 23, 13, 3], [34, 24, 14, 4]] | Passed |
| control 3 | [[1, 11, 21, 31]] | [[1, 11, 21, 31]] | Passed |
| control 4 | [[21, 11, 1], [22, 12, 2], [23, 13, 3]] | [[21, 11, 1], [22, 12, 2], [23, 13, 3]] | Passed |
| boundary 5 | [[1], [2], [3], [4]] | [[1], [2], [3], [4]] | Passed |
| boundary 6 | [[4, 3, 2, 1]] | [[4, 3, 2, 1]] | Passed |
| control 7 | [[24, 14, 4], [23, 13, 3], [22, 12, 2], [21, 11, 1]] | [[24, 14, 4], [23, 13, 3], [22, 12, 2], [21, 11, 1]] | Passed |
SHA-256 / 4190545b7c2cbc3d38e5d5d8336547aa4a4d52989101edffacfea68d8a823339
Verification & scope
A deterministic bounded teaching model with a stipulated contract; it makes no claim of conformance to any published specification. 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:49:39.225376+00:00.
Case digest / 0580e0b5a670111b3a77e8231b3f78dace9433a708034c9981ef71675c4cf78e