FAILURE MAP
← Case archive

FA-72271 / Error-correcting codes / Open access

Burst capability reports a burst for a code that corrects nothing · case 01

A single-parity code is credited with a non-positive or one-bit burst capability.

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

ROOT CAUSE

The t = 0 case falls into the general formula.

VERIFIED REPAIR

Return 0 when t = 0.

Unsuccessful approach: Clamping to one bit still claims a correction the code cannot make.

Case contract

Guaranteed burst correction of an RS(n, k) code with m-bit symbols interleaved to depth D. Each codeword corrects t = floor((n - k) / 2) symbol errors; D interleaved codewords correct any burst of at most (t*D - 1)*m + 1 bits (a burst that straddles symbol boundaries touches one extra symbol). t = 0 gives 0. Invalid parameters return None.

Why this case matters

Optical, DVB and storage link budgets quote the longest correctable burst for an interleaved RS code.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(n, k, m, depth):
    if not 0 < k < n or m < 1 or depth < 1:
        return None
    t = (n - k) // 2
    burst = (t * depth - 1) * m + 1
    return [t, burst]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression [255, 254, 8, 5]', [255, 254, 8, 5], [0, 0]], ['partial-repair [7, 6, 1, 1]', [7, 6, 1, 1], [0, 0]], ['control [255, 223, 8, 1]', [255, 223, 8, 1], [16, 121]], ['control [255, 223, 8, 4]', [255, 223, 8, 4], [16, 505]], ['control [255, 239, 8, 2]', [255, 239, 8, 2], [8, 121]], ['control [204, 188, 8, 12]', [204, 188, 8, 12], [8, 761]], ['control [15, 11, 4, 3]', [15, 11, 4, 3], [2, 21]], ['control [7, 3, 3, 2]', [7, 3, 3, 2], [2, 10]]], [['regression [255, 254, 8, 5]', [255, 254, 8, 5], [0, 0]], ['partial-repair [7, 6, 1, 1]', [7, 6, 1, 1], [0, 0]], ['control [7, 3, 3, 2]', [7, 3, 3, 2], [2, 10]], ['control [31, 25, 5, 1]', [31, 25, 5, 1], [3, 11]], ['control [15, 9, 4, 1]', [15, 9, 4, 1], [3, 9]], ['control [10, 7, 2, 3]', [10, 7, 2, 3], [1, 5]], ['control [255, 253, 8, 1]', [255, 253, 8, 1], [1, 1]], ['control [7, 5, 3, 4]', [7, 5, 3, 4], [1, 10]]], [['regression [255, 254, 8, 5]', [255, 254, 8, 5], [0, 0]], ['partial-repair [7, 6, 1, 1]', [7, 6, 1, 1], [0, 0]], ['control [7, 5, 3, 4]', [7, 5, 3, 4], [1, 10]], ['control [20, 10, 1, 1]', [20, 10, 1, 1], [5, 5]], ['control [5, 5, 8, 1]', [5, 5, 8, 1], None], ['control [5, 2, 0, 1]', [5, 2, 0, 1], None], ['control [255, 223, 8, 1]', [255, 223, 8, 1], [16, 121]], ['control [255, 223, 8, 4]', [255, 223, 8, 4], [16, 505]]], [['regression [255, 254, 8, 5]', [255, 254, 8, 5], [0, 0]], ['partial-repair [7, 6, 1, 1]', [7, 6, 1, 1], [0, 0]], ['control [255, 223, 8, 4]', [255, 223, 8, 4], [16, 505]], ['control [255, 239, 8, 2]', [255, 239, 8, 2], [8, 121]], ['control [204, 188, 8, 12]', [204, 188, 8, 12], [8, 761]], ['control [15, 11, 4, 3]', [15, 11, 4, 3], [2, 21]], ['control [7, 3, 3, 2]', [7, 3, 3, 2], [2, 10]], ['control [31, 25, 5, 1]', [31, 25, 5, 1], [3, 11]]], [['regression [255, 254, 8, 5]', [255, 254, 8, 5], [0, 0]], ['partial-repair [7, 6, 1, 1]', [7, 6, 1, 1], [0, 0]], ['control [31, 25, 5, 1]', [31, 25, 5, 1], [3, 11]], ['control [15, 9, 4, 1]', [15, 9, 4, 1], [3, 9]], ['control [10, 7, 2, 3]', [10, 7, 2, 3], [1, 5]], ['control [255, 253, 8, 1]', [255, 253, 8, 1], [1, 1]], ['control [7, 5, 3, 4]', [7, 5, 3, 4], [1, 10]], ['control [20, 10, 1, 1]', [20, 10, 1, 1], [5, 5]]]]
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 [255, 254, 8, 5][0, -7][0, 0]Failed
partial-repair [7, 6, 1, 1][0, 0][0, 0]Passed
control [255, 223, 8, 1][16, 121][16, 121]Passed
control [255, 223, 8, 4][16, 505][16, 505]Passed
control [255, 239, 8, 2][8, 121][8, 121]Passed
control [204, 188, 8, 12][8, 761][8, 761]Passed
control [15, 11, 4, 3][2, 21][2, 21]Passed
control [7, 3, 3, 2][2, 10][2, 10]Passed

