{"abstract":"Rebuilt blocks are wrong except on disk 0.","category":"Error-correcting codes","checks":8,"contract":"Recover one missing data block of a RAID-6 stripe over GF(2^8) (0x11D). data has exactly one None (else None is returned). P = XOR of data; Q = sum of g^k * D_k with g = 2 and k the 0-based disk index. Use P when it is available; otherwise rebuild D_i = (Q + sum over present k of g^k D_k) * g^(-i); if neither is available return None.","contract_signature":"data, p, q","evaluation_group":"w2-error_correcting_codes-raid6-q-recovery","failed_approach":"Using g^(256 - i) is one power off.","family":"w2-error_correcting_codes-raid6-q-recovery-coefficient-inverse","id":"FA-72051","implementations":{"attempt":{"sha256":"06b5716014a0b247ad4d2f7ebbf3f19cfebbfce9593a33f834df8a8bf4cd68ae","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(data, p, q):\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    if data.count(None) != 1:\n        return None\n    i = data.index(None)\n    if p is not None:\n        x = p\n        for v in data:\n            if v is not None:\n                x ^= v\n        return x\n    if q is None:\n        return None\n    x = q\n    for k, v in enumerate(data):\n        if v is not None:\n            x ^= mul(EXP[k], v)\n    return mul(x, EXP[(256 - i) % 255])\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [[111, null], null, 186]', [[111, None], None, 186], 228], ['regression [[61, null, 139], null, 236]', [[61, None, 139], None, 236], 237], ['control [[61, null, 139], 91, 236]', [[61, None, 139], 91, 236], 237], ['control [[10, 11, null, 231, 194, 75], 177, 1]', [[10, 11, None, 231, 194, 75], 177, 1], 222], ['control [[220, 10, null], 58, 95]', [[220, 10, None], 58, 95], 236], ['control [[114, null, 163, 119, 100, 76], 199, 178]', [[114, None, 163, 119, 100, 76], 199, 178], 73], ['control [[1, 2], null, 3]', [[1, 2], None, 3], None], ['control [[null, null], 1, 2]', [[None, None], 1, 2], None]], [['regression [[104, 202, 220, 113, null], null, 38]', [[104, 202, 220, 113, None], None, 38], 191], ['regression [[10, 11, null, 231, 194, 75], null, 1]', [[10, 11, None, 231, 194, 75], None, 1], 222], ['control [[null, null], 1, 2]', [[None, None], 1, 2], None], ['control [[4, null], null, null]', [[4, None], None, None], None], ['control [[61, null, 139], 91, 236]', [[61, None, 139], 91, 236], 237], ['control [[10, 11, null, 231, 194, 75], 177, 1]', [[10, 11, None, 231, 194, 75], 177, 1], 222], ['control [[220, 10, null], 58, 95]', [[220, 10, None], 58, 95], 236], ['control [[114, null, 163, 119, 100, 76], 199, 178]', [[114, None, 163, 119, 100, 76], 199, 178], 73]], [['regression [[220, 10, null], null, 95]', [[220, 10, None], None, 95], 236], ['regression [[68, 12, null, 209], null, 47]', [[68, 12, None, 209], None, 47], 106], ['control [[114, null, 163, 119, 100, 76], 199, 178]', [[114, None, 163, 119, 100, 76], 199, 178], 73], ['control [[1, 2], null, 3]', [[1, 2], None, 3], None], ['control [[null, null], 1, 2]', [[None, None], 1, 2], None], ['control [[4, null], null, null]', [[4, None], None, None], None], ['control [[61, null, 139], 91, 236]', [[61, None, 139], 91, 236], 237], ['control [[10, 11, null, 231, 194, 75], 177, 1]', [[10, 11, None, 231, 194, 75], 177, 1], 222]], [['regression [[114, null, 163, 119, 100, 76], null, 178]', [[114, None, 163, 119, 100, 76], None, 178], 73], ['regression [[130, 12, 210, 57, null, 52, 76], null, 198]', [[130, 12, 210, 57, None, 52, 76], None, 198], 161], ['control [[10, 11, null, 231, 194, 75], 177, 1]', [[10, 11, None, 231, 194, 75], 177, 1], 222], ['control [[220, 10, null], 58, 95]', [[220, 10, None], 58, 95], 236], ['control [[114, null, 163, 119, 100, 76], 199, 178]', [[114, None, 163, 119, 100, 76], 199, 178], 73], ['control [[1, 2], null, 3]', [[1, 2], None, 3], None], ['control [[null, null], 1, 2]', [[None, None], 1, 2], None], ['control [[4, null], null, null]', [[4, None], None, None], None]], [['regression [[111, null], null, 186]', [[111, None], None, 186], 228], ['regression [[61, null, 139], null, 236]', [[61, None, 139], None, 236], 237], ['partial-repair [[null, 5], null, 7]', [[None, 5], None, 7], 13], ['partial-repair [[null], null, 9]', [[None], None, 9], 9], ['control [[4, null], null, null]', [[4, None], None, None], None], ['control [[61, null, 139], 91, 236]', [[61, None, 139], 91, 236], 237], ['control [[10, 11, null, 231, 194, 75], 177, 1]', [[10, 11, None, 231, 194, 75], 177, 1], 222], ['control [[220, 10, null], 58, 95]', [[220, 10, None], 58, 95], 236]]]\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":"fe94ade53a6e69f6e7853378a894327b664fdce9aded6a4aa66336887de2e41e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(data, p, q):\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    if data.count(None) != 1:\n        return None\n    i = data.index(None)\n    if p is not None:\n        x = p\n        for v in data:\n            if v is not None:\n                x ^= v\n        return x\n    if q is None:\n        return None\n    x = q\n    for k, v in enumerate(data):\n        if v is not None:\n            x ^= mul(EXP[k], v)\n    return mul(x, EXP[i])\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [[111, null], null, 186]', [[111, None], None, 186], 228], ['regression [[61, null, 139], null, 236]', [[61, None, 139], None, 236], 237], ['control [[61, null, 139], 91, 236]', [[61, None, 139], 91, 236], 237], ['control [[10, 11, null, 231, 194, 75], 177, 1]', [[10, 11, None, 231, 194, 75], 177, 1], 222], ['control [[220, 10, null], 58, 95]', [[220, 10, None], 58, 95], 236], ['control [[114, null, 163, 119, 100, 76], 199, 178]', [[114, None, 163, 119, 100, 76], 199, 178], 73], ['control [[1, 2], null, 3]', [[1, 2], None, 3], None], ['control [[null, null], 1, 2]', [[None, None], 1, 2], None]], [['regression [[104, 202, 220, 113, null], null, 38]', [[104, 202, 220, 113, None], None, 38], 191], ['regression [[10, 11, null, 231, 194, 75], null, 1]', [[10, 11, None, 231, 194, 75], None, 1], 222], ['control [[null, null], 1, 2]', [[None, None], 1, 2], None], ['control [[4, null], null, null]', [[4, None], None, None], None], ['control [[61, null, 139], 91, 236]', [[61, None, 139], 91, 236], 237], ['control [[10, 11, null, 231, 194, 75], 177, 1]', [[10, 11, None, 231, 194, 75], 177, 1], 222], ['control [[220, 10, null], 58, 95]', [[220, 10, None], 58, 95], 236], ['control [[114, null, 163, 119, 100, 76], 199, 178]', [[114, None, 163, 119, 100, 76], 199, 178], 73]], [['regression [[220, 10, null], null, 95]', [[220, 10, None], None, 95], 236], ['regression [[68, 12, null, 209], null, 47]', [[68, 12, None, 209], None, 47], 106], ['control [[114, null, 163, 119, 100, 76], 199, 178]', [[114, None, 163, 119, 100, 76], 199, 178], 73], ['control [[1, 2], null, 3]', [[1, 2], None, 3], None], ['control [[null, null], 1, 2]', [[None, None], 1, 2], None], ['control [[4, null], null, null]', [[4, None], None, None], None], ['control [[61, null, 139], 91, 236]', [[61, None, 139], 91, 236], 237], ['control [[10, 11, null, 231, 194, 75], 177, 1]', [[10, 11, None, 231, 194, 75], 177, 1], 222]], [['regression [[114, null, 163, 119, 100, 76], null, 178]', [[114, None, 163, 119, 100, 76], None, 178], 73], ['regression [[130, 12, 210, 57, null, 52, 76], null, 198]', [[130, 12, 210, 57, None, 52, 76], None, 198], 161], ['control [[10, 11, null, 231, 194, 75], 177, 1]', [[10, 11, None, 231, 194, 75], 177, 1], 222], ['control [[220, 10, null], 58, 95]', [[220, 10, None], 58, 95], 236], ['control [[114, null, 163, 119, 100, 76], 199, 178]', [[114, None, 163, 119, 100, 76], 199, 178], 73], ['control [[1, 2], null, 3]', [[1, 2], None, 3], None], ['control [[null, null], 1, 2]', [[None, None], 1, 2], None], ['control [[4, null], null, null]', [[4, None], None, None], None]], [['regression [[111, null], null, 186]', [[111, None], None, 186], 228], ['regression [[61, null, 139], null, 236]', [[61, None, 139], None, 236], 237], ['partial-repair [[null, 5], null, 7]', [[None, 5], None, 7], 13], ['partial-repair [[null], null, 9]', [[None], None, 9], 9], ['control [[4, null], null, null]', [[4, None], None, None], None], ['control [[61, null, 139], 91, 236]', [[61, None, 139], 91, 236], 237], ['control [[10, 11, null, 231, 194, 75], 177, 1]', [[10, 11, None, 231, 194, 75], 177, 1], 222], ['control [[220, 10, null], 58, 95]', [[220, 10, None], 58, 95], 236]]]\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-raid6-q-recovery-coefficient-inverse","generated_at":"2026-09-29T14:48:35.050409+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Dual-parity arrays rebuild a data disk from the Q syndrome when the P disk has also failed.","root_cause":"The final step multiplies by g^i instead of g^(-i).","sha256":"3865026d3631939be0ac27f89e80011a05da5de1379658a3d57f79e2ea24ed69","title":"RAID-6 multiplies by g to the i instead of dividing · 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":37.936,"exit_code":1,"observations":[{"actual":213,"check":"regression [[111, null], null, 186]","expected":228,"passed":false},{"actual":199,"check":"regression [[61, null, 139], null, 236]","expected":237,"passed":false},{"actual":237,"check":"control [[61, null, 139], 91, 236]","expected":237,"passed":true},{"actual":222,"check":"control [[10, 11, null, 231, 194, 75], 177, 1]","expected":222,"passed":true},{"actual":236,"check":"control [[220, 10, null], 58, 95]","expected":236,"passed":true},{"actual":73,"check":"control [[114, null, 163, 119, 100, 76], 199, 178]","expected":73,"passed":true},{"actual":null,"check":"control [[1, 2], null, 3]","expected":null,"passed":true},{"actual":null,"check":"control [[null, null], 1, 2]","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [[111, null], null, 186]\", \"actual\": 213, \"expected\": 228, \"passed\": false}, {\"check\": \"regression [[61, null, 139], null, 236]\", \"actual\": 199, \"expected\": 237, \"passed\": false}, {\"check\": \"control [[61, null, 139], 91, 236]\", \"actual\": 237, \"expected\": 237, \"passed\": true}, {\"check\": \"control [[10, 11, null, 231, 194, 75], 177, 1]\", \"actual\": 222, \"expected\": 222, \"passed\": true}, {\"check\": \"control [[220, 10, null], 58, 95]\", \"actual\": 236, \"expected\": 236, \"passed\": true}, {\"check\": \"control [[114, null, 163, 119, 100, 76], 199, 178]\", \"actual\": 73, \"expected\": 73, \"passed\": true}, {\"check\": \"control [[1, 2], null, 3]\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"control [[null, null], 1, 2]\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.92,"exit_code":1,"observations":[{"actual":183,"check":"regression [[111, null], null, 186]","expected":228,"passed":false},{"actual":147,"check":"regression [[61, null, 139], null, 236]","expected":237,"passed":false},{"actual":237,"check":"control [[61, null, 139], 91, 236]","expected":237,"passed":true},{"actual":222,"check":"control [[10, 11, null, 231, 194, 75], 177, 1]","expected":222,"passed":true},{"actual":236,"check":"control [[220, 10, null], 58, 95]","expected":236,"passed":true},{"actual":73,"check":"control [[114, null, 163, 119, 100, 76], 199, 178]","expected":73,"passed":true},{"actual":null,"check":"control [[1, 2], null, 3]","expected":null,"passed":true},{"actual":null,"check":"control [[null, null], 1, 2]","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [[111, null], null, 186]\", \"actual\": 183, \"expected\": 228, \"passed\": false}, {\"check\": \"regression [[61, null, 139], null, 236]\", \"actual\": 147, \"expected\": 237, \"passed\": false}, {\"check\": \"control [[61, null, 139], 91, 236]\", \"actual\": 237, \"expected\": 237, \"passed\": true}, {\"check\": \"control [[10, 11, null, 231, 194, 75], 177, 1]\", \"actual\": 222, \"expected\": 222, \"passed\": true}, {\"check\": \"control [[220, 10, null], 58, 95]\", \"actual\": 236, \"expected\": 236, \"passed\": true}, {\"check\": \"control [[114, null, 163, 119, 100, 76], 199, 178]\", \"actual\": 73, \"expected\": 73, \"passed\": true}, {\"check\": \"control [[1, 2], null, 3]\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"control [[null, null], 1, 2]\", \"actual\": null, \"expected\": null, \"passed\": true}], \"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."}}