FAILURE MAP
← Case archive

FA-71891 / Error-correcting codes / Open access

Repetition decoder resolves ties to zero · case 01

Evenly split or fully erased blocks decode to 0 instead of unknown.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The tie branch is missing, so equal counts fall through to the else value 0.

VERIFIED REPAIR

Emit None whenever the ones and zeros counts are equal.

Unsuccessful approach: Emitting None only for fully erased blocks still guesses on split votes.

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 for x in r[g:g + n] if x is not None]
        ones = sum(grp)
        zeros = len(grp) - ones
        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, 0, null, 0, null, 0, 0, 0, 1], 5]', [[1, 1, 0, None, 0, None, 0, 0, 0, 1], 5], [[None, 0], 1]], ['control [[1, 1, 0], 3]', [[1, 1, 0], 3], [[1], 1]], ['control [[1, 1, null], 3]', [[1, 1, None], 3], [[1], 0]], ['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]], ['control [[0, 0, null, null], 4]', [[0, 0, None, None], 4], [[0], 0]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[1, 1, null, 0, 1, null, 0, null], 2]', [[1, 1, None, 0, 1, None, 0, None], 2], [[1, 0, 1, 0], 0]]], [['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], 2]', [[1, 0], 2], [[None], 0]], ['control [[1, 1, null, 0, 1, null, 0, null], 2]', [[1, 1, None, 0, 1, None, 0, None], 2], [[1, 0, 1, 0], 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]], ['control [[1, 0, 0, 1, 1, 0], 3]', [[1, 0, 0, 1, 1, 0], 3], [[0, 1], 2]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[0, 1, 1, 1, 0, 0, null, 1], 4]', [[0, 1, 1, 1, 0, 0, None, 1], 4], [[1, 0], 2]]], [['regression [[null, 0, 1, 0, null, 1], 3]', [[None, 0, 1, 0, None, 1], 3], [[None, None], 0]], ['regression [[0, null, 1], 3]', [[0, None, 1], 3], [[None], 0]], ['partial-repair [[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 [[1, null, null], 3]', [[1, None, None], 3], [[1], 0]], ['control [[0, null, 1, 1, 1], 5]', [[0, None, 1, 1, 1], 5], [[1], 1]], ['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]], ['control [[1, 1, 0], 3]', [[1, 1, 0], 3], [[1], 1]]], [['regression [[1, 0, null, null, 1, 1], 3]', [[1, 0, None, None, 1, 1], 3], [[None, 1], 0]], ['regression [[1, null, 0], 3]', [[1, None, 0], 3], [[None], 0]], ['partial-repair [[1, 0], 2]', [[1, 0], 2], [[None], 0]], ['control [[1, 1, null], 3]', [[1, 1, None], 3], [[1], 0]], ['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]], ['control [[0, 0, null, null], 4]', [[0, 0, None, None], 4], [[0], 0]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[1, 1, null, 0, 1, null, 0, null], 2]', [[1, 1, None, 0, 1, None, 0, None], 2], [[1, 0, 1, 0], 0]]], [['regression [[1, 0], 2]', [[1, 0], 2], [[None], 0]], ['regression [[null, 0, 1, 0, null, 1], 3]', [[None, 0, 1, 0, None, 1], 3], [[None, None], 0]], ['partial-repair [[0, null, 1], 3]', [[0, None, 1], 3], [[None], 0]], ['partial-repair [[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, 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, 0, 0, 1, 1, 0], 3]', [[1, 0, 0, 1, 1, 0], 3], [[0, 1], 2]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[0, 1, 1, 1, 0, 0, null, 1], 4]', [[0, 1, 1, 1, 0, 0, None, 1], 4], [[1, 0], 2]]]]
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 fixtureActualExpectedOutcome
regression [[0, null, 1], 3][[0], 1][[None], 0]Failed
regression [[1, 1, 0, null, 0, null, 0, 0, 0, 1], 5][[0, 0], 3][[None, 0], 1]Failed
control [[1, 1, 0], 3][[1], 1][[1], 1]Passed
control [[1, 1, null], 3][[1], 0][[1], 0]Passed
control [[0, 1, 0, 1, 0, null, 1, 0, 1, 1], 5][[0, 1], 3][[0, 1], 3]Passed
control [[0, 0, null, null], 4][[0], 0][[0], 0]Passed
control [[1], 1][[1], 0][[1], 0]Passed
control [[1, 1, null, 0, 1, null, 0, null], 2][[1, 0, 1, 0], 0][[1, 0, 1, 0], 0]Passed