SHA-256 / 9907354d97d0dd72f4a012dc854f0f8b023aa7a4c3755c9eac295d590698e4a5

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(n, k, m, depth):
    if not 0 < k < n or m < 1 or depth < 1:
        return None
    t = (n - k) // 2
    burst = (t * depth - 1) * m + 1 if t else 1
    return [t, burst]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression [255, 254, 8, 5]', [255, 254, 8, 5], [0, 0]], ['partial-repair [7, 6, 1, 1]', [7, 6, 1, 1], [0, 0]], ['control [255, 223, 8, 1]', [255, 223, 8, 1], [16, 121]], ['control [255, 223, 8, 4]', [255, 223, 8, 4], [16, 505]], ['control [255, 239, 8, 2]', [255, 239, 8, 2], [8, 121]], ['control [204, 188, 8, 12]', [204, 188, 8, 12], [8, 761]], ['control [15, 11, 4, 3]', [15, 11, 4, 3], [2, 21]], ['control [7, 3, 3, 2]', [7, 3, 3, 2], [2, 10]]], [['regression [255, 254, 8, 5]', [255, 254, 8, 5], [0, 0]], ['partial-repair [7, 6, 1, 1]', [7, 6, 1, 1], [0, 0]], ['control [7, 3, 3, 2]', [7, 3, 3, 2], [2, 10]], ['control [31, 25, 5, 1]', [31, 25, 5, 1], [3, 11]], ['control [15, 9, 4, 1]', [15, 9, 4, 1], [3, 9]], ['control [10, 7, 2, 3]', [10, 7, 2, 3], [1, 5]], ['control [255, 253, 8, 1]', [255, 253, 8, 1], [1, 1]], ['control [7, 5, 3, 4]', [7, 5, 3, 4], [1, 10]]], [['regression [255, 254, 8, 5]', [255, 254, 8, 5], [0, 0]], ['partial-repair [7, 6, 1, 1]', [7, 6, 1, 1], [0, 0]], ['control [7, 5, 3, 4]', [7, 5, 3, 4], [1, 10]], ['control [20, 10, 1, 1]', [20, 10, 1, 1], [5, 5]], ['control [5, 5, 8, 1]', [5, 5, 8, 1], None], ['control [5, 2, 0, 1]', [5, 2, 0, 1], None], ['control [255, 223, 8, 1]', [255, 223, 8, 1], [16, 121]], ['control [255, 223, 8, 4]', [255, 223, 8, 4], [16, 505]]], [['regression [255, 254, 8, 5]', [255, 254, 8, 5], [0, 0]], ['partial-repair [7, 6, 1, 1]', [7, 6, 1, 1], [0, 0]], ['control [255, 223, 8, 4]', [255, 223, 8, 4], [16, 505]], ['control [255, 239, 8, 2]', [255, 239, 8, 2], [8, 121]], ['control [204, 188, 8, 12]', [204, 188, 8, 12], [8, 761]], ['control [15, 11, 4, 3]', [15, 11, 4, 3], [2, 21]], ['control [7, 3, 3, 2]', [7, 3, 3, 2], [2, 10]], ['control [31, 25, 5, 1]', [31, 25, 5, 1], [3, 11]]], [['regression [255, 254, 8, 5]', [255, 254, 8, 5], [0, 0]], ['partial-repair [7, 6, 1, 1]', [7, 6, 1, 1], [0, 0]], ['control [31, 25, 5, 1]', [31, 25, 5, 1], [3, 11]], ['control [15, 9, 4, 1]', [15, 9, 4, 1], [3, 9]], ['control [10, 7, 2, 3]', [10, 7, 2, 3], [1, 5]], ['control [255, 253, 8, 1]', [255, 253, 8, 1], [1, 1]], ['control [7, 5, 3, 4]', [7, 5, 3, 4], [1, 10]], ['control [20, 10, 1, 1]', [20, 10, 1, 1], [5, 5]]]]
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 [255, 254, 8, 5][0, 1][0, 0]Failed
partial-repair [7, 6, 1, 1][0, 1][0, 0]Failed
control [255, 223, 8, 1][16, 121][16, 121]Passed
control [255, 223, 8, 4][16, 505][16, 505]Passed
control [255, 239, 8, 2][8, 121][8, 121]Passed
control [204, 188, 8, 12][8, 761][8, 761]Passed
control [15, 11, 4, 3][2, 21][2, 21]Passed
control [7, 3, 3, 2][2, 10][2, 10]Passed

