FA-72091 / Error-correcting codes / Open access
Min-sum sign includes the edge own message · case 01
Outgoing messages point back towards the incoming belief instead of the extrinsic one.
ROOT CAUSE
The sign product runs over all incoming LLRs including edge i.
VERIFIED REPAIR
Multiply only the signs of the other edges.
Unsuccessful approach: Taking the sign of the sum of the other LLRs lets one strong message outvote the parity of the signs.
Case contract
Offset min-sum check-node update for LDPC decoding with integer LLRs. For each edge i the outgoing message is the product of the signs of all OTHER incoming LLRs (0 counts as positive) times max(min |other LLR| - beta, 0). Fewer than two edges returns None. Return the outgoing messages in edge order.
Why this case matters
LDPC decoders in Wi-Fi, 5G and SSD controllers run this update billions of times per second.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(llrs, beta):
if len(llrs) < 2:
return None
out = []
for i in range(len(llrs)):
others = llrs[:i] + llrs[i + 1:]
sign = 1
for v in llrs:
if v < 0:
sign = -sign
mag = min(abs(v) for v in others)
out.append(sign * max(mag - beta, 0))
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression [[12, -11, -9, -2, 8, -3], 1]', [[12, -11, -9, -2, 8, -3], 1], [1, -1, -1, -2, 1, -1]], ['regression [[-3, 6], 2]', [[-3, 6], 2], [4, -1]], ['partial-repair [[12, 0, -10, 8], 1]', [[12, 0, -10, 8], 1], [0, -7, 0, 0]], ['control [[3, 4], 0]', [[3, 4], 0], [4, 3]], ['control [[1, -2, -3, -4], 1]', [[1, -2, -3, -4], 1], [-1, 0, 0, 0]], ['control [[-2, -12, 2, -7, 10, 7], 2]', [[-2, -12, 2, -7, 10, 7], 2], [0, 0, 0, 0, 0, 0]], ['control [[3, -8], 3]', [[3, -8], 3], [-5, 0]], ['control [[12, 2], 3]', [[12, 2], 3], [0, 9]]], [['regression [[1, 7, -2], 0]', [[1, 7, -2], 0], [-2, -1, 1]], ['regression [[-3, 6], 3]', [[-3, 6], 3], [3, 0]], ['partial-repair [[-6, 10, 0], 1]', [[-6, 10, 0], 1], [0, 0, -5]], ['control [[-12, 7, -1, 8, 11, -2], 3]', [[-12, 7, -1, 8, 11, -2], 3], [0, 0, 0, 0, 0, 0]], ['control [[2, 4], 3]', [[2, 4], 3], [1, 0]], ['control [[1, 11], 2]', [[1, 11], 2], [9, 0]], ['control [[2, 2, 2], 3]', [[2, 2, 2], 3], [0, 0, 0]], ['control [[-1], 0]', [[-1], 0], None]], [['regression [[-10, 12, 6, 2], 0]', [[-10, 12, 6, 2], 0], [2, -2, -2, -6]], ['regression [[5, -12, -9], 3]', [[5, -12, -9], 3], [6, -2, -2]], ['partial-repair [[4, -9, -7, -9, 6], 3]', [[4, -9, -7, -9, 6], 3], [-3, 1, 1, 1, -1]], ['control [[3, -8, 1], 2]', [[3, -8, 1], 2], [0, 0, -1]], ['control [[3, 4], 0]', [[3, 4], 0], [4, 3]], ['control [[1, -2, -3, -4], 1]', [[1, -2, -3, -4], 1], [-1, 0, 0, 0]], ['control [[-2, -12, 2, -7, 10, 7], 2]', [[-2, -12, 2, -7, 10, 7], 2], [0, 0, 0, 0, 0, 0]], ['control [[3, -8], 3]', [[3, -8], 3], [-5, 0]]], [['regression [[5, -3, -1, -4], 0]', [[5, -3, -1, -4], 0], [-1, 1, 3, 1]], ['regression [[11, 8, 12, -10], 1]', [[11, 8, 12, -10], 1], [-7, -9, -7, 7]], ['partial-repair [[11, -6, -1], 1]', [[11, -6, -1], 1], [0, 0, -5]], ['control [[12, 2], 3]', [[12, 2], 3], [0, 9]], ['control [[-12, 7, -1, 8, 11, -2], 3]', [[-12, 7, -1, 8, 11, -2], 3], [0, 0, 0, 0, 0, 0]], ['control [[2, 4], 3]', [[2, 4], 3], [1, 0]], ['control [[1, 11], 2]', [[1, 11], 2], [9, 0]], ['control [[2, 2, 2], 3]', [[2, 2, 2], 3], [0, 0, 0]]], [['regression [[-1, 2, -7], 1]', [[-1, 2, -7], 1], [-1, 0, 0]], ['regression [[5, -3], 1]', [[5, -3], 1], [-2, 4]], ['partial-repair [[0, -4, 6], 1]', [[0, -4, 6], 1], [-3, 0, 0]], ['partial-repair [[-7, -7, 1, 9], 0]', [[-7, -7, 1, 9], 0], [-1, -1, 7, 1]], ['control [[-1], 0]', [[-1], 0], None], ['control [[3, -8, 1], 2]', [[3, -8, 1], 2], [0, 0, -1]], ['control [[3, 4], 0]', [[3, 4], 0], [4, 3]], ['control [[1, -2, -3, -4], 1]', [[1, -2, -3, -4], 1], [-1, 0, 0, 0]]]]
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 [[12, -11, -9, -2, 8, -3], 1] | [1, 1, 1, 2, 1, 1] | [1, -1, -1, -2, 1, -1] | Failed |
| regression [[-3, 6], 2] | [-4, -1] | [4, -1] | Failed |
| partial-repair [[12, 0, -10, 8], 1] | [0, -7, 0, 0] | [0, -7, 0, 0] | Passed |
| control [[3, 4], 0] | [4, 3] | [4, 3] | Passed |
| control [[1, -2, -3, -4], 1] | [-1, 0, 0, 0] | [-1, 0, 0, 0] | Passed |
| control [[-2, -12, 2, -7, 10, 7], 2] | [0, 0, 0, 0, 0, 0] | [0, 0, 0, 0, 0, 0] | Passed |
| control [[3, -8], 3] | [-5, 0] | [-5, 0] | Passed |
| control [[12, 2], 3] | [0, 9] | [0, 9] | Passed |
SHA-256 / 891f9d8a2e34d76d9f3a6b23e9a5c5c0193bf7b2ba09ea5dad0172045b2a7fc1
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(llrs, beta):
if len(llrs) < 2:
return None
out = []
for i in range(len(llrs)):
others = llrs[:i] + llrs[i + 1:]
sign = 1 if sum(others) >= 0 else -1
for v in others:
if v < 0:
pass
mag = min(abs(v) for v in others)
out.append(sign * max(mag - beta, 0))
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression [[12, -11, -9, -2, 8, -3], 1]', [[12, -11, -9, -2, 8, -3], 1], [1, -1, -1, -2, 1, -1]], ['regression [[-3, 6], 2]', [[-3, 6], 2], [4, -1]], ['partial-repair [[12, 0, -10, 8], 1]', [[12, 0, -10, 8], 1], [0, -7, 0, 0]], ['control [[3, 4], 0]', [[3, 4], 0], [4, 3]], ['control [[1, -2, -3, -4], 1]', [[1, -2, -3, -4], 1], [-1, 0, 0, 0]], ['control [[-2, -12, 2, -7, 10, 7], 2]', [[-2, -12, 2, -7, 10, 7], 2], [0, 0, 0, 0, 0, 0]], ['control [[3, -8], 3]', [[3, -8], 3], [-5, 0]], ['control [[12, 2], 3]', [[12, 2], 3], [0, 9]]], [['regression [[1, 7, -2], 0]', [[1, 7, -2], 0], [-2, -1, 1]], ['regression [[-3, 6], 3]', [[-3, 6], 3], [3, 0]], ['partial-repair [[-6, 10, 0], 1]', [[-6, 10, 0], 1], [0, 0, -5]], ['control [[-12, 7, -1, 8, 11, -2], 3]', [[-12, 7, -1, 8, 11, -2], 3], [0, 0, 0, 0, 0, 0]], ['control [[2, 4], 3]', [[2, 4], 3], [1, 0]], ['control [[1, 11], 2]', [[1, 11], 2], [9, 0]], ['control [[2, 2, 2], 3]', [[2, 2, 2], 3], [0, 0, 0]], ['control [[-1], 0]', [[-1], 0], None]], [['regression [[-10, 12, 6, 2], 0]', [[-10, 12, 6, 2], 0], [2, -2, -2, -6]], ['regression [[5, -12, -9], 3]', [[5, -12, -9], 3], [6, -2, -2]], ['partial-repair [[4, -9, -7, -9, 6], 3]', [[4, -9, -7, -9, 6], 3], [-3, 1, 1, 1, -1]], ['control [[3, -8, 1], 2]', [[3, -8, 1], 2], [0, 0, -1]], ['control [[3, 4], 0]', [[3, 4], 0], [4, 3]], ['control [[1, -2, -3, -4], 1]', [[1, -2, -3, -4], 1], [-1, 0, 0, 0]], ['control [[-2, -12, 2, -7, 10, 7], 2]', [[-2, -12, 2, -7, 10, 7], 2], [0, 0, 0, 0, 0, 0]], ['control [[3, -8], 3]', [[3, -8], 3], [-5, 0]]], [['regression [[5, -3, -1, -4], 0]', [[5, -3, -1, -4], 0], [-1, 1, 3, 1]], ['regression [[11, 8, 12, -10], 1]', [[11, 8, 12, -10], 1], [-7, -9, -7, 7]], ['partial-repair [[11, -6, -1], 1]', [[11, -6, -1], 1], [0, 0, -5]], ['control [[12, 2], 3]', [[12, 2], 3], [0, 9]], ['control [[-12, 7, -1, 8, 11, -2], 3]', [[-12, 7, -1, 8, 11, -2], 3], [0, 0, 0, 0, 0, 0]], ['control [[2, 4], 3]', [[2, 4], 3], [1, 0]], ['control [[1, 11], 2]', [[1, 11], 2], [9, 0]], ['control [[2, 2, 2], 3]', [[2, 2, 2], 3], [0, 0, 0]]], [['regression [[-1, 2, -7], 1]', [[-1, 2, -7], 1], [-1, 0, 0]], ['regression [[5, -3], 1]', [[5, -3], 1], [-2, 4]], ['partial-repair [[0, -4, 6], 1]', [[0, -4, 6], 1], [-3, 0, 0]], ['partial-repair [[-7, -7, 1, 9], 0]', [[-7, -7, 1, 9], 0], [-1, -1, 7, 1]], ['control [[-1], 0]', [[-1], 0], None], ['control [[3, -8, 1], 2]', [[3, -8, 1], 2], [0, 0, -1]], ['control [[3, 4], 0]', [[3, 4], 0], [4, 3]], ['control [[1, -2, -3, -4], 1]', [[1, -2, -3, -4], 1], [-1, 0, 0, 0]]]]
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 [[12, -11, -9, -2, 8, -3], 1] | [-1, 1, 1, -2, -1, -1] | [1, -1, -1, -2, 1, -1] | Failed |
| regression [[-3, 6], 2] | [4, -1] | [4, -1] | Passed |
| partial-repair [[12, 0, -10, 8], 1] | [0, 7, 0, 0] | [0, -7, 0, 0] | Failed |
| control [[3, 4], 0] | [4, 3] | [4, 3] | Passed |
| control [[1, -2, -3, -4], 1] | [-1, 0, 0, 0] | [-1, 0, 0, 0] | Passed |
| control [[-2, -12, 2, -7, 10, 7], 2] | [0, 0, 0, 0, 0, 0] | [0, 0, 0, 0, 0, 0] | Passed |
| control [[3, -8], 3] | [-5, 0] | [-5, 0] | Passed |
| control [[12, 2], 3] | [0, 9] | [0, 9] | Passed |
SHA-256 / 0e9664b92e913771ed8d6a8a5e3884c2f828d5b4a0e759add0a40d605f03d26a
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(llrs, beta):
if len(llrs) < 2:
return None
out = []
for i in range(len(llrs)):
others = llrs[:i] + llrs[i + 1:]
sign = 1
for v in others:
if v < 0:
sign = -sign
mag = min(abs(v) for v in others)
out.append(sign * max(mag - beta, 0))
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression [[12, -11, -9, -2, 8, -3], 1]', [[12, -11, -9, -2, 8, -3], 1], [1, -1, -1, -2, 1, -1]], ['regression [[-3, 6], 2]', [[-3, 6], 2], [4, -1]], ['partial-repair [[12, 0, -10, 8], 1]', [[12, 0, -10, 8], 1], [0, -7, 0, 0]], ['control [[3, 4], 0]', [[3, 4], 0], [4, 3]], ['control [[1, -2, -3, -4], 1]', [[1, -2, -3, -4], 1], [-1, 0, 0, 0]], ['control [[-2, -12, 2, -7, 10, 7], 2]', [[-2, -12, 2, -7, 10, 7], 2], [0, 0, 0, 0, 0, 0]], ['control [[3, -8], 3]', [[3, -8], 3], [-5, 0]], ['control [[12, 2], 3]', [[12, 2], 3], [0, 9]]], [['regression [[1, 7, -2], 0]', [[1, 7, -2], 0], [-2, -1, 1]], ['regression [[-3, 6], 3]', [[-3, 6], 3], [3, 0]], ['partial-repair [[-6, 10, 0], 1]', [[-6, 10, 0], 1], [0, 0, -5]], ['control [[-12, 7, -1, 8, 11, -2], 3]', [[-12, 7, -1, 8, 11, -2], 3], [0, 0, 0, 0, 0, 0]], ['control [[2, 4], 3]', [[2, 4], 3], [1, 0]], ['control [[1, 11], 2]', [[1, 11], 2], [9, 0]], ['control [[2, 2, 2], 3]', [[2, 2, 2], 3], [0, 0, 0]], ['control [[-1], 0]', [[-1], 0], None]], [['regression [[-10, 12, 6, 2], 0]', [[-10, 12, 6, 2], 0], [2, -2, -2, -6]], ['regression [[5, -12, -9], 3]', [[5, -12, -9], 3], [6, -2, -2]], ['partial-repair [[4, -9, -7, -9, 6], 3]', [[4, -9, -7, -9, 6], 3], [-3, 1, 1, 1, -1]], ['control [[3, -8, 1], 2]', [[3, -8, 1], 2], [0, 0, -1]], ['control [[3, 4], 0]', [[3, 4], 0], [4, 3]], ['control [[1, -2, -3, -4], 1]', [[1, -2, -3, -4], 1], [-1, 0, 0, 0]], ['control [[-2, -12, 2, -7, 10, 7], 2]', [[-2, -12, 2, -7, 10, 7], 2], [0, 0, 0, 0, 0, 0]], ['control [[3, -8], 3]', [[3, -8], 3], [-5, 0]]], [['regression [[5, -3, -1, -4], 0]', [[5, -3, -1, -4], 0], [-1, 1, 3, 1]], ['regression [[11, 8, 12, -10], 1]', [[11, 8, 12, -10], 1], [-7, -9, -7, 7]], ['partial-repair [[11, -6, -1], 1]', [[11, -6, -1], 1], [0, 0, -5]], ['control [[12, 2], 3]', [[12, 2], 3], [0, 9]], ['control [[-12, 7, -1, 8, 11, -2], 3]', [[-12, 7, -1, 8, 11, -2], 3], [0, 0, 0, 0, 0, 0]], ['control [[2, 4], 3]', [[2, 4], 3], [1, 0]], ['control [[1, 11], 2]', [[1, 11], 2], [9, 0]], ['control [[2, 2, 2], 3]', [[2, 2, 2], 3], [0, 0, 0]]], [['regression [[-1, 2, -7], 1]', [[-1, 2, -7], 1], [-1, 0, 0]], ['regression [[5, -3], 1]', [[5, -3], 1], [-2, 4]], ['partial-repair [[0, -4, 6], 1]', [[0, -4, 6], 1], [-3, 0, 0]], ['partial-repair [[-7, -7, 1, 9], 0]', [[-7, -7, 1, 9], 0], [-1, -1, 7, 1]], ['control [[-1], 0]', [[-1], 0], None], ['control [[3, -8, 1], 2]', [[3, -8, 1], 2], [0, 0, -1]], ['control [[3, 4], 0]', [[3, 4], 0], [4, 3]], ['control [[1, -2, -3, -4], 1]', [[1, -2, -3, -4], 1], [-1, 0, 0, 0]]]]
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 [[12, -11, -9, -2, 8, -3], 1] | [1, -1, -1, -2, 1, -1] | [1, -1, -1, -2, 1, -1] | Passed |
| regression [[-3, 6], 2] | [4, -1] | [4, -1] | Passed |
| partial-repair [[12, 0, -10, 8], 1] | [0, -7, 0, 0] | [0, -7, 0, 0] | Passed |
| control [[3, 4], 0] | [4, 3] | [4, 3] | Passed |
| control [[1, -2, -3, -4], 1] | [-1, 0, 0, 0] | [-1, 0, 0, 0] | Passed |
| control [[-2, -12, 2, -7, 10, 7], 2] | [0, 0, 0, 0, 0, 0] | [0, 0, 0, 0, 0, 0] | Passed |
| control [[3, -8], 3] | [-5, 0] | [-5, 0] | Passed |
| control [[12, 2], 3] | [0, 9] | [0, 9] | Passed |
SHA-256 / a58cf648e40b0bfe358d3f836f0e72950a0751b4dab94e252b8ac74e1aaf8372
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:35.429025+00:00.
Case digest / 19fcb8b7d7cab65e77bbb9e8ded04e75066633878d3a4254412744a032002ac2