{"abstract":"The located symbol is changed by the wrong amount.","category":"Error-correcting codes","checks":8,"contract":"Correct at most one symbol error in a Reed-Solomon codeword with two parity symbols over GF(2^8) (0x11D, roots alpha^0 and alpha^1, alpha = 2). msg lists coefficients highest degree first, so index n-1-i holds degree i. With S0 = msg(1) and S1 = msg(alpha): both zero -> clean; one zero -> uncorrectable; else the error degree is log(S1/S0), which must be < n, and the error value is S0. Return [corrected symbols or None, status].","evaluation_group":"w2-error_correcting_codes-rs-single-error","failed_approach":"Assigning S0 instead of adding it overwrites the symbol with the error value.","family":"w2-error_correcting_codes-rs-single-error-error-magnitude","id":"FA-72016","implementations":{"attempt":{"sha256":"11e7748b84b192e6acf7da02fdd30e38829c3b3b4d2fc7ecfe9d54b5c7941ee1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(msg):\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    n = len(msg)\n    def ev(root):\n        v = 0\n        for coef in msg:\n            v = mul(v, root) ^ coef\n        return v\n    s0, s1 = ev(1), ev(2)\n    if s0 == 0 and s1 == 0:\n        return [list(msg), 'clean']\n    if s0 == 0 or s1 == 0:\n        return [None, 'uncorrectable']\n    loc = (LOG[s1] - LOG[s0]) % 255\n    if loc >= n:\n        return [None, 'uncorrectable']\n    out = list(msg)\n    out[n - 1 - loc] = s0\n    return [out, 'corrected']\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [[197, 174, 1, 72, 3]]', [[197, 174, 1, 72, 3]], [[197, 174, 1, 105, 3], 'corrected']], ['regression [[246, 174, 1, 105, 3]]', [[246, 174, 1, 105, 3]], [[197, 174, 1, 105, 3], 'corrected']], ['control [[197, 174, 1, 105, 3]]', [[197, 174, 1, 105, 3]], [[197, 174, 1, 105, 3], 'clean']], ['control [[197, 174, 1, 32, 233]]', [[197, 174, 1, 32, 233]], [None, 'uncorrectable']], ['control [[170, 170, 73, 201, 214, 86]]', [[170, 170, 73, 201, 214, 86]], [[170, 170, 73, 201, 214, 86], 'clean']], ['control [[170, 108, 73, 201, 214, 197]]', [[170, 108, 73, 201, 214, 197]], [None, 'uncorrectable']], ['control [[95, 129, 216, 244, 158, 37, 73]]', [[95, 129, 216, 244, 158, 37, 73]], [[95, 129, 216, 244, 158, 37, 73], 'clean']], ['control [[95, 129, 216, 148, 158, 46, 73]]', [[95, 129, 216, 148, 158, 46, 73]], [None, 'uncorrectable']]], [['regression [[159, 170, 73, 201, 214, 86]]', [[159, 170, 73, 201, 214, 86]], [[170, 170, 73, 201, 214, 86], 'corrected']], ['regression [[95, 129, 216, 244, 184, 37, 73]]', [[95, 129, 216, 244, 184, 37, 73]], [[95, 129, 216, 244, 158, 37, 73], 'corrected']], ['control [[95, 129, 216, 148, 158, 46, 73]]', [[95, 129, 216, 148, 158, 46, 73]], [None, 'uncorrectable']], ['control [[29, 68, 82, 179, 193, 203, 215, 101]]', [[29, 68, 82, 179, 193, 203, 215, 101]], [[29, 68, 82, 179, 193, 203, 215, 101], 'clean']], ['control [[224, 68, 82, 179, 193, 34, 215, 101]]', [[224, 68, 82, 179, 193, 34, 215, 101]], [None, 'uncorrectable']], ['control [[249, 14, 133, 199, 50, 217, 133, 156, 190, 249]]', [[249, 14, 133, 199, 50, 217, 133, 156, 190, 249]], [[249, 14, 133, 199, 50, 217, 133, 156, 190, 249], 'clean']], ['control [[249, 89, 133, 199, 50, 217, 133, 156, 84, 249]]', [[249, 89, 133, 199, 50, 217, 133, 156, 84, 249]], [None, 'uncorrectable']], ['control [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52]]', [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52]], [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52], 'clean']]], [['regression [[29, 68, 82, 251, 193, 203, 215, 101]]', [[29, 68, 82, 251, 193, 203, 215, 101]], [[29, 68, 82, 179, 193, 203, 215, 101], 'corrected']], ['regression [[160, 68, 82, 179, 193, 203, 215, 101]]', [[160, 68, 82, 179, 193, 203, 215, 101]], [[29, 68, 82, 179, 193, 203, 215, 101], 'corrected']], ['control [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52]]', [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52]], [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52], 'clean']], ['control [[11, 173, 115, 26, 74, 155, 50, 118, 184, 32, 84, 52]]', [[11, 173, 115, 26, 74, 155, 50, 118, 184, 32, 84, 52]], [None, 'uncorrectable']], ['control [[83, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142]]', [[83, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142]], [[83, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142], 'clean']], ['control [[83, 45, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 128, 142]]', [[83, 45, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 128, 142]], [None, 'uncorrectable']], ['control [[161, 66, 213, 76, 223, 165]]', [[161, 66, 213, 76, 223, 165]], [[161, 66, 213, 76, 223, 165], 'clean']], ['control [[161, 66, 213, 86, 235, 165]]', [[161, 66, 213, 86, 235, 165]], [None, 'uncorrectable']]], [['regression [[101, 14, 133, 199, 50, 217, 133, 156, 190, 249]]', [[101, 14, 133, 199, 50, 217, 133, 156, 190, 249]], [[249, 14, 133, 199, 50, 217, 133, 156, 190, 249], 'corrected']], ['regression [[11, 173, 115, 26, 153, 95, 50, 118, 184, 32, 84, 52]]', [[11, 173, 115, 26, 153, 95, 50, 118, 184, 32, 84, 52]], [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52], 'corrected']], ['control [[161, 66, 213, 86, 235, 165]]', [[161, 66, 213, 86, 235, 165]], [None, 'uncorrectable']], ['control [[204, 34, 231, 58, 245, 3, 153, 92]]', [[204, 34, 231, 58, 245, 3, 153, 92]], [[204, 34, 231, 58, 245, 3, 153, 92], 'clean']], ['control [[204, 34, 231, 58, 245, 220, 9, 92]]', [[204, 34, 231, 58, 245, 220, 9, 92]], [None, 'uncorrectable']], ['control [[102, 133, 139, 4, 108]]', [[102, 133, 139, 4, 108]], [[102, 133, 139, 4, 108], 'clean']], ['control [[102, 133, 139, 20, 49]]', [[102, 133, 139, 20, 49]], [None, 'uncorrectable']], ['control [[101, 113, 37, 242, 195, 183, 157, 181, 211, 30, 108, 98, 222]]', [[101, 113, 37, 242, 195, 183, 157, 181, 211, 30, 108, 98, 222]], [None, 'uncorrectable']]], [['regression [[83, 135, 139, 126, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142]]', [[83, 135, 139, 126, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142]], [[83, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142], 'corrected']], ['regression [[25, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142]]', [[25, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142]], [[83, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142], 'corrected']], ['control [[101, 113, 37, 242, 195, 183, 157, 181, 211, 30, 108, 98, 222]]', [[101, 113, 37, 242, 195, 183, 157, 181, 211, 30, 108, 98, 222]], [None, 'uncorrectable']], ['control [[178, 163, 216, 203, 246, 61, 83, 52, 85, 245, 59, 90, 113, 95]]', [[178, 163, 216, 203, 246, 61, 83, 52, 85, 245, 59, 90, 113, 95]], [None, 'uncorrectable']], ['control [[168, 112, 224, 76, 56, 53, 214, 250, 9, 141, 18]]', [[168, 112, 224, 76, 56, 53, 214, 250, 9, 141, 18]], [None, 'uncorrectable']], ['control [[5, 251, 11, 179, 254, 41, 48, 5, 217, 18, 31]]', [[5, 251, 11, 179, 254, 41, 48, 5, 217, 18, 31]], [None, 'uncorrectable']], ['control [[234, 110, 32, 238, 251, 206, 1, 255, 255, 76, 117]]', [[234, 110, 32, 238, 251, 206, 1, 255, 255, 76, 117]], [None, 'uncorrectable']], ['control [[207, 121, 195, 225]]', [[207, 121, 195, 225]], [None, 'uncorrectable']]]]\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":"39181aa1b027d57d64b90f7d2c134aeae140d5700afd374bafc079721ba19a20","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(msg):\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    n = len(msg)\n    def ev(root):\n        v = 0\n        for coef in msg:\n            v = mul(v, root) ^ coef\n        return v\n    s0, s1 = ev(1), ev(2)\n    if s0 == 0 and s1 == 0:\n        return [list(msg), 'clean']\n    if s0 == 0 or s1 == 0:\n        return [None, 'uncorrectable']\n    loc = (LOG[s1] - LOG[s0]) % 255\n    if loc >= n:\n        return [None, 'uncorrectable']\n    out = list(msg)\n    out[n - 1 - loc] ^= s1\n    return [out, 'corrected']\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [[197, 174, 1, 72, 3]]', [[197, 174, 1, 72, 3]], [[197, 174, 1, 105, 3], 'corrected']], ['regression [[246, 174, 1, 105, 3]]', [[246, 174, 1, 105, 3]], [[197, 174, 1, 105, 3], 'corrected']], ['control [[197, 174, 1, 105, 3]]', [[197, 174, 1, 105, 3]], [[197, 174, 1, 105, 3], 'clean']], ['control [[197, 174, 1, 32, 233]]', [[197, 174, 1, 32, 233]], [None, 'uncorrectable']], ['control [[170, 170, 73, 201, 214, 86]]', [[170, 170, 73, 201, 214, 86]], [[170, 170, 73, 201, 214, 86], 'clean']], ['control [[170, 108, 73, 201, 214, 197]]', [[170, 108, 73, 201, 214, 197]], [None, 'uncorrectable']], ['control [[95, 129, 216, 244, 158, 37, 73]]', [[95, 129, 216, 244, 158, 37, 73]], [[95, 129, 216, 244, 158, 37, 73], 'clean']], ['control [[95, 129, 216, 148, 158, 46, 73]]', [[95, 129, 216, 148, 158, 46, 73]], [None, 'uncorrectable']]], [['regression [[159, 170, 73, 201, 214, 86]]', [[159, 170, 73, 201, 214, 86]], [[170, 170, 73, 201, 214, 86], 'corrected']], ['regression [[95, 129, 216, 244, 184, 37, 73]]', [[95, 129, 216, 244, 184, 37, 73]], [[95, 129, 216, 244, 158, 37, 73], 'corrected']], ['control [[95, 129, 216, 148, 158, 46, 73]]', [[95, 129, 216, 148, 158, 46, 73]], [None, 'uncorrectable']], ['control [[29, 68, 82, 179, 193, 203, 215, 101]]', [[29, 68, 82, 179, 193, 203, 215, 101]], [[29, 68, 82, 179, 193, 203, 215, 101], 'clean']], ['control [[224, 68, 82, 179, 193, 34, 215, 101]]', [[224, 68, 82, 179, 193, 34, 215, 101]], [None, 'uncorrectable']], ['control [[249, 14, 133, 199, 50, 217, 133, 156, 190, 249]]', [[249, 14, 133, 199, 50, 217, 133, 156, 190, 249]], [[249, 14, 133, 199, 50, 217, 133, 156, 190, 249], 'clean']], ['control [[249, 89, 133, 199, 50, 217, 133, 156, 84, 249]]', [[249, 89, 133, 199, 50, 217, 133, 156, 84, 249]], [None, 'uncorrectable']], ['control [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52]]', [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52]], [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52], 'clean']]], [['regression [[29, 68, 82, 251, 193, 203, 215, 101]]', [[29, 68, 82, 251, 193, 203, 215, 101]], [[29, 68, 82, 179, 193, 203, 215, 101], 'corrected']], ['regression [[160, 68, 82, 179, 193, 203, 215, 101]]', [[160, 68, 82, 179, 193, 203, 215, 101]], [[29, 68, 82, 179, 193, 203, 215, 101], 'corrected']], ['control [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52]]', [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52]], [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52], 'clean']], ['control [[11, 173, 115, 26, 74, 155, 50, 118, 184, 32, 84, 52]]', [[11, 173, 115, 26, 74, 155, 50, 118, 184, 32, 84, 52]], [None, 'uncorrectable']], ['control [[83, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142]]', [[83, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142]], [[83, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142], 'clean']], ['control [[83, 45, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 128, 142]]', [[83, 45, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 128, 142]], [None, 'uncorrectable']], ['control [[161, 66, 213, 76, 223, 165]]', [[161, 66, 213, 76, 223, 165]], [[161, 66, 213, 76, 223, 165], 'clean']], ['control [[161, 66, 213, 86, 235, 165]]', [[161, 66, 213, 86, 235, 165]], [None, 'uncorrectable']]], [['regression [[101, 14, 133, 199, 50, 217, 133, 156, 190, 249]]', [[101, 14, 133, 199, 50, 217, 133, 156, 190, 249]], [[249, 14, 133, 199, 50, 217, 133, 156, 190, 249], 'corrected']], ['regression [[11, 173, 115, 26, 153, 95, 50, 118, 184, 32, 84, 52]]', [[11, 173, 115, 26, 153, 95, 50, 118, 184, 32, 84, 52]], [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52], 'corrected']], ['control [[161, 66, 213, 86, 235, 165]]', [[161, 66, 213, 86, 235, 165]], [None, 'uncorrectable']], ['control [[204, 34, 231, 58, 245, 3, 153, 92]]', [[204, 34, 231, 58, 245, 3, 153, 92]], [[204, 34, 231, 58, 245, 3, 153, 92], 'clean']], ['control [[204, 34, 231, 58, 245, 220, 9, 92]]', [[204, 34, 231, 58, 245, 220, 9, 92]], [None, 'uncorrectable']], ['control [[102, 133, 139, 4, 108]]', [[102, 133, 139, 4, 108]], [[102, 133, 139, 4, 108], 'clean']], ['control [[102, 133, 139, 20, 49]]', [[102, 133, 139, 20, 49]], [None, 'uncorrectable']], ['control [[101, 113, 37, 242, 195, 183, 157, 181, 211, 30, 108, 98, 222]]', [[101, 113, 37, 242, 195, 183, 157, 181, 211, 30, 108, 98, 222]], [None, 'uncorrectable']]], [['regression [[83, 135, 139, 126, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142]]', [[83, 135, 139, 126, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142]], [[83, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142], 'corrected']], ['regression [[25, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142]]', [[25, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142]], [[83, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142], 'corrected']], ['control [[101, 113, 37, 242, 195, 183, 157, 181, 211, 30, 108, 98, 222]]', [[101, 113, 37, 242, 195, 183, 157, 181, 211, 30, 108, 98, 222]], [None, 'uncorrectable']], ['control [[178, 163, 216, 203, 246, 61, 83, 52, 85, 245, 59, 90, 113, 95]]', [[178, 163, 216, 203, 246, 61, 83, 52, 85, 245, 59, 90, 113, 95]], [None, 'uncorrectable']], ['control [[168, 112, 224, 76, 56, 53, 214, 250, 9, 141, 18]]', [[168, 112, 224, 76, 56, 53, 214, 250, 9, 141, 18]], [None, 'uncorrectable']], ['control [[5, 251, 11, 179, 254, 41, 48, 5, 217, 18, 31]]', [[5, 251, 11, 179, 254, 41, 48, 5, 217, 18, 31]], [None, 'uncorrectable']], ['control [[234, 110, 32, 238, 251, 206, 1, 255, 255, 76, 117]]', [[234, 110, 32, 238, 251, 206, 1, 255, 255, 76, 117]], [None, 'uncorrectable']], ['control [[207, 121, 195, 225]]', [[207, 121, 195, 225]], [None, 'uncorrectable']]]]\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"},"fixed":{"sha256":"7c6d1f5238d49af03a7c1c63064f0fe1140809538a73ba41e6b062a8613e8322","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(msg):\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    n = len(msg)\n    def ev(root):\n        v = 0\n        for coef in msg:\n            v = mul(v, root) ^ coef\n        return v\n    s0, s1 = ev(1), ev(2)\n    if s0 == 0 and s1 == 0:\n        return [list(msg), 'clean']\n    if s0 == 0 or s1 == 0:\n        return [None, 'uncorrectable']\n    loc = (LOG[s1] - LOG[s0]) % 255\n    if loc >= n:\n        return [None, 'uncorrectable']\n    out = list(msg)\n    out[n - 1 - loc] ^= s0\n    return [out, 'corrected']\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [[197, 174, 1, 72, 3]]', [[197, 174, 1, 72, 3]], [[197, 174, 1, 105, 3], 'corrected']], ['regression [[246, 174, 1, 105, 3]]', [[246, 174, 1, 105, 3]], [[197, 174, 1, 105, 3], 'corrected']], ['control [[197, 174, 1, 105, 3]]', [[197, 174, 1, 105, 3]], [[197, 174, 1, 105, 3], 'clean']], ['control [[197, 174, 1, 32, 233]]', [[197, 174, 1, 32, 233]], [None, 'uncorrectable']], ['control [[170, 170, 73, 201, 214, 86]]', [[170, 170, 73, 201, 214, 86]], [[170, 170, 73, 201, 214, 86], 'clean']], ['control [[170, 108, 73, 201, 214, 197]]', [[170, 108, 73, 201, 214, 197]], [None, 'uncorrectable']], ['control [[95, 129, 216, 244, 158, 37, 73]]', [[95, 129, 216, 244, 158, 37, 73]], [[95, 129, 216, 244, 158, 37, 73], 'clean']], ['control [[95, 129, 216, 148, 158, 46, 73]]', [[95, 129, 216, 148, 158, 46, 73]], [None, 'uncorrectable']]], [['regression [[159, 170, 73, 201, 214, 86]]', [[159, 170, 73, 201, 214, 86]], [[170, 170, 73, 201, 214, 86], 'corrected']], ['regression [[95, 129, 216, 244, 184, 37, 73]]', [[95, 129, 216, 244, 184, 37, 73]], [[95, 129, 216, 244, 158, 37, 73], 'corrected']], ['control [[95, 129, 216, 148, 158, 46, 73]]', [[95, 129, 216, 148, 158, 46, 73]], [None, 'uncorrectable']], ['control [[29, 68, 82, 179, 193, 203, 215, 101]]', [[29, 68, 82, 179, 193, 203, 215, 101]], [[29, 68, 82, 179, 193, 203, 215, 101], 'clean']], ['control [[224, 68, 82, 179, 193, 34, 215, 101]]', [[224, 68, 82, 179, 193, 34, 215, 101]], [None, 'uncorrectable']], ['control [[249, 14, 133, 199, 50, 217, 133, 156, 190, 249]]', [[249, 14, 133, 199, 50, 217, 133, 156, 190, 249]], [[249, 14, 133, 199, 50, 217, 133, 156, 190, 249], 'clean']], ['control [[249, 89, 133, 199, 50, 217, 133, 156, 84, 249]]', [[249, 89, 133, 199, 50, 217, 133, 156, 84, 249]], [None, 'uncorrectable']], ['control [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52]]', [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52]], [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52], 'clean']]], [['regression [[29, 68, 82, 251, 193, 203, 215, 101]]', [[29, 68, 82, 251, 193, 203, 215, 101]], [[29, 68, 82, 179, 193, 203, 215, 101], 'corrected']], ['regression [[160, 68, 82, 179, 193, 203, 215, 101]]', [[160, 68, 82, 179, 193, 203, 215, 101]], [[29, 68, 82, 179, 193, 203, 215, 101], 'corrected']], ['control [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52]]', [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52]], [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52], 'clean']], ['control [[11, 173, 115, 26, 74, 155, 50, 118, 184, 32, 84, 52]]', [[11, 173, 115, 26, 74, 155, 50, 118, 184, 32, 84, 52]], [None, 'uncorrectable']], ['control [[83, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142]]', [[83, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142]], [[83, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142], 'clean']], ['control [[83, 45, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 128, 142]]', [[83, 45, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 128, 142]], [None, 'uncorrectable']], ['control [[161, 66, 213, 76, 223, 165]]', [[161, 66, 213, 76, 223, 165]], [[161, 66, 213, 76, 223, 165], 'clean']], ['control [[161, 66, 213, 86, 235, 165]]', [[161, 66, 213, 86, 235, 165]], [None, 'uncorrectable']]], [['regression [[101, 14, 133, 199, 50, 217, 133, 156, 190, 249]]', [[101, 14, 133, 199, 50, 217, 133, 156, 190, 249]], [[249, 14, 133, 199, 50, 217, 133, 156, 190, 249], 'corrected']], ['regression [[11, 173, 115, 26, 153, 95, 50, 118, 184, 32, 84, 52]]', [[11, 173, 115, 26, 153, 95, 50, 118, 184, 32, 84, 52]], [[11, 173, 115, 26, 44, 95, 50, 118, 184, 32, 84, 52], 'corrected']], ['control [[161, 66, 213, 86, 235, 165]]', [[161, 66, 213, 86, 235, 165]], [None, 'uncorrectable']], ['control [[204, 34, 231, 58, 245, 3, 153, 92]]', [[204, 34, 231, 58, 245, 3, 153, 92]], [[204, 34, 231, 58, 245, 3, 153, 92], 'clean']], ['control [[204, 34, 231, 58, 245, 220, 9, 92]]', [[204, 34, 231, 58, 245, 220, 9, 92]], [None, 'uncorrectable']], ['control [[102, 133, 139, 4, 108]]', [[102, 133, 139, 4, 108]], [[102, 133, 139, 4, 108], 'clean']], ['control [[102, 133, 139, 20, 49]]', [[102, 133, 139, 20, 49]], [None, 'uncorrectable']], ['control [[101, 113, 37, 242, 195, 183, 157, 181, 211, 30, 108, 98, 222]]', [[101, 113, 37, 242, 195, 183, 157, 181, 211, 30, 108, 98, 222]], [None, 'uncorrectable']]], [['regression [[83, 135, 139, 126, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142]]', [[83, 135, 139, 126, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142]], [[83, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142], 'corrected']], ['regression [[25, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142]]', [[25, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142]], [[83, 135, 139, 74, 148, 233, 28, 230, 113, 155, 213, 155, 184, 142], 'corrected']], ['control [[101, 113, 37, 242, 195, 183, 157, 181, 211, 30, 108, 98, 222]]', [[101, 113, 37, 242, 195, 183, 157, 181, 211, 30, 108, 98, 222]], [None, 'uncorrectable']], ['control [[178, 163, 216, 203, 246, 61, 83, 52, 85, 245, 59, 90, 113, 95]]', [[178, 163, 216, 203, 246, 61, 83, 52, 85, 245, 59, 90, 113, 95]], [None, 'uncorrectable']], ['control [[168, 112, 224, 76, 56, 53, 214, 250, 9, 141, 18]]', [[168, 112, 224, 76, 56, 53, 214, 250, 9, 141, 18]], [None, 'uncorrectable']], ['control [[5, 251, 11, 179, 254, 41, 48, 5, 217, 18, 31]]', [[5, 251, 11, 179, 254, 41, 48, 5, 217, 18, 31]], [None, 'uncorrectable']], ['control [[234, 110, 32, 238, 251, 206, 1, 255, 255, 76, 117]]', [[234, 110, 32, 238, 251, 206, 1, 255, 255, 76, 117]], [None, 'uncorrectable']], ['control [[207, 121, 195, 225]]', [[207, 121, 195, 225]], [None, 'uncorrectable']]]]\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-single-error-error-magnitude","generated_at":"2026-09-29T14:48:34.760667+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Short-block RS codes in barcodes and radio headers correct a single corrupted symbol cheaply.","repair":"With first root alpha^0 the magnitude is S0.","root_cause":"The error value is taken from S1 = e * X instead of S0 = e.","sha256":"55fbee4e34b5d54e5a4a837192934d57c5a5515385fcf019f34886318cef1ed5","title":"RS single-error correction applies S1 as the magnitude · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.418,"exit_code":1,"observations":[{"actual":[[197,174,1,33,3],"corrected"],"check":"regression [[197, 174, 1, 72, 3]]","expected":[[197,174,1,105,3],"corrected"],"passed":false},{"actual":[[51,174,1,105,3],"corrected"],"check":"regression [[246, 174, 1, 105, 3]]","expected":[[197,174,1,105,3],"corrected"],"passed":false},{"actual":[[197,174,1,105,3],"clean"],"check":"control [[197, 174, 1, 105, 3]]","expected":[[197,174,1,105,3],"clean"],"passed":true},{"actual":[null,"uncorrectable"],"check":"control [[197, 174, 1, 32, 233]]","expected":[null,"uncorrectable"],"passed":true},{"actual":[[170,170,73,201,214,86],"clean"],"check":"control [[170, 170, 73, 201, 214, 86]]","expected":[[170,170,73,201,214,86],"clean"],"passed":true},{"actual":[null,"uncorrectable"],"check":"control [[170, 108, 73, 201, 214, 197]]","expected":[null,"uncorrectable"],"passed":true},{"actual":[[95,129,216,244,158,37,73],"clean"],"check":"control [[95, 129, 216, 244, 158, 37, 73]]","expected":[[95,129,216,244,158,37,73],"clean"],"passed":true},{"actual":[null,"uncorrectable"],"check":"control [[95, 129, 216, 148, 158, 46, 73]]","expected":[null,"uncorrectable"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [[197, 174, 1, 72, 3]]\", \"actual\": [[197, 174, 1, 33, 3], \"corrected\"], \"expected\": [[197, 174, 1, 105, 3], \"corrected\"], \"passed\": false}, {\"check\": \"regression [[246, 174, 1, 105, 3]]\", \"actual\": [[51, 174, 1, 105, 3], \"corrected\"], \"expected\": [[197, 174, 1, 105, 3], \"corrected\"], \"passed\": false}, {\"check\": \"control [[197, 174, 1, 105, 3]]\", \"actual\": [[197, 174, 1, 105, 3], \"clean\"], \"expected\": [[197, 174, 1, 105, 3], \"clean\"], \"passed\": true}, {\"check\": \"control [[197, 174, 1, 32, 233]]\", \"actual\": [null, \"uncorrectable\"], \"expected\": [null, \"uncorrectable\"], \"passed\": true}, {\"check\": \"control [[170, 170, 73, 201, 214, 86]]\", \"actual\": [[170, 170, 73, 201, 214, 86], \"clean\"], \"expected\": [[170, 170, 73, 201, 214, 86], \"clean\"], \"passed\": true}, {\"check\": \"control [[170, 108, 73, 201, 214, 197]]\", \"actual\": [null, \"uncorrectable\"], \"expected\": [null, \"uncorrectable\"], \"passed\": true}, {\"check\": \"control [[95, 129, 216, 244, 158, 37, 73]]\", \"actual\": [[95, 129, 216, 244, 158, 37, 73], \"clean\"], \"expected\": [[95, 129, 216, 244, 158, 37, 73], \"clean\"], \"passed\": true}, {\"check\": \"control [[95, 129, 216, 148, 158, 46, 73]]\", \"actual\": [null, \"uncorrectable\"], \"expected\": [null, \"uncorrectable\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.723,"exit_code":1,"observations":[{"actual":[[197,174,1,10,3],"corrected"],"check":"regression [[197, 174, 1, 72, 3]]","expected":[[197,174,1,105,3],"corrected"],"passed":false},{"actual":[[225,174,1,105,3],"corrected"],"check":"regression [[246, 174, 1, 105, 3]]","expected":[[197,174,1,105,3],"corrected"],"passed":false},{"actual":[[197,174,1,105,3],"clean"],"check":"control [[197, 174, 1, 105, 3]]","expected":[[197,174,1,105,3],"clean"],"passed":true},{"actual":[null,"uncorrectable"],"check":"control [[197, 174, 1, 32, 233]]","expected":[null,"uncorrectable"],"passed":true},{"actual":[[170,170,73,201,214,86],"clean"],"check":"control [[170, 170, 73, 201, 214, 86]]","expected":[[170,170,73,201,214,86],"clean"],"passed":true},{"actual":[null,"uncorrectable"],"check":"control [[170, 108, 73, 201, 214, 197]]","expected":[null,"uncorrectable"],"passed":true},{"actual":[[95,129,216,244,158,37,73],"clean"],"check":"control [[95, 129, 216, 244, 158, 37, 73]]","expected":[[95,129,216,244,158,37,73],"clean"],"passed":true},{"actual":[null,"uncorrectable"],"check":"control [[95, 129, 216, 148, 158, 46, 73]]","expected":[null,"uncorrectable"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [[197, 174, 1, 72, 3]]\", \"actual\": [[197, 174, 1, 10, 3], \"corrected\"], \"expected\": [[197, 174, 1, 105, 3], \"corrected\"], \"passed\": false}, {\"check\": \"regression [[246, 174, 1, 105, 3]]\", \"actual\": [[225, 174, 1, 105, 3], \"corrected\"], \"expected\": [[197, 174, 1, 105, 3], \"corrected\"], \"passed\": false}, {\"check\": \"control [[197, 174, 1, 105, 3]]\", \"actual\": [[197, 174, 1, 105, 3], \"clean\"], \"expected\": [[197, 174, 1, 105, 3], \"clean\"], \"passed\": true}, {\"check\": \"control [[197, 174, 1, 32, 233]]\", \"actual\": [null, \"uncorrectable\"], \"expected\": [null, \"uncorrectable\"], \"passed\": true}, {\"check\": \"control [[170, 170, 73, 201, 214, 86]]\", \"actual\": [[170, 170, 73, 201, 214, 86], \"clean\"], \"expected\": [[170, 170, 73, 201, 214, 86], \"clean\"], \"passed\": true}, {\"check\": \"control [[170, 108, 73, 201, 214, 197]]\", \"actual\": [null, \"uncorrectable\"], \"expected\": [null, \"uncorrectable\"], \"passed\": true}, {\"check\": \"control [[95, 129, 216, 244, 158, 37, 73]]\", \"actual\": [[95, 129, 216, 244, 158, 37, 73], \"clean\"], \"expected\": [[95, 129, 216, 244, 158, 37, 73], \"clean\"], \"passed\": true}, {\"check\": \"control [[95, 129, 216, 148, 158, 46, 73]]\", \"actual\": [null, \"uncorrectable\"], \"expected\": [null, \"uncorrectable\"], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":37.656,"exit_code":0,"observations":[{"actual":[[197,174,1,105,3],"corrected"],"check":"regression [[197, 174, 1, 72, 3]]","expected":[[197,174,1,105,3],"corrected"],"passed":true},{"actual":[[197,174,1,105,3],"corrected"],"check":"regression [[246, 174, 1, 105, 3]]","expected":[[197,174,1,105,3],"corrected"],"passed":true},{"actual":[[197,174,1,105,3],"clean"],"check":"control [[197, 174, 1, 105, 3]]","expected":[[197,174,1,105,3],"clean"],"passed":true},{"actual":[null,"uncorrectable"],"check":"control [[197, 174, 1, 32, 233]]","expected":[null,"uncorrectable"],"passed":true},{"actual":[[170,170,73,201,214,86],"clean"],"check":"control [[170, 170, 73, 201, 214, 86]]","expected":[[170,170,73,201,214,86],"clean"],"passed":true},{"actual":[null,"uncorrectable"],"check":"control [[170, 108, 73, 201, 214, 197]]","expected":[null,"uncorrectable"],"passed":true},{"actual":[[95,129,216,244,158,37,73],"clean"],"check":"control [[95, 129, 216, 244, 158, 37, 73]]","expected":[[95,129,216,244,158,37,73],"clean"],"passed":true},{"actual":[null,"uncorrectable"],"check":"control [[95, 129, 216, 148, 158, 46, 73]]","expected":[null,"uncorrectable"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [[197, 174, 1, 72, 3]]\", \"actual\": [[197, 174, 1, 105, 3], \"corrected\"], \"expected\": [[197, 174, 1, 105, 3], \"corrected\"], \"passed\": true}, {\"check\": \"regression [[246, 174, 1, 105, 3]]\", \"actual\": [[197, 174, 1, 105, 3], \"corrected\"], \"expected\": [[197, 174, 1, 105, 3], \"corrected\"], \"passed\": true}, {\"check\": \"control [[197, 174, 1, 105, 3]]\", \"actual\": [[197, 174, 1, 105, 3], \"clean\"], \"expected\": [[197, 174, 1, 105, 3], \"clean\"], \"passed\": true}, {\"check\": \"control [[197, 174, 1, 32, 233]]\", \"actual\": [null, \"uncorrectable\"], \"expected\": [null, \"uncorrectable\"], \"passed\": true}, {\"check\": \"control [[170, 170, 73, 201, 214, 86]]\", \"actual\": [[170, 170, 73, 201, 214, 86], \"clean\"], \"expected\": [[170, 170, 73, 201, 214, 86], \"clean\"], \"passed\": true}, {\"check\": \"control [[170, 108, 73, 201, 214, 197]]\", \"actual\": [null, \"uncorrectable\"], \"expected\": [null, \"uncorrectable\"], \"passed\": true}, {\"check\": \"control [[95, 129, 216, 244, 158, 37, 73]]\", \"actual\": [[95, 129, 216, 244, 158, 37, 73], \"clean\"], \"expected\": [[95, 129, 216, 244, 158, 37, 73], \"clean\"], \"passed\": true}, {\"check\": \"control [[95, 129, 216, 148, 158, 46, 73]]\", \"actual\": [null, \"uncorrectable\"], \"expected\": [null, \"uncorrectable\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}