SHA-256 / ea837b75a8465b02dfb7b545b8f61955fcf3b4211e4a0fbab439cb061bbf89db

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(n, k, m, depth):
    if not 0 < k < n or m < 1 or depth < 1:
        return None
    t = (n - k) // 2
    burst = (t * depth - 1) * m + 1 if t else 0
    return [t, burst]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression [255, 254, 8, 5]', [255, 254, 8, 5], [0, 0]], ['partial-repair [7, 6, 1, 1]', [7, 6, 1, 1], [0, 0]], ['control [255, 223, 8, 1]', [255, 223, 8, 1], [16, 121]], ['control [255, 223, 8, 4]', [255, 223, 8, 4], [16, 505]], ['control [255, 239, 8, 2]', [255, 239, 8, 2], [8, 121]], ['control [204, 188, 8, 12]', [204, 188, 8, 12], [8, 761]], ['control [15, 11, 4, 3]', [15, 11, 4, 3], [2, 21]], ['control [7, 3, 3, 2]', [7, 3, 3, 2], [2, 10]]], [['regression [255, 254, 8, 5]', [255, 254, 8, 5], [0, 0]], ['partial-repair [7, 6, 1, 1]', [7, 6, 1, 1], [0, 0]], ['control [7, 3, 3, 2]', [7, 3, 3, 2], [2, 10]], ['control [31, 25, 5, 1]', [31, 25, 5, 1], [3, 11]], ['control [15, 9, 4, 1]', [15, 9, 4, 1], [3, 9]], ['control [10, 7, 2, 3]', [10, 7, 2, 3], [1, 5]], ['control [255, 253, 8, 1]', [255, 253, 8, 1], [1, 1]], ['control [7, 5, 3, 4]', [7, 5, 3, 4], [1, 10]]], [['regression [255, 254, 8, 5]', [255, 254, 8, 5], [0, 0]], ['partial-repair [7, 6, 1, 1]', [7, 6, 1, 1], [0, 0]], ['control [7, 5, 3, 4]', [7, 5, 3, 4], [1, 10]], ['control [20, 10, 1, 1]', [20, 10, 1, 1], [5, 5]], ['control [5, 5, 8, 1]', [5, 5, 8, 1], None], ['control [5, 2, 0, 1]', [5, 2, 0, 1], None], ['control [255, 223, 8, 1]', [255, 223, 8, 1], [16, 121]], ['control [255, 223, 8, 4]', [255, 223, 8, 4], [16, 505]]], [['regression [255, 254, 8, 5]', [255, 254, 8, 5], [0, 0]], ['partial-repair [7, 6, 1, 1]', [7, 6, 1, 1], [0, 0]], ['control [255, 223, 8, 4]', [255, 223, 8, 4], [16, 505]], ['control [255, 239, 8, 2]', [255, 239, 8, 2], [8, 121]], ['control [204, 188, 8, 12]', [204, 188, 8, 12], [8, 761]], ['control [15, 11, 4, 3]', [15, 11, 4, 3], [2, 21]], ['control [7, 3, 3, 2]', [7, 3, 3, 2], [2, 10]], ['control [31, 25, 5, 1]', [31, 25, 5, 1], [3, 11]]], [['regression [255, 254, 8, 5]', [255, 254, 8, 5], [0, 0]], ['partial-repair [7, 6, 1, 1]', [7, 6, 1, 1], [0, 0]], ['control [31, 25, 5, 1]', [31, 25, 5, 1], [3, 11]], ['control [15, 9, 4, 1]', [15, 9, 4, 1], [3, 9]], ['control [10, 7, 2, 3]', [10, 7, 2, 3], [1, 5]], ['control [255, 253, 8, 1]', [255, 253, 8, 1], [1, 1]], ['control [7, 5, 3, 4]', [7, 5, 3, 4], [1, 10]], ['control [20, 10, 1, 1]', [20, 10, 1, 1], [5, 5]]]]
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 [255, 254, 8, 5][0, 0][0, 0]Passed
partial-repair [7, 6, 1, 1][0, 0][0, 0]Passed
control [255, 223, 8, 1][16, 121][16, 121]Passed
control [255, 223, 8, 4][16, 505][16, 505]Passed
control [255, 239, 8, 2][8, 121][8, 121]Passed
control [204, 188, 8, 12][8, 761][8, 761]Passed
control [15, 11, 4, 3][2, 21][2, 21]Passed
control [7, 3, 3, 2][2, 10][2, 10]Passed

SHA-256 / 967fdffe270766ffaa570bcb987baf0c1350d164cef95d111a4f46bdab224b50

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

Case digest / 4838efa55fdf0b2bdeb63cec3053734e536a231e6f629238fce133e1ddb586c6