SHA-256 / 5dc9d4b4e670c089432349881f315035f1248ad77060331f957d9eb883134b5b

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 is not None]
        ones = sum(grp)
        zeros = len(grp) - ones
        if not grp:
            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, 0, null, 0, null, 0, 0, 0, 1], 5]', [[1, 1, 0, None, 0, None, 0, 0, 0, 1], 5], [[None, 0], 1]], ['control [[1, 1, 0], 3]', [[1, 1, 0], 3], [[1], 1]], ['control [[1, 1, null], 3]', [[1, 1, None], 3], [[1], 0]], ['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]], ['control [[0, 0, null, null], 4]', [[0, 0, None, None], 4], [[0], 0]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[1, 1, null, 0, 1, null, 0, null], 2]', [[1, 1, None, 0, 1, None, 0, None], 2], [[1, 0, 1, 0], 0]]], [['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], 2]', [[1, 0], 2], [[None], 0]], ['control [[1, 1, null, 0, 1, null, 0, null], 2]', [[1, 1, None, 0, 1, None, 0, None], 2], [[1, 0, 1, 0], 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]], ['control [[1, 0, 0, 1, 1, 0], 3]', [[1, 0, 0, 1, 1, 0], 3], [[0, 1], 2]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[0, 1, 1, 1, 0, 0, null, 1], 4]', [[0, 1, 1, 1, 0, 0, None, 1], 4], [[1, 0], 2]]], [['regression [[null, 0, 1, 0, null, 1], 3]', [[None, 0, 1, 0, None, 1], 3], [[None, None], 0]], ['regression [[0, null, 1], 3]', [[0, None, 1], 3], [[None], 0]], ['partial-repair [[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 [[1, null, null], 3]', [[1, None, None], 3], [[1], 0]], ['control [[0, null, 1, 1, 1], 5]', [[0, None, 1, 1, 1], 5], [[1], 1]], ['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]], ['control [[1, 1, 0], 3]', [[1, 1, 0], 3], [[1], 1]]], [['regression [[1, 0, null, null, 1, 1], 3]', [[1, 0, None, None, 1, 1], 3], [[None, 1], 0]], ['regression [[1, null, 0], 3]', [[1, None, 0], 3], [[None], 0]], ['partial-repair [[1, 0], 2]', [[1, 0], 2], [[None], 0]], ['control [[1, 1, null], 3]', [[1, 1, None], 3], [[1], 0]], ['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]], ['control [[0, 0, null, null], 4]', [[0, 0, None, None], 4], [[0], 0]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[1, 1, null, 0, 1, null, 0, null], 2]', [[1, 1, None, 0, 1, None, 0, None], 2], [[1, 0, 1, 0], 0]]], [['regression [[1, 0], 2]', [[1, 0], 2], [[None], 0]], ['regression [[null, 0, 1, 0, null, 1], 3]', [[None, 0, 1, 0, None, 1], 3], [[None, None], 0]], ['partial-repair [[0, null, 1], 3]', [[0, None, 1], 3], [[None], 0]], ['partial-repair [[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, 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, 0, 0, 1, 1, 0], 3]', [[1, 0, 0, 1, 1, 0], 3], [[0, 1], 2]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[0, 1, 1, 1, 0, 0, null, 1], 4]', [[0, 1, 1, 1, 0, 0, None, 1], 4], [[1, 0], 2]]]]
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 fixtureActualExpectedOutcome
regression [[0, null, 1], 3][[0], 1][[None], 0]Failed
regression [[1, 1, 0, null, 0, null, 0, 0, 0, 1], 5][[0, 0], 3][[None, 0], 1]Failed
control [[1, 1, 0], 3][[1], 1][[1], 1]Passed
control [[1, 1, null], 3][[1], 0][[1], 0]Passed
control [[0, 1, 0, 1, 0, null, 1, 0, 1, 1], 5][[0, 1], 3][[0, 1], 3]Passed
control [[0, 0, null, null], 4][[0], 0][[0], 0]Passed
control [[1], 1][[1], 0][[1], 0]Passed
control [[1, 1, null, 0, 1, null, 0, null], 2][[1, 0, 1, 0], 0][[1, 0, 1, 0], 0]Passed

