FA-72211 / Error-correcting codes / Open access
LT peeling copies the symbol value without removing resolved neighbours · case 01
Resolved source values are wrong whenever the releasing symbol had degree above one.
ROOT CAUSE
The released value is the encoded value itself; already resolved neighbours are not XORed out.
VERIFIED REPAIR
XOR every resolved neighbour out of the encoded value.
Unsuccessful approach: Overwriting instead of accumulating keeps only the last resolved neighbour.
Case contract
Peeling (belief-propagation) decoder for an LT fountain code over bytes. symbols is a list of [neighbour indices, XOR of those source symbols]. Repeatedly find an encoded symbol with exactly one unresolved neighbour, resolve it as the value XOR all resolved neighbours, and continue until a full pass makes no progress. Return the k source values with None for unresolved ones.
Why this case matters
Broadcast and storage systems use fountain codes; peeling must continue as long as new degree-one symbols appear.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(symbols, k):
src = [None] * k
changed = True
while changed:
changed = False
for nbrs, val in symbols:
unknown = [i for i in nbrs if src[i] is None]
if len(unknown) != 1:
continue
x = val
for i in nbrs:
if src[i] is not None:
pass
src[unknown[0]] = x
changed = True
return src
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3]', [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3], [87, 225, 186]], ['regression [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4]', [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4], [93, 110, 53, 40]], ['partial-repair [[[[2, 4], 237], [[0, 1, 3], 192], [[1, 3], 57], [[2], 28], [[1, 2,...', [[[[2, 4], 237], [[0, 1, 3], 192], [[1, 3], 57], [[2], 28], [[1, 2, 4], 217]], 5], [249, 52, 28, 13, 241]], ['control [[[[0, 1], 1]], 2]', [[[[0, 1], 1]], 2], [None, None]], ['control [[], 2]', [[], 2], [None, None]], ['control [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3]', [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3], [9, None, None]], ['control [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0...', [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0, 2, 4], 67], [[1, 2, 4], 198], [[0], 59], [[5], 71]], 6], [59, 190, 199, 1, 191, 71]], ['control [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]]...', [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]], 4], [100, 106, 96, 151]]], [['regression [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0...', [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0, 2, 4], 67], [[1, 2, 4], 198], [[0], 59], [[5], 71]], 6], [59, 190, 199, 1, 191, 71]], ['regression [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]]...', [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]], 4], [100, 106, 96, 151]], ['partial-repair [[[[0], 17], [[3, 4], 215], [[0, 3], 193], [[1, 3, 4], 154], [[1, 4...', [[[[0], 17], [[3, 4], 215], [[0, 3], 193], [[1, 3, 4], 154], [[1, 4], 74], [[4], 7]], 5], [17, 77, None, 208, 7]], ['partial-repair [[[[0, 1], 249], [[0, 1], 249], [[0, 1, 2], 202], [[0], 87]], 3]', [[[[0, 1], 249], [[0, 1], 249], [[0, 1, 2], 202], [[0], 87]], 3], [87, 174, 51]], ['control [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3]', [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3], [9, None, None]], ['control [[[[0, 1], 1]], 2]', [[[[0, 1], 1]], 2], [None, None]], ['control [[], 2]', [[], 2], [None, None]], ['control [[[[0, 1, 5], 222], [[4], 144], [[2, 5, 6], 16], [[1, 2, 4], 104], ...', [[[[0, 1, 5], 222], [[4], 144], [[2, 5, 6], 16], [[1, 2, 4], 104], [[3], 251], [[0, 2, 4], 177], [[6], 49], [[0, 6], 54]], 7], [7, 222, 38, 251, 144, 7, 49]]], [['regression [[[[2, 5], 36], [[1, 3, 4], 222], [[0, 1], 103], [[1, 3, 5], 190], ...', [[[[2, 5], 36], [[1, 3, 4], 222], [[0, 1], 103], [[1, 3, 5], 190], [[2, 4], 68], [[5], 61], [[2], 25], [[2], 25], [[2], 25]], 6], [None, None, 25, None, 93, 61]], ['regression [[[[0, 1], 249], [[0, 1], 249], [[0, 1, 2], 202], [[0], 87]], 3]', [[[[0, 1], 249], [[0, 1], 249], [[0, 1, 2], 202], [[0], 87]], 3], [87, 174, 51]], ['partial-repair [[[[0, 4], 212], [[0], 114], [[0, 4], 212], [[0, 1, 4], 93], [[0], ...', [[[[0, 4], 212], [[0], 114], [[0, 4], 212], [[0, 1, 4], 93], [[0], 114]], 5], [114, 137, None, None, 166]], ['partial-repair [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3]', [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3], [87, 225, 186]], ['control [[], 2]', [[], 2], [None, None]], ['control [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3]', [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3], [9, None, None]], ['control [[[[0, 1], 1]], 2]', [[[[0, 1], 1]], 2], [None, None]], ['control [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4]', [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4], [93, 110, 53, 40]]], [['regression [[[[0, 4], 212], [[0], 114], [[0, 4], 212], [[0, 1, 4], 93], [[0], ...', [[[[0, 4], 212], [[0], 114], [[0, 4], 212], [[0, 1, 4], 93], [[0], 114]], 5], [114, 137, None, None, 166]], ['regression [[[[0, 1], 5], [[1], 3]], 2]', [[[[0, 1], 5], [[1], 3]], 2], [6, 3]], ['partial-repair [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0...', [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0, 2, 4], 67], [[1, 2, 4], 198], [[0], 59], [[5], 71]], 6], [59, 190, 199, 1, 191, 71]], ['partial-repair [[[[0], 17], [[3, 4], 215], [[0, 3], 193], [[1, 3, 4], 154], [[1, 4...', [[[[0], 17], [[3, 4], 215], [[0, 3], 193], [[1, 3, 4], 154], [[1, 4], 74], [[4], 7]], 5], [17, 77, None, 208, 7]], ['control [[[[0, 1], 1]], 2]', [[[[0, 1], 1]], 2], [None, None]], ['control [[], 2]', [[], 2], [None, None]], ['control [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3]', [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3], [9, None, None]], ['control [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]]...', [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]], 4], [100, 106, 96, 151]]], [['regression [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3]', [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3], [87, 225, 186]], ['regression [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4]', [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4], [93, 110, 53, 40]], ['partial-repair [[[[0, 1, 5], 222], [[4], 144], [[2, 5, 6], 16], [[1, 2, 4], 104], ...', [[[[0, 1, 5], 222], [[4], 144], [[2, 5, 6], 16], [[1, 2, 4], 104], [[3], 251], [[0, 2, 4], 177], [[6], 49], [[0, 6], 54]], 7], [7, 222, 38, 251, 144, 7, 49]], ['partial-repair [[[[0, 4], 212], [[0], 114], [[0, 4], 212], [[0, 1, 4], 93], [[0], ...', [[[[0, 4], 212], [[0], 114], [[0, 4], 212], [[0, 1, 4], 93], [[0], 114]], 5], [114, 137, None, None, 166]], ['control [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3]', [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3], [9, None, None]], ['control [[[[0, 1], 1]], 2]', [[[[0, 1], 1]], 2], [None, None]], ['control [[], 2]', [[], 2], [None, None]], ['control [[[[0, 1], 5], [[1], 3]], 2]', [[[[0, 1], 5], [[1], 3]], 2], [6, 3]]]]
for label, args, expected in fixtures[N - 1]:
check(label, 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 [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3] | [237, 12, 186] | [87, 225, 186] | Failed |
| regression [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4] | [93, 110, 29, 40] | [93, 110, 53, 40] | Failed |
| partial-repair [[[[2, 4], 237], [[0, 1, 3], 192], [[1, 3], 57], [[2], 28], [[1, 2,... | [192, 217, 28, 57, 237] | [249, 52, 28, 13, 241] | Failed |
| control [[[[0, 1], 1]], 2] | [None, None] | [None, None] | Passed |
| control [[], 2] | [None, None] | [None, None] | Passed |
| control [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3] | [9, None, None] | [9, None, None] | Passed |
| control [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0... | [59, 194, 67, 70, 132, 71] | [59, 190, 199, 1, 191, 71] | Failed |
| control [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]]... | [14, 253, 4, 151] | [100, 106, 96, 151] | Failed |
SHA-256 / 49bbba691ce3ce88918c03ecd677af53cefc435e659092253b1a0de6d9329daf
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(symbols, k):
src = [None] * k
changed = True
while changed:
changed = False
for nbrs, val in symbols:
unknown = [i for i in nbrs if src[i] is None]
if len(unknown) != 1:
continue
x = val
for i in nbrs:
if src[i] is not None:
x = val ^ src[i]
src[unknown[0]] = x
changed = True
return src
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3]', [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3], [87, 225, 186]], ['regression [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4]', [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4], [93, 110, 53, 40]], ['partial-repair [[[[2, 4], 237], [[0, 1, 3], 192], [[1, 3], 57], [[2], 28], [[1, 2,...', [[[[2, 4], 237], [[0, 1, 3], 192], [[1, 3], 57], [[2], 28], [[1, 2, 4], 217]], 5], [249, 52, 28, 13, 241]], ['control [[[[0, 1], 1]], 2]', [[[[0, 1], 1]], 2], [None, None]], ['control [[], 2]', [[], 2], [None, None]], ['control [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3]', [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3], [9, None, None]], ['control [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0...', [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0, 2, 4], 67], [[1, 2, 4], 198], [[0], 59], [[5], 71]], 6], [59, 190, 199, 1, 191, 71]], ['control [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]]...', [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]], 4], [100, 106, 96, 151]]], [['regression [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0...', [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0, 2, 4], 67], [[1, 2, 4], 198], [[0], 59], [[5], 71]], 6], [59, 190, 199, 1, 191, 71]], ['regression [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]]...', [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]], 4], [100, 106, 96, 151]], ['partial-repair [[[[0], 17], [[3, 4], 215], [[0, 3], 193], [[1, 3, 4], 154], [[1, 4...', [[[[0], 17], [[3, 4], 215], [[0, 3], 193], [[1, 3, 4], 154], [[1, 4], 74], [[4], 7]], 5], [17, 77, None, 208, 7]], ['partial-repair [[[[0, 1], 249], [[0, 1], 249], [[0, 1, 2], 202], [[0], 87]], 3]', [[[[0, 1], 249], [[0, 1], 249], [[0, 1, 2], 202], [[0], 87]], 3], [87, 174, 51]], ['control [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3]', [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3], [9, None, None]], ['control [[[[0, 1], 1]], 2]', [[[[0, 1], 1]], 2], [None, None]], ['control [[], 2]', [[], 2], [None, None]], ['control [[[[0, 1, 5], 222], [[4], 144], [[2, 5, 6], 16], [[1, 2, 4], 104], ...', [[[[0, 1, 5], 222], [[4], 144], [[2, 5, 6], 16], [[1, 2, 4], 104], [[3], 251], [[0, 2, 4], 177], [[6], 49], [[0, 6], 54]], 7], [7, 222, 38, 251, 144, 7, 49]]], [['regression [[[[2, 5], 36], [[1, 3, 4], 222], [[0, 1], 103], [[1, 3, 5], 190], ...', [[[[2, 5], 36], [[1, 3, 4], 222], [[0, 1], 103], [[1, 3, 5], 190], [[2, 4], 68], [[5], 61], [[2], 25], [[2], 25], [[2], 25]], 6], [None, None, 25, None, 93, 61]], ['regression [[[[0, 1], 249], [[0, 1], 249], [[0, 1, 2], 202], [[0], 87]], 3]', [[[[0, 1], 249], [[0, 1], 249], [[0, 1, 2], 202], [[0], 87]], 3], [87, 174, 51]], ['partial-repair [[[[0, 4], 212], [[0], 114], [[0, 4], 212], [[0, 1, 4], 93], [[0], ...', [[[[0, 4], 212], [[0], 114], [[0, 4], 212], [[0, 1, 4], 93], [[0], 114]], 5], [114, 137, None, None, 166]], ['partial-repair [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3]', [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3], [87, 225, 186]], ['control [[], 2]', [[], 2], [None, None]], ['control [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3]', [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3], [9, None, None]], ['control [[[[0, 1], 1]], 2]', [[[[0, 1], 1]], 2], [None, None]], ['control [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4]', [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4], [93, 110, 53, 40]]], [['regression [[[[0, 4], 212], [[0], 114], [[0, 4], 212], [[0, 1, 4], 93], [[0], ...', [[[[0, 4], 212], [[0], 114], [[0, 4], 212], [[0, 1, 4], 93], [[0], 114]], 5], [114, 137, None, None, 166]], ['regression [[[[0, 1], 5], [[1], 3]], 2]', [[[[0, 1], 5], [[1], 3]], 2], [6, 3]], ['partial-repair [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0...', [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0, 2, 4], 67], [[1, 2, 4], 198], [[0], 59], [[5], 71]], 6], [59, 190, 199, 1, 191, 71]], ['partial-repair [[[[0], 17], [[3, 4], 215], [[0, 3], 193], [[1, 3, 4], 154], [[1, 4...', [[[[0], 17], [[3, 4], 215], [[0, 3], 193], [[1, 3, 4], 154], [[1, 4], 74], [[4], 7]], 5], [17, 77, None, 208, 7]], ['control [[[[0, 1], 1]], 2]', [[[[0, 1], 1]], 2], [None, None]], ['control [[], 2]', [[], 2], [None, None]], ['control [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3]', [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3], [9, None, None]], ['control [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]]...', [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]], 4], [100, 106, 96, 151]]], [['regression [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3]', [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3], [87, 225, 186]], ['regression [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4]', [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4], [93, 110, 53, 40]], ['partial-repair [[[[0, 1, 5], 222], [[4], 144], [[2, 5, 6], 16], [[1, 2, 4], 104], ...', [[[[0, 1, 5], 222], [[4], 144], [[2, 5, 6], 16], [[1, 2, 4], 104], [[3], 251], [[0, 2, 4], 177], [[6], 49], [[0, 6], 54]], 7], [7, 222, 38, 251, 144, 7, 49]], ['partial-repair [[[[0, 4], 212], [[0], 114], [[0, 4], 212], [[0, 1, 4], 93], [[0], ...', [[[[0, 4], 212], [[0], 114], [[0, 4], 212], [[0, 1, 4], 93], [[0], 114]], 5], [114, 137, None, None, 166]], ['control [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3]', [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3], [9, None, None]], ['control [[[[0, 1], 1]], 2]', [[[[0, 1], 1]], 2], [None, None]], ['control [[], 2]', [[], 2], [None, None]], ['control [[[[0, 1], 5], [[1], 3]], 2]', [[[[0, 1], 5], [[1], 3]], 2], [6, 3]]]]
for label, args, expected in fixtures[N - 1]:
check(label, 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 [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3] | [87, 182, 186] | [87, 225, 186] | Failed |
| regression [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4] | [93, 110, 53, 40] | [93, 110, 53, 40] | Passed |
| partial-repair [[[[2, 4], 237], [[0, 1, 3], 192], [[1, 3], 57], [[2], 28], [[1, 2,... | [209, 40, 28, 17, 241] | [249, 52, 28, 13, 241] | Failed |
| control [[[[0, 1], 1]], 2] | [None, None] | [None, None] | Passed |
| control [[], 2] | [None, None] | [None, None] | Passed |
| control [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3] | [9, None, None] | [9, None, None] | Passed |
| control [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0... | [59, 133, 252, 1, 191, 71] | [59, 190, 199, 1, 191, 71] | Failed |
| control [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]]... | [100, 106, 96, 151] | [100, 106, 96, 151] | Passed |
SHA-256 / 06535b50ab57e2dd756afda2998a6f0595e8a4edb1c37adb18610aa8b9b4b70e
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(symbols, k):
src = [None] * k
changed = True
while changed:
changed = False
for nbrs, val in symbols:
unknown = [i for i in nbrs if src[i] is None]
if len(unknown) != 1:
continue
x = val
for i in nbrs:
if src[i] is not None:
x ^= src[i]
src[unknown[0]] = x
changed = True
return src
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3]', [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3], [87, 225, 186]], ['regression [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4]', [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4], [93, 110, 53, 40]], ['partial-repair [[[[2, 4], 237], [[0, 1, 3], 192], [[1, 3], 57], [[2], 28], [[1, 2,...', [[[[2, 4], 237], [[0, 1, 3], 192], [[1, 3], 57], [[2], 28], [[1, 2, 4], 217]], 5], [249, 52, 28, 13, 241]], ['control [[[[0, 1], 1]], 2]', [[[[0, 1], 1]], 2], [None, None]], ['control [[], 2]', [[], 2], [None, None]], ['control [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3]', [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3], [9, None, None]], ['control [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0...', [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0, 2, 4], 67], [[1, 2, 4], 198], [[0], 59], [[5], 71]], 6], [59, 190, 199, 1, 191, 71]], ['control [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]]...', [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]], 4], [100, 106, 96, 151]]], [['regression [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0...', [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0, 2, 4], 67], [[1, 2, 4], 198], [[0], 59], [[5], 71]], 6], [59, 190, 199, 1, 191, 71]], ['regression [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]]...', [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]], 4], [100, 106, 96, 151]], ['partial-repair [[[[0], 17], [[3, 4], 215], [[0, 3], 193], [[1, 3, 4], 154], [[1, 4...', [[[[0], 17], [[3, 4], 215], [[0, 3], 193], [[1, 3, 4], 154], [[1, 4], 74], [[4], 7]], 5], [17, 77, None, 208, 7]], ['partial-repair [[[[0, 1], 249], [[0, 1], 249], [[0, 1, 2], 202], [[0], 87]], 3]', [[[[0, 1], 249], [[0, 1], 249], [[0, 1, 2], 202], [[0], 87]], 3], [87, 174, 51]], ['control [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3]', [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3], [9, None, None]], ['control [[[[0, 1], 1]], 2]', [[[[0, 1], 1]], 2], [None, None]], ['control [[], 2]', [[], 2], [None, None]], ['control [[[[0, 1, 5], 222], [[4], 144], [[2, 5, 6], 16], [[1, 2, 4], 104], ...', [[[[0, 1, 5], 222], [[4], 144], [[2, 5, 6], 16], [[1, 2, 4], 104], [[3], 251], [[0, 2, 4], 177], [[6], 49], [[0, 6], 54]], 7], [7, 222, 38, 251, 144, 7, 49]]], [['regression [[[[2, 5], 36], [[1, 3, 4], 222], [[0, 1], 103], [[1, 3, 5], 190], ...', [[[[2, 5], 36], [[1, 3, 4], 222], [[0, 1], 103], [[1, 3, 5], 190], [[2, 4], 68], [[5], 61], [[2], 25], [[2], 25], [[2], 25]], 6], [None, None, 25, None, 93, 61]], ['regression [[[[0, 1], 249], [[0, 1], 249], [[0, 1, 2], 202], [[0], 87]], 3]', [[[[0, 1], 249], [[0, 1], 249], [[0, 1, 2], 202], [[0], 87]], 3], [87, 174, 51]], ['partial-repair [[[[0, 4], 212], [[0], 114], [[0, 4], 212], [[0, 1, 4], 93], [[0], ...', [[[[0, 4], 212], [[0], 114], [[0, 4], 212], [[0, 1, 4], 93], [[0], 114]], 5], [114, 137, None, None, 166]], ['partial-repair [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3]', [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3], [87, 225, 186]], ['control [[], 2]', [[], 2], [None, None]], ['control [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3]', [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3], [9, None, None]], ['control [[[[0, 1], 1]], 2]', [[[[0, 1], 1]], 2], [None, None]], ['control [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4]', [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4], [93, 110, 53, 40]]], [['regression [[[[0, 4], 212], [[0], 114], [[0, 4], 212], [[0, 1, 4], 93], [[0], ...', [[[[0, 4], 212], [[0], 114], [[0, 4], 212], [[0, 1, 4], 93], [[0], 114]], 5], [114, 137, None, None, 166]], ['regression [[[[0, 1], 5], [[1], 3]], 2]', [[[[0, 1], 5], [[1], 3]], 2], [6, 3]], ['partial-repair [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0...', [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0, 2, 4], 67], [[1, 2, 4], 198], [[0], 59], [[5], 71]], 6], [59, 190, 199, 1, 191, 71]], ['partial-repair [[[[0], 17], [[3, 4], 215], [[0, 3], 193], [[1, 3, 4], 154], [[1, 4...', [[[[0], 17], [[3, 4], 215], [[0, 3], 193], [[1, 3, 4], 154], [[1, 4], 74], [[4], 7]], 5], [17, 77, None, 208, 7]], ['control [[[[0, 1], 1]], 2]', [[[[0, 1], 1]], 2], [None, None]], ['control [[], 2]', [[], 2], [None, None]], ['control [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3]', [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3], [9, None, None]], ['control [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]]...', [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]], 4], [100, 106, 96, 151]]], [['regression [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3]', [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3], [87, 225, 186]], ['regression [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4]', [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4], [93, 110, 53, 40]], ['partial-repair [[[[0, 1, 5], 222], [[4], 144], [[2, 5, 6], 16], [[1, 2, 4], 104], ...', [[[[0, 1, 5], 222], [[4], 144], [[2, 5, 6], 16], [[1, 2, 4], 104], [[3], 251], [[0, 2, 4], 177], [[6], 49], [[0, 6], 54]], 7], [7, 222, 38, 251, 144, 7, 49]], ['partial-repair [[[[0, 4], 212], [[0], 114], [[0, 4], 212], [[0, 1, 4], 93], [[0], ...', [[[[0, 4], 212], [[0], 114], [[0, 4], 212], [[0, 1, 4], 93], [[0], 114]], 5], [114, 137, None, None, 166]], ['control [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3]', [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3], [9, None, None]], ['control [[[[0, 1], 1]], 2]', [[[[0, 1], 1]], 2], [None, None]], ['control [[], 2]', [[], 2], [None, None]], ['control [[[[0, 1], 5], [[1], 3]], 2]', [[[[0, 1], 5], [[1], 3]], 2], [6, 3]]]]
for label, args, expected in fixtures[N - 1]:
check(label, 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 [[[[0, 1, 2], 12], [[2], 186], [[0, 2], 237]], 3] | [87, 225, 186] | [87, 225, 186] | Passed |
| regression [[[[1], 110], [[3], 40], [[0, 2, 3], 64], [[2, 3], 29], [[0], 93]], 4] | [93, 110, 53, 40] | [93, 110, 53, 40] | Passed |
| partial-repair [[[[2, 4], 237], [[0, 1, 3], 192], [[1, 3], 57], [[2], 28], [[1, 2,... | [249, 52, 28, 13, 241] | [249, 52, 28, 13, 241] | Passed |
| control [[[[0, 1], 1]], 2] | [None, None] | [None, None] | Passed |
| control [[], 2] | [None, None] | [None, None] | Passed |
| control [[[[0], 9], [[0, 1, 2], 1], [[1, 2], 3]], 3] | [9, None, None] | [9, None, None] | Passed |
| control [[[[0, 1, 5], 194], [[0, 4], 132], [[0, 1], 133], [[3, 5], 70], [[0... | [59, 190, 199, 1, 191, 71] | [59, 190, 199, 1, 191, 71] | Passed |
| control [[[[3], 151], [[1, 3], 253], [[0, 2], 4], [[1], 106], [[0, 1], 14]]... | [100, 106, 96, 151] | [100, 106, 96, 151] | Passed |
SHA-256 / eaa128786b568b3274cf9ded5dc08bb1aada2def6e30d051d1d8d9fa0f8a42c8
Verification & scope
A deterministic, bounded teaching model of the named code under the stated contract; not a production codec. 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:48:36.552337+00:00.
Case digest / a464e79692c5e5d4677e418a190ffa41164505205c1b2e5eae4360898fc7bedf