FA-71886 / Error-correcting codes / Open access
Repetition decoder counts erasures as zeros · case 01
Blocks with erasures are biased towards 0.
ROOT CAUSE
Erased symbols are converted to 0 before voting.
VERIFIED REPAIR
Drop erasures from the vote entirely.
Unsuccessful approach: Keeping only truthy symbols removes zeros as well as erasures.
Case contract
Decode an n-fold repetition code sent in contiguous blocks of n symbols; each received symbol is 0, 1 or None (erasure). Erasures do not vote. The bit is the majority of non-erased symbols; a tie (including an all-erased block) yields None. fixed_count counts non-erased symbols outvoted in decided blocks. A length that is not a multiple of n, or n < 1, returns None. Return [bits, fixed_count].
Why this case matters
Robust control channels repeat critical flags and must treat erased symbols differently from zeros.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(r, n):
if n < 1 or len(r) % n:
return None
out, fixed_count = [], 0
for g in range(0, len(r), n):
grp = [x or 0 for x in r[g:g + n]]
ones = sum(grp)
zeros = len(grp) - ones
if ones == zeros:
out.append(None)
continue
b = 1 if ones > zeros else 0
out.append(b)
fixed_count += min(ones, zeros)
return [out, fixed_count]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression [[0, null, 1], 3]', [[0, None, 1], 3], [[None], 0]], ['regression [[1, 1, null], 3]', [[1, 1, None], 3], [[1], 0]], ['partial-repair [[1, 1, 0], 3]', [[1, 1, 0], 3], [[1], 1]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[], 3]', [[], 3], [[], 0]], ['control [[1, 1, 0, null, 0, null, 0, 0, 0, 1], 5]', [[1, 1, 0, None, 0, None, 0, 0, 0, 1], 5], [[None, 0], 1]], ['control [[0, 1, 0, 1, 0, null, 1, 0, 1, 1], 5]', [[0, 1, 0, 1, 0, None, 1, 0, 1, 1], 5], [[0, 1], 3]]], [['regression [[0, 1, 0, 1, 0, null, 1, 0, 1, 1], 5]', [[0, 1, 0, 1, 0, None, 1, 0, 1, 1], 5], [[0, 1], 3]], ['regression [[1, 1, null, 0, 1, null, 0, null], 2]', [[1, 1, None, 0, 1, None, 0, None], 2], [[1, 0, 1, 0], 0]], ['partial-repair [[0, 0, null, null], 4]', [[0, 0, None, None], 4], [[0], 0]], ['control [[], 3]', [[], 3], [[], 0]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[1, 0, null, null, 1, 1], 3]', [[1, 0, None, None, 1, 1], 3], [[None, 1], 0]], ['control [[0, 1, null, 0, 0, 1, 0, 0, 0, 0], 5]', [[0, 1, None, 0, 0, 1, 0, 0, 0, 0], 5], [[0, 0], 2]]], [['regression [[1, null, 0], 3]', [[1, None, 0], 3], [[None], 0]], ['regression [[null, null, null], 3]', [[None, None, None], 3], [[None], 0]], ['partial-repair [[1, 0, null, null, 1, 1], 3]', [[1, 0, None, None, 1, 1], 3], [[None, 1], 0]], ['partial-repair [[0, 1, null, 0, 0, 1, 0, 0, 0, 0], 5]', [[0, 1, None, 0, 0, 1, 0, 0, 0, 0], 5], [[0, 0], 2]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[], 3]', [[], 3], [[], 0]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[0, 1, 1, 1, 0, 0, null, 1], 4]', [[0, 1, 1, 1, 0, 0, None, 1], 4], [[1, 0], 2]]], [['regression [[0, null, 1, 1, 1], 5]', [[0, None, 1, 1, 1], 5], [[1], 1]], ['regression [[null, 0, 1, 0, null, 1], 3]', [[None, 0, 1, 0, None, 1], 3], [[None, None], 0]], ['partial-repair [[1, 0, 0, 1, 1, 0], 3]', [[1, 0, 0, 1, 1, 0], 3], [[0, 1], 2]], ['partial-repair [[0, 1, 1, 1, 0, 0, null, 1], 4]', [[0, 1, 1, 1, 0, 0, None, 1], 4], [[1, 0], 2]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[], 3]', [[], 3], [[], 0]], ['control [[1, 1, 0, 0, 0, 1, 1, 1, 0], 3]', [[1, 1, 0, 0, 0, 1, 1, 1, 0], 3], [[1, 0, 1], 3]]], [['regression [[1, 1, null], 3]', [[1, 1, None], 3], [[1], 0]], ['regression [[1, 1, 0, null, 0, null, 0, 0, 0, 1], 5]', [[1, 1, 0, None, 0, None, 0, 0, 0, 1], 5], [[None, 0], 1]], ['partial-repair [[1, 0], 2]', [[1, 0], 2], [[None], 0]], ['partial-repair [[1, 1, 0, 0, 0, 1, 1, 1, 0], 3]', [[1, 1, 0, 0, 0, 1, 1, 1, 0], 3], [[1, 0, 1], 3]], ['control [[], 3]', [[], 3], [[], 0]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[0, 1, 0, 1, 0, null, 1, 0, 1, 1], 5]', [[0, 1, 0, 1, 0, None, 1, 0, 1, 1], 5], [[0, 1], 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, null, 1], 3] | [[0], 1] | [[None], 0] | Failed |
| regression [[1, 1, null], 3] | [[1], 1] | [[1], 0] | Failed |
| partial-repair [[1, 1, 0], 3] | [[1], 1] | [[1], 1] | Passed |
| control [[1], 1] | [[1], 0] | [[1], 0] | Passed |
| control [[1, 1], 3] | None | None | Passed |
| control [[], 3] | [[], 0] | [[], 0] | Passed |
| control [[1, 1, 0, null, 0, null, 0, 0, 0, 1], 5] | [[0, 0], 3] | [[None, 0], 1] | Failed |
| control [[0, 1, 0, 1, 0, null, 1, 0, 1, 1], 5] | [[0, 1], 4] | [[0, 1], 3] | Failed |
SHA-256 / 982a4e6fd40a82e6e4d7def36f673e244015abfe6cb21fbd581903883368a44b
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(r, n):
if n < 1 or len(r) % n:
return None
out, fixed_count = [], 0
for g in range(0, len(r), n):
grp = [x for x in r[g:g + n] if x]
ones = sum(grp)
zeros = len(grp) - ones
if ones == zeros:
out.append(None)
continue
b = 1 if ones > zeros else 0
out.append(b)
fixed_count += min(ones, zeros)
return [out, fixed_count]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression [[0, null, 1], 3]', [[0, None, 1], 3], [[None], 0]], ['regression [[1, 1, null], 3]', [[1, 1, None], 3], [[1], 0]], ['partial-repair [[1, 1, 0], 3]', [[1, 1, 0], 3], [[1], 1]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[], 3]', [[], 3], [[], 0]], ['control [[1, 1, 0, null, 0, null, 0, 0, 0, 1], 5]', [[1, 1, 0, None, 0, None, 0, 0, 0, 1], 5], [[None, 0], 1]], ['control [[0, 1, 0, 1, 0, null, 1, 0, 1, 1], 5]', [[0, 1, 0, 1, 0, None, 1, 0, 1, 1], 5], [[0, 1], 3]]], [['regression [[0, 1, 0, 1, 0, null, 1, 0, 1, 1], 5]', [[0, 1, 0, 1, 0, None, 1, 0, 1, 1], 5], [[0, 1], 3]], ['regression [[1, 1, null, 0, 1, null, 0, null], 2]', [[1, 1, None, 0, 1, None, 0, None], 2], [[1, 0, 1, 0], 0]], ['partial-repair [[0, 0, null, null], 4]', [[0, 0, None, None], 4], [[0], 0]], ['control [[], 3]', [[], 3], [[], 0]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[1, 0, null, null, 1, 1], 3]', [[1, 0, None, None, 1, 1], 3], [[None, 1], 0]], ['control [[0, 1, null, 0, 0, 1, 0, 0, 0, 0], 5]', [[0, 1, None, 0, 0, 1, 0, 0, 0, 0], 5], [[0, 0], 2]]], [['regression [[1, null, 0], 3]', [[1, None, 0], 3], [[None], 0]], ['regression [[null, null, null], 3]', [[None, None, None], 3], [[None], 0]], ['partial-repair [[1, 0, null, null, 1, 1], 3]', [[1, 0, None, None, 1, 1], 3], [[None, 1], 0]], ['partial-repair [[0, 1, null, 0, 0, 1, 0, 0, 0, 0], 5]', [[0, 1, None, 0, 0, 1, 0, 0, 0, 0], 5], [[0, 0], 2]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[], 3]', [[], 3], [[], 0]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[0, 1, 1, 1, 0, 0, null, 1], 4]', [[0, 1, 1, 1, 0, 0, None, 1], 4], [[1, 0], 2]]], [['regression [[0, null, 1, 1, 1], 5]', [[0, None, 1, 1, 1], 5], [[1], 1]], ['regression [[null, 0, 1, 0, null, 1], 3]', [[None, 0, 1, 0, None, 1], 3], [[None, None], 0]], ['partial-repair [[1, 0, 0, 1, 1, 0], 3]', [[1, 0, 0, 1, 1, 0], 3], [[0, 1], 2]], ['partial-repair [[0, 1, 1, 1, 0, 0, null, 1], 4]', [[0, 1, 1, 1, 0, 0, None, 1], 4], [[1, 0], 2]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[], 3]', [[], 3], [[], 0]], ['control [[1, 1, 0, 0, 0, 1, 1, 1, 0], 3]', [[1, 1, 0, 0, 0, 1, 1, 1, 0], 3], [[1, 0, 1], 3]]], [['regression [[1, 1, null], 3]', [[1, 1, None], 3], [[1], 0]], ['regression [[1, 1, 0, null, 0, null, 0, 0, 0, 1], 5]', [[1, 1, 0, None, 0, None, 0, 0, 0, 1], 5], [[None, 0], 1]], ['partial-repair [[1, 0], 2]', [[1, 0], 2], [[None], 0]], ['partial-repair [[1, 1, 0, 0, 0, 1, 1, 1, 0], 3]', [[1, 1, 0, 0, 0, 1, 1, 1, 0], 3], [[1, 0, 1], 3]], ['control [[], 3]', [[], 3], [[], 0]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[0, 1, 0, 1, 0, null, 1, 0, 1, 1], 5]', [[0, 1, 0, 1, 0, None, 1, 0, 1, 1], 5], [[0, 1], 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, null, 1], 3] | [[1], 0] | [[None], 0] | Failed |
| regression [[1, 1, null], 3] | [[1], 0] | [[1], 0] | Passed |
| partial-repair [[1, 1, 0], 3] | [[1], 0] | [[1], 1] | Failed |
| control [[1], 1] | [[1], 0] | [[1], 0] | Passed |
| control [[1, 1], 3] | None | None | Passed |
| control [[], 3] | [[], 0] | [[], 0] | Passed |
| control [[1, 1, 0, null, 0, null, 0, 0, 0, 1], 5] | [[1, 1], 0] | [[None, 0], 1] | Failed |
| control [[0, 1, 0, 1, 0, null, 1, 0, 1, 1], 5] | [[1, 1], 0] | [[0, 1], 3] | Failed |
SHA-256 / 029f2119e83c7671f571e3ca899d54e4af0fc51ad374ecbf2ade5772d614772d
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(r, n):
if n < 1 or len(r) % n:
return None
out, fixed_count = [], 0
for g in range(0, len(r), n):
grp = [x for x in r[g:g + n] if x is not None]
ones = sum(grp)
zeros = len(grp) - ones
if ones == zeros:
out.append(None)
continue
b = 1 if ones > zeros else 0
out.append(b)
fixed_count += min(ones, zeros)
return [out, fixed_count]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression [[0, null, 1], 3]', [[0, None, 1], 3], [[None], 0]], ['regression [[1, 1, null], 3]', [[1, 1, None], 3], [[1], 0]], ['partial-repair [[1, 1, 0], 3]', [[1, 1, 0], 3], [[1], 1]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[], 3]', [[], 3], [[], 0]], ['control [[1, 1, 0, null, 0, null, 0, 0, 0, 1], 5]', [[1, 1, 0, None, 0, None, 0, 0, 0, 1], 5], [[None, 0], 1]], ['control [[0, 1, 0, 1, 0, null, 1, 0, 1, 1], 5]', [[0, 1, 0, 1, 0, None, 1, 0, 1, 1], 5], [[0, 1], 3]]], [['regression [[0, 1, 0, 1, 0, null, 1, 0, 1, 1], 5]', [[0, 1, 0, 1, 0, None, 1, 0, 1, 1], 5], [[0, 1], 3]], ['regression [[1, 1, null, 0, 1, null, 0, null], 2]', [[1, 1, None, 0, 1, None, 0, None], 2], [[1, 0, 1, 0], 0]], ['partial-repair [[0, 0, null, null], 4]', [[0, 0, None, None], 4], [[0], 0]], ['control [[], 3]', [[], 3], [[], 0]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[1, 0, null, null, 1, 1], 3]', [[1, 0, None, None, 1, 1], 3], [[None, 1], 0]], ['control [[0, 1, null, 0, 0, 1, 0, 0, 0, 0], 5]', [[0, 1, None, 0, 0, 1, 0, 0, 0, 0], 5], [[0, 0], 2]]], [['regression [[1, null, 0], 3]', [[1, None, 0], 3], [[None], 0]], ['regression [[null, null, null], 3]', [[None, None, None], 3], [[None], 0]], ['partial-repair [[1, 0, null, null, 1, 1], 3]', [[1, 0, None, None, 1, 1], 3], [[None, 1], 0]], ['partial-repair [[0, 1, null, 0, 0, 1, 0, 0, 0, 0], 5]', [[0, 1, None, 0, 0, 1, 0, 0, 0, 0], 5], [[0, 0], 2]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[], 3]', [[], 3], [[], 0]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[0, 1, 1, 1, 0, 0, null, 1], 4]', [[0, 1, 1, 1, 0, 0, None, 1], 4], [[1, 0], 2]]], [['regression [[0, null, 1, 1, 1], 5]', [[0, None, 1, 1, 1], 5], [[1], 1]], ['regression [[null, 0, 1, 0, null, 1], 3]', [[None, 0, 1, 0, None, 1], 3], [[None, None], 0]], ['partial-repair [[1, 0, 0, 1, 1, 0], 3]', [[1, 0, 0, 1, 1, 0], 3], [[0, 1], 2]], ['partial-repair [[0, 1, 1, 1, 0, 0, null, 1], 4]', [[0, 1, 1, 1, 0, 0, None, 1], 4], [[1, 0], 2]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[], 3]', [[], 3], [[], 0]], ['control [[1, 1, 0, 0, 0, 1, 1, 1, 0], 3]', [[1, 1, 0, 0, 0, 1, 1, 1, 0], 3], [[1, 0, 1], 3]]], [['regression [[1, 1, null], 3]', [[1, 1, None], 3], [[1], 0]], ['regression [[1, 1, 0, null, 0, null, 0, 0, 0, 1], 5]', [[1, 1, 0, None, 0, None, 0, 0, 0, 1], 5], [[None, 0], 1]], ['partial-repair [[1, 0], 2]', [[1, 0], 2], [[None], 0]], ['partial-repair [[1, 1, 0, 0, 0, 1, 1, 1, 0], 3]', [[1, 1, 0, 0, 0, 1, 1, 1, 0], 3], [[1, 0, 1], 3]], ['control [[], 3]', [[], 3], [[], 0]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[0, 1, 0, 1, 0, null, 1, 0, 1, 1], 5]', [[0, 1, 0, 1, 0, None, 1, 0, 1, 1], 5], [[0, 1], 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, null, 1], 3] | [[None], 0] | [[None], 0] | Passed |
| regression [[1, 1, null], 3] | [[1], 0] | [[1], 0] | Passed |
| partial-repair [[1, 1, 0], 3] | [[1], 1] | [[1], 1] | Passed |
| control [[1], 1] | [[1], 0] | [[1], 0] | Passed |
| control [[1, 1], 3] | None | None | Passed |
| control [[], 3] | [[], 0] | [[], 0] | Passed |
| control [[1, 1, 0, null, 0, null, 0, 0, 0, 1], 5] | [[None, 0], 1] | [[None, 0], 1] | Passed |
| control [[0, 1, 0, 1, 0, null, 1, 0, 1, 1], 5] | [[0, 1], 3] | [[0, 1], 3] | Passed |
SHA-256 / c73e596a3282473f6630001674ff08842ed51f609d8c660a83a5567a509e1154
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:33.570817+00:00.
Case digest / ff855f5f4a9d5ae7aab1a968c17baa6c3ed7590f487dca636506985972bad75c