SHA-256 / 46f511a3753b20a0b88ebf7f1bc3b9fd4428997cfb67c3458f058a638f5b4946

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, 0, null, 0, null, 0, 0, 0, 1], 5]', [[1, 1, 0, None, 0, None, 0, 0, 0, 1], 5], [[None, 0], 1]], ['control [[1, 1, 0], 3]', [[1, 1, 0], 3], [[1], 1]], ['control [[1, 1, null], 3]', [[1, 1, None], 3], [[1], 0]], ['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]], ['control [[0, 0, null, null], 4]', [[0, 0, None, None], 4], [[0], 0]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[1, 1, null, 0, 1, null, 0, null], 2]', [[1, 1, None, 0, 1, None, 0, None], 2], [[1, 0, 1, 0], 0]]], [['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], 2]', [[1, 0], 2], [[None], 0]], ['control [[1, 1, null, 0, 1, null, 0, null], 2]', [[1, 1, None, 0, 1, None, 0, None], 2], [[1, 0, 1, 0], 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]], ['control [[1, 0, 0, 1, 1, 0], 3]', [[1, 0, 0, 1, 1, 0], 3], [[0, 1], 2]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[0, 1, 1, 1, 0, 0, null, 1], 4]', [[0, 1, 1, 1, 0, 0, None, 1], 4], [[1, 0], 2]]], [['regression [[null, 0, 1, 0, null, 1], 3]', [[None, 0, 1, 0, None, 1], 3], [[None, None], 0]], ['regression [[0, null, 1], 3]', [[0, None, 1], 3], [[None], 0]], ['partial-repair [[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 [[1, null, null], 3]', [[1, None, None], 3], [[1], 0]], ['control [[0, null, 1, 1, 1], 5]', [[0, None, 1, 1, 1], 5], [[1], 1]], ['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]], ['control [[1, 1, 0], 3]', [[1, 1, 0], 3], [[1], 1]]], [['regression [[1, 0, null, null, 1, 1], 3]', [[1, 0, None, None, 1, 1], 3], [[None, 1], 0]], ['regression [[1, null, 0], 3]', [[1, None, 0], 3], [[None], 0]], ['partial-repair [[1, 0], 2]', [[1, 0], 2], [[None], 0]], ['control [[1, 1, null], 3]', [[1, 1, None], 3], [[1], 0]], ['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]], ['control [[0, 0, null, null], 4]', [[0, 0, None, None], 4], [[0], 0]], ['control [[1], 1]', [[1], 1], [[1], 0]], ['control [[1, 1, null, 0, 1, null, 0, null], 2]', [[1, 1, None, 0, 1, None, 0, None], 2], [[1, 0, 1, 0], 0]]], [['regression [[1, 0], 2]', [[1, 0], 2], [[None], 0]], ['regression [[null, 0, 1, 0, null, 1], 3]', [[None, 0, 1, 0, None, 1], 3], [[None, None], 0]], ['partial-repair [[0, null, 1], 3]', [[0, None, 1], 3], [[None], 0]], ['partial-repair [[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, 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, 0, 0, 1, 1, 0], 3]', [[1, 0, 0, 1, 1, 0], 3], [[0, 1], 2]], ['control [[1, 1], 3]', [[1, 1], 3], None], ['control [[0, 1, 1, 1, 0, 0, null, 1], 4]', [[0, 1, 1, 1, 0, 0, None, 1], 4], [[1, 0], 2]]]]
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 fixtureActualExpectedOutcome
regression [[0, null, 1], 3][[None], 0][[None], 0]Passed
regression [[1, 1, 0, null, 0, null, 0, 0, 0, 1], 5][[None, 0], 1][[None, 0], 1]Passed
control [[1, 1, 0], 3][[1], 1][[1], 1]Passed
control [[1, 1, null], 3][[1], 0][[1], 0]Passed
control [[0, 1, 0, 1, 0, null, 1, 0, 1, 1], 5][[0, 1], 3][[0, 1], 3]Passed
control [[0, 0, null, null], 4][[0], 0][[0], 0]Passed
control [[1], 1][[1], 0][[1], 0]Passed
control [[1, 1, null, 0, 1, null, 0, null], 2][[1, 0, 1, 0], 0][[1, 0, 1, 0], 0]Passed

SHA-256 / 6e3b41a4c8060345ca8cbda608a09dd9a744fbb058323415c2cd0d4420714306

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.591106+00:00.

Case digest / 6ccd7841a81efde95ce70d77035d892df308d28987fa7020754fb2f2145001b1