{"abstract":"Error-free codewords report nonzero syndromes.","category":"Error-correcting codes","checks":8,"contract":"Reed-Solomon syndromes over GF(2^8) (0x11D, alpha = 2, first consecutive root alpha^0). msg lists coefficients from the highest degree down. S_j = msg(alpha^j) for j = 0..nsym-1 by Horner evaluation. Return [syndromes, whether any syndrome is nonzero].","contract_signature":"msg, nsym","evaluation_group":"w2-error_correcting_codes-rs-syndromes","failed_approach":"Multiplying after adding evaluates x * msg(x), which is nonzero at alpha^0 for clean words.","family":"w2-error_correcting_codes-rs-syndromes-coefficient-order","id":"FA-71991","implementations":{"attempt":{"sha256":"479cf6cf78338eda0c712fdef689c9004fdcb54c0277160c9a0d0d5c1fc1a8dd","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(msg, nsym):\n    EXP, LOG = [0] * 512, [0] * 256\n    x = 1\n    for i in range(255):\n        EXP[i] = EXP[i + 255] = x\n        LOG[x] = i\n        x <<= 1\n        if x & 0x100:\n            x ^= 0x11D\n    def mul(a, b):\n        return 0 if a == 0 or b == 0 else EXP[LOG[a] + LOG[b]]\n    \n    synd = []\n    for j in range(nsym):\n        root = EXP[j]\n        v = 0\n        for coef in msg:\n            v = mul(v ^ coef, root)\n        synd.append(v)\n    return [synd, any(synd)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [[23, 252, 61, 84, 130], 2]', [[23, 252, 61, 84, 130], 2], [[0, 0], False]], ['regression [[23, 252, 61, 64, 130], 2]', [[23, 252, 61, 64, 130], 2], [[20, 40], True]], ['partial-repair [[23, 252, 61, 64, 130], 4]', [[23, 252, 61, 64, 130], 4], [[20, 40, 7, 141], True]], ['control [[0, 0, 0, 0], 2]', [[0, 0, 0, 0], 2], [[0, 0], False]], ['control [[5], 1]', [[5], 1], [[5], True]], ['control [[176, 102, 222, 44, 125, 89], 2]', [[176, 102, 222, 44, 125, 89], 2], [[0, 0], False]], ['control [[176, 102, 222, 61, 125, 89], 2]', [[176, 102, 222, 61, 125, 89], 2], [[17, 68], True]], ['control [[176, 102, 222, 61, 125, 89], 4]', [[176, 102, 222, 61, 125, 89], 4], [[17, 68, 169, 244], True]]], [['regression [[176, 102, 222, 44, 125, 89], 2]', [[176, 102, 222, 44, 125, 89], 2], [[0, 0], False]], ['regression [[176, 102, 222, 61, 125, 89], 2]', [[176, 102, 222, 61, 125, 89], 2], [[17, 68], True]], ['partial-repair [[176, 102, 222, 61, 125, 89], 4]', [[176, 102, 222, 61, 125, 89], 4], [[17, 68, 169, 244], True]], ['partial-repair [[123, 214, 103, 174, 192, 161, 31], 2]', [[123, 214, 103, 174, 192, 161, 31], 2], [[26, 52], True]], ['control [[5], 1]', [[5], 1], [[5], True]], ['control [[0, 0, 0, 0], 2]', [[0, 0, 0, 0], 2], [[0, 0], False]], ['control [[123, 214, 103, 174, 192, 161, 31], 4]', [[123, 214, 103, 174, 192, 161, 31], 4], [[26, 52, 69, 105], True]], ['control [[131, 154, 183, 135, 93, 251, 102, 233], 2]', [[131, 154, 183, 135, 93, 251, 102, 233], 2], [[0, 0], False]]], [['regression [[123, 214, 103, 174, 192, 187, 31], 2]', [[123, 214, 103, 174, 192, 187, 31], 2], [[0, 0], False]], ['regression [[123, 214, 103, 174, 192, 161, 31], 2]', [[123, 214, 103, 174, 192, 161, 31], 2], [[26, 52], True]], ['partial-repair [[131, 154, 183, 135, 93, 136, 102, 233], 2]', [[131, 154, 183, 135, 93, 136, 102, 233], 2], [[115, 209], True]], ['partial-repair [[131, 154, 183, 135, 93, 136, 102, 233], 4]', [[131, 154, 183, 135, 93, 136, 102, 233], 4], [[115, 209, 164, 73], True]], ['control [[0, 0, 0, 0], 2]', [[0, 0, 0, 0], 2], [[0, 0], False]], ['control [[5], 1]', [[5], 1], [[5], True]], ['control [[70, 25, 237, 118, 90, 165, 35, 253, 93, 184], 2]', [[70, 25, 237, 118, 90, 165, 35, 253, 93, 184], 2], [[0, 0], False]], ['control [[70, 25, 237, 118, 90, 32, 35, 253, 93, 184], 2]', [[70, 25, 237, 118, 90, 32, 35, 253, 93, 184], 2], [[133, 184], True]]], [['regression [[131, 154, 183, 135, 93, 251, 102, 233], 2]', [[131, 154, 183, 135, 93, 251, 102, 233], 2], [[0, 0], False]], ['regression [[131, 154, 183, 135, 93, 136, 102, 233], 2]', [[131, 154, 183, 135, 93, 136, 102, 233], 2], [[115, 209], True]], ['partial-repair [[70, 25, 237, 118, 90, 32, 35, 253, 93, 184], 4]', [[70, 25, 237, 118, 90, 32, 35, 253, 93, 184], 4], [[133, 184, 215, 167], True]], ['partial-repair [[178, 65, 204, 132, 27, 119, 170, 156, 109, 21, 94, 12], 2]', [[178, 65, 204, 132, 27, 119, 170, 156, 109, 21, 94, 12], 2], [[203, 88], True]], ['control [[5], 1]', [[5], 1], [[5], True]], ['control [[0, 0, 0, 0], 2]', [[0, 0, 0, 0], 2], [[0, 0], False]], ['control [[178, 65, 204, 132, 27, 119, 170, 156, 109, 21, 94, 12], 4]', [[178, 65, 204, 132, 27, 119, 170, 156, 109, 21, 94, 12], 4], [[203, 88, 8, 229], True]], ['control [[1, 5, 4], 3]', [[1, 5, 4], 3], [[0, 10, 0], True]]], [['regression [[70, 25, 237, 118, 90, 165, 35, 253, 93, 184], 2]', [[70, 25, 237, 118, 90, 165, 35, 253, 93, 184], 2], [[0, 0], False]], ['regression [[70, 25, 237, 118, 90, 32, 35, 253, 93, 184], 2]', [[70, 25, 237, 118, 90, 32, 35, 253, 93, 184], 2], [[133, 184], True]], ['partial-repair [[1, 5, 4], 3]', [[1, 5, 4], 3], [[0, 10, 0], True]], ['partial-repair [[2, 10, 8], 3]', [[2, 10, 8], 3], [[0, 20, 0], True]], ['control [[0, 0, 0, 0], 2]', [[0, 0, 0, 0], 2], [[0, 0], False]], ['control [[5], 1]', [[5], 1], [[5], True]], ['control [[1, 2, 3], 3]', [[1, 2, 3], 3], [[0, 3, 27], True]], ['control [[0, 0, 7], 2]', [[0, 0, 7], 2], [[7, 7], True]]]]\nfor label, args, expected in fixtures[N - 1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"51cc57c6b2a3ca9b8c4bab75b412ccef23134aba17b98c5916c8661245821a3c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(msg, nsym):\n    EXP, LOG = [0] * 512, [0] * 256\n    x = 1\n    for i in range(255):\n        EXP[i] = EXP[i + 255] = x\n        LOG[x] = i\n        x <<= 1\n        if x & 0x100:\n            x ^= 0x11D\n    def mul(a, b):\n        return 0 if a == 0 or b == 0 else EXP[LOG[a] + LOG[b]]\n    \n    synd = []\n    for j in range(nsym):\n        root = EXP[j]\n        v = 0\n        for coef in reversed(msg):\n            v = mul(v, root) ^ coef\n        synd.append(v)\n    return [synd, any(synd)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [[23, 252, 61, 84, 130], 2]', [[23, 252, 61, 84, 130], 2], [[0, 0], False]], ['regression [[23, 252, 61, 64, 130], 2]', [[23, 252, 61, 64, 130], 2], [[20, 40], True]], ['partial-repair [[23, 252, 61, 64, 130], 4]', [[23, 252, 61, 64, 130], 4], [[20, 40, 7, 141], True]], ['control [[0, 0, 0, 0], 2]', [[0, 0, 0, 0], 2], [[0, 0], False]], ['control [[5], 1]', [[5], 1], [[5], True]], ['control [[176, 102, 222, 44, 125, 89], 2]', [[176, 102, 222, 44, 125, 89], 2], [[0, 0], False]], ['control [[176, 102, 222, 61, 125, 89], 2]', [[176, 102, 222, 61, 125, 89], 2], [[17, 68], True]], ['control [[176, 102, 222, 61, 125, 89], 4]', [[176, 102, 222, 61, 125, 89], 4], [[17, 68, 169, 244], True]]], [['regression [[176, 102, 222, 44, 125, 89], 2]', [[176, 102, 222, 44, 125, 89], 2], [[0, 0], False]], ['regression [[176, 102, 222, 61, 125, 89], 2]', [[176, 102, 222, 61, 125, 89], 2], [[17, 68], True]], ['partial-repair [[176, 102, 222, 61, 125, 89], 4]', [[176, 102, 222, 61, 125, 89], 4], [[17, 68, 169, 244], True]], ['partial-repair [[123, 214, 103, 174, 192, 161, 31], 2]', [[123, 214, 103, 174, 192, 161, 31], 2], [[26, 52], True]], ['control [[5], 1]', [[5], 1], [[5], True]], ['control [[0, 0, 0, 0], 2]', [[0, 0, 0, 0], 2], [[0, 0], False]], ['control [[123, 214, 103, 174, 192, 161, 31], 4]', [[123, 214, 103, 174, 192, 161, 31], 4], [[26, 52, 69, 105], True]], ['control [[131, 154, 183, 135, 93, 251, 102, 233], 2]', [[131, 154, 183, 135, 93, 251, 102, 233], 2], [[0, 0], False]]], [['regression [[123, 214, 103, 174, 192, 187, 31], 2]', [[123, 214, 103, 174, 192, 187, 31], 2], [[0, 0], False]], ['regression [[123, 214, 103, 174, 192, 161, 31], 2]', [[123, 214, 103, 174, 192, 161, 31], 2], [[26, 52], True]], ['partial-repair [[131, 154, 183, 135, 93, 136, 102, 233], 2]', [[131, 154, 183, 135, 93, 136, 102, 233], 2], [[115, 209], True]], ['partial-repair [[131, 154, 183, 135, 93, 136, 102, 233], 4]', [[131, 154, 183, 135, 93, 136, 102, 233], 4], [[115, 209, 164, 73], True]], ['control [[0, 0, 0, 0], 2]', [[0, 0, 0, 0], 2], [[0, 0], False]], ['control [[5], 1]', [[5], 1], [[5], True]], ['control [[70, 25, 237, 118, 90, 165, 35, 253, 93, 184], 2]', [[70, 25, 237, 118, 90, 165, 35, 253, 93, 184], 2], [[0, 0], False]], ['control [[70, 25, 237, 118, 90, 32, 35, 253, 93, 184], 2]', [[70, 25, 237, 118, 90, 32, 35, 253, 93, 184], 2], [[133, 184], True]]], [['regression [[131, 154, 183, 135, 93, 251, 102, 233], 2]', [[131, 154, 183, 135, 93, 251, 102, 233], 2], [[0, 0], False]], ['regression [[131, 154, 183, 135, 93, 136, 102, 233], 2]', [[131, 154, 183, 135, 93, 136, 102, 233], 2], [[115, 209], True]], ['partial-repair [[70, 25, 237, 118, 90, 32, 35, 253, 93, 184], 4]', [[70, 25, 237, 118, 90, 32, 35, 253, 93, 184], 4], [[133, 184, 215, 167], True]], ['partial-repair [[178, 65, 204, 132, 27, 119, 170, 156, 109, 21, 94, 12], 2]', [[178, 65, 204, 132, 27, 119, 170, 156, 109, 21, 94, 12], 2], [[203, 88], True]], ['control [[5], 1]', [[5], 1], [[5], True]], ['control [[0, 0, 0, 0], 2]', [[0, 0, 0, 0], 2], [[0, 0], False]], ['control [[178, 65, 204, 132, 27, 119, 170, 156, 109, 21, 94, 12], 4]', [[178, 65, 204, 132, 27, 119, 170, 156, 109, 21, 94, 12], 4], [[203, 88, 8, 229], True]], ['control [[1, 5, 4], 3]', [[1, 5, 4], 3], [[0, 10, 0], True]]], [['regression [[70, 25, 237, 118, 90, 165, 35, 253, 93, 184], 2]', [[70, 25, 237, 118, 90, 165, 35, 253, 93, 184], 2], [[0, 0], False]], ['regression [[70, 25, 237, 118, 90, 32, 35, 253, 93, 184], 2]', [[70, 25, 237, 118, 90, 32, 35, 253, 93, 184], 2], [[133, 184], True]], ['partial-repair [[1, 5, 4], 3]', [[1, 5, 4], 3], [[0, 10, 0], True]], ['partial-repair [[2, 10, 8], 3]', [[2, 10, 8], 3], [[0, 20, 0], True]], ['control [[0, 0, 0, 0], 2]', [[0, 0, 0, 0], 2], [[0, 0], False]], ['control [[5], 1]', [[5], 1], [[5], True]], ['control [[1, 2, 3], 3]', [[1, 2, 3], 3], [[0, 3, 27], True]], ['control [[0, 0, 7], 2]', [[0, 0, 7], 2], [[7, 7], True]]]]\nfor label, args, expected in fixtures[N - 1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-error_correcting_codes-rs-syndromes-coefficient-order","generated_at":"2026-09-29T14:48:34.598398+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Storage and broadcast decoders start every Reed-Solomon block with a syndrome check.","root_cause":"Horner evaluation walks the coefficients lowest degree first.","sha256":"40e523b968a9fb3ce653f441f3519da728c66be43fe1bbf1eed43b2d7f5c682b","title":"RS syndromes evaluate the polynomial reversed · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":41.642,"exit_code":1,"observations":[{"actual":[[0,0],false],"check":"regression [[23, 252, 61, 84, 130], 2]","expected":[[0,0],false],"passed":true},{"actual":[[20,80],true],"check":"regression [[23, 252, 61, 64, 130], 2]","expected":[[20,40],true],"passed":false},{"actual":[[20,80,28,28],true],"check":"partial-repair [[23, 252, 61, 64, 130], 4]","expected":[[20,40,7,141],true],"passed":false},{"actual":[[0,0],false],"check":"control [[0, 0, 0, 0], 2]","expected":[[0,0],false],"passed":true},{"actual":[[5],true],"check":"control [[5], 1]","expected":[[5],true],"passed":true},{"actual":[[0,0],false],"check":"control [[176, 102, 222, 44, 125, 89], 2]","expected":[[0,0],false],"passed":true},{"actual":[[17,136],true],"check":"control [[176, 102, 222, 61, 125, 89], 2]","expected":[[17,68],true],"passed":false},{"actual":[[17,136,158,243],true],"check":"control [[176, 102, 222, 61, 125, 89], 4]","expected":[[17,68,169,244],true],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [[23, 252, 61, 84, 130], 2]\", \"actual\": [[0, 0], false], \"expected\": [[0, 0], false], \"passed\": true}, {\"check\": \"regression [[23, 252, 61, 64, 130], 2]\", \"actual\": [[20, 80], true], \"expected\": [[20, 40], true], \"passed\": false}, {\"check\": \"partial-repair [[23, 252, 61, 64, 130], 4]\", \"actual\": [[20, 80, 28, 28], true], \"expected\": [[20, 40, 7, 141], true], \"passed\": false}, {\"check\": \"control [[0, 0, 0, 0], 2]\", \"actual\": [[0, 0], false], \"expected\": [[0, 0], false], \"passed\": true}, {\"check\": \"control [[5], 1]\", \"actual\": [[5], true], \"expected\": [[5], true], \"passed\": true}, {\"check\": \"control [[176, 102, 222, 44, 125, 89], 2]\", \"actual\": [[0, 0], false], \"expected\": [[0, 0], false], \"passed\": true}, {\"check\": \"control [[176, 102, 222, 61, 125, 89], 2]\", \"actual\": [[17, 136], true], \"expected\": [[17, 68], true], \"passed\": false}, {\"check\": \"control [[176, 102, 222, 61, 125, 89], 4]\", \"actual\": [[17, 136, 158, 243], true], \"expected\": [[17, 68, 169, 244], true], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":37.489,"exit_code":1,"observations":[{"actual":[[0,84],true],"check":"regression [[23, 252, 61, 84, 130], 2]","expected":[[0,0],false],"passed":false},{"actual":[[20,244],true],"check":"regression [[23, 252, 61, 64, 130], 2]","expected":[[20,40],true],"passed":false},{"actual":[[20,244,230,164],true],"check":"partial-repair [[23, 252, 61, 64, 130], 4]","expected":[[20,40,7,141],true],"passed":false},{"actual":[[0,0],false],"check":"control [[0, 0, 0, 0], 2]","expected":[[0,0],false],"passed":true},{"actual":[[5],true],"check":"control [[5], 1]","expected":[[5],true],"passed":true},{"actual":[[0,50],true],"check":"control [[176, 102, 222, 44, 125, 89], 2]","expected":[[0,0],false],"passed":false},{"actual":[[17,186],true],"check":"control [[176, 102, 222, 61, 125, 89], 2]","expected":[[17,68],true],"passed":false},{"actual":[[17,186,219,144],true],"check":"control [[176, 102, 222, 61, 125, 89], 4]","expected":[[17,68,169,244],true],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [[23, 252, 61, 84, 130], 2]\", \"actual\": [[0, 84], true], \"expected\": [[0, 0], false], \"passed\": false}, {\"check\": \"regression [[23, 252, 61, 64, 130], 2]\", \"actual\": [[20, 244], true], \"expected\": [[20, 40], true], \"passed\": false}, {\"check\": \"partial-repair [[23, 252, 61, 64, 130], 4]\", \"actual\": [[20, 244, 230, 164], true], \"expected\": [[20, 40, 7, 141], true], \"passed\": false}, {\"check\": \"control [[0, 0, 0, 0], 2]\", \"actual\": [[0, 0], false], \"expected\": [[0, 0], false], \"passed\": true}, {\"check\": \"control [[5], 1]\", \"actual\": [[5], true], \"expected\": [[5], true], \"passed\": true}, {\"check\": \"control [[176, 102, 222, 44, 125, 89], 2]\", \"actual\": [[0, 50], true], \"expected\": [[0, 0], false], \"passed\": false}, {\"check\": \"control [[176, 102, 222, 61, 125, 89], 2]\", \"actual\": [[17, 186], true], \"expected\": [[17, 68], true], \"passed\": false}, {\"check\": \"control [[176, 102, 222, 61, 125, 89], 4]\", \"actual\": [[17, 186, 219, 144], true], \"expected\": [[17, 68, 169, 244], true], \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}