{"abstract":"Blocks whose length is not a multiple of the pattern period are rejected.","category":"Error-correcting codes","checks":8,"contract":"Depuncture a rate-matched soft stream: the mother-code stream of length total was punctured with a cyclic 0/1 pattern starting at pattern phase 0 for every block. Reinsert LLR 0 at punctured positions and place received values at kept positions. If the number of received values differs from the number of kept positions, or the pattern keeps nothing, return None. Return the depunctured list.","evaluation_group":"w2-error_correcting_codes-depuncture","failed_approach":"Adding the full remainder length counts punctured positions of the tail as kept.","family":"w2-error_correcting_codes-depuncture-partial-period-count","id":"FA-72156","implementations":{"attempt":{"sha256":"98094899587eabc07b3598b0915c80ce0078206b53d8a797ff491828d7e6e320","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(rx, pattern, total):\n    if not pattern or sum(pattern) == 0 or total < 0:\n        return None\n    kept = sum(pattern) * (total // len(pattern)) + total % len(pattern)\n    if kept != len(rx):\n        return None\n    out, j = [], 0\n    for k in range(total):\n        if pattern[k % len(pattern)]:\n            out.append(rx[j])\n            j += 1\n        else:\n            out.append(0)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [[-5, -1, 4, 1, -3, 2, 4, 6, 1, -1], [1, 1, 0, 1], 13]', [[-5, -1, 4, 1, -3, 2, 4, 6, 1, -1], [1, 1, 0, 1], 13], [-5, -1, 0, 4, 1, -3, 0, 2, 4, 6, 0, 1, -1]], ['regression [[-1, -3, 1, 4, -3], [1, 1, 0, 1], 6]', [[-1, -3, 1, 4, -3], [1, 1, 0, 1], 6], [-1, -3, 0, 1, 4, -3]], ['partial-repair [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10]', [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10], [2, 0, 1, -3, 6, 0, -1, 0, -5, -3]], ['partial-repair [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8]', [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8], [-1, 0, 4, 1, -5, 0, -3, 0]], ['control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]', [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12], [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0]], ['control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]', [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12], [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0]], ['control [[1, 2], [1, 1, 0], 3]', [[1, 2], [1, 1, 0], 3], [1, 2, 0]], ['control [[1, 2, 3], [1, 1, 0], 3]', [[1, 2, 3], [1, 1, 0], 3], None]], [['regression [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8]', [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8], [-1, 0, 4, 1, -5, 0, -3, 0]], ['regression [[1, -1, -1, 6, 2, 4, -1, 1, 4, 6, 6], [1, 1, 1, 0], 14]', [[1, -1, -1, 6, 2, 4, -1, 1, 4, 6, 6], [1, 1, 1, 0], 14], [1, -1, -1, 0, 6, 2, 4, 0, -1, 1, 4, 0, 6, 6]], ['partial-repair [[-3, 6, 6], [0, 1, 1, 1], 5]', [[-3, 6, 6], [0, 1, 1, 1], 5], [0, -3, 6, 6, 0]], ['partial-repair [[4], [1, 0, 0], 2]', [[4], [1, 0, 0], 2], [4, 0]], ['control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]', [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12], [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0]], ['control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]', [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12], [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0]], ['control [[1, 2], [1, 1, 0], 3]', [[1, 2], [1, 1, 0], 3], [1, 2, 0]], ['control [[1, 2, 3], [1, 1, 0], 3]', [[1, 2, 3], [1, 1, 0], 3], None]], [['regression [[6, 2, -1], [1, 0], 5]', [[6, 2, -1], [1, 0], 5], [6, 0, 2, 0, -1]], ['regression [[-3, 2, -3, -1, 4, 2, 1, 6, 6, -5], [1, 1, 0], 14]', [[-3, 2, -3, -1, 4, 2, 1, 6, 6, -5], [1, 1, 0], 14], [-3, 2, 0, -3, -1, 0, 4, 2, 0, 1, 6, 0, 6, -5]], ['partial-repair [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8]', [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8], [-1, 0, 4, 1, -5, 0, -3, 0]], ['partial-repair [[6, 4, 2], [0, 1, 1, 1], 5]', [[6, 4, 2], [0, 1, 1, 1], 5], [0, 6, 4, 2, 0]], ['control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]', [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12], [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0]], ['control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]', [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12], [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0]], ['control [[1, 2], [1, 1, 0], 3]', [[1, 2], [1, 1, 0], 3], [1, 2, 0]], ['control [[1, 2, 3], [1, 1, 0], 3]', [[1, 2, 3], [1, 1, 0], 3], None]], [['regression [[7, 8, 9, 5], [1, 1, 0, 1], 5]', [[7, 8, 9, 5], [1, 1, 0, 1], 5], [7, 8, 0, 9, 5]], ['regression [[-5, -1, 4, 1, -3, 2, 4, 6, 1, -1], [1, 1, 0, 1], 13]', [[-5, -1, 4, 1, -3, 2, 4, 6, 1, -1], [1, 1, 0, 1], 13], [-5, -1, 0, 4, 1, -3, 0, 2, 4, 6, 0, 1, -1]], ['partial-repair [[4], [1, 0, 0], 2]', [[4], [1, 0, 0], 2], [4, 0]], ['partial-repair [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10]', [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10], [2, 0, 1, -3, 6, 0, -1, 0, -5, -3]], ['control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]', [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12], [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0]], ['control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]', [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12], [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0]], ['control [[1, 2], [1, 1, 0], 3]', [[1, 2], [1, 1, 0], 3], [1, 2, 0]], ['control [[1, 2, 3], [1, 1, 0], 3]', [[1, 2, 3], [1, 1, 0], 3], None]], [['regression [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10]', [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10], [2, 0, 1, -3, 6, 0, -1, 0, -5, -3]], ['regression [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8]', [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8], [-1, 0, 4, 1, -5, 0, -3, 0]], ['partial-repair [[6, 4, 2], [0, 1, 1, 1], 5]', [[6, 4, 2], [0, 1, 1, 1], 5], [0, 6, 4, 2, 0]], ['partial-repair [[-3, 6, 6], [0, 1, 1, 1], 5]', [[-3, 6, 6], [0, 1, 1, 1], 5], [0, -3, 6, 6, 0]], ['control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]', [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12], [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0]], ['control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]', [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12], [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0]], ['control [[1, 2], [1, 1, 0], 3]', [[1, 2], [1, 1, 0], 3], [1, 2, 0]], ['control [[1, 2, 3], [1, 1, 0], 3]', [[1, 2, 3], [1, 1, 0], 3], None]]]\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":"0ac9752d5d5671234dfee25adaa64e1cec365861383aa557ffe9e6d4ae5a6fc3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(rx, pattern, total):\n    if not pattern or sum(pattern) == 0 or total < 0:\n        return None\n    kept = sum(pattern) * (total // len(pattern))\n    if kept != len(rx):\n        return None\n    out, j = [], 0\n    for k in range(total):\n        if pattern[k % len(pattern)]:\n            out.append(rx[j])\n            j += 1\n        else:\n            out.append(0)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [[-5, -1, 4, 1, -3, 2, 4, 6, 1, -1], [1, 1, 0, 1], 13]', [[-5, -1, 4, 1, -3, 2, 4, 6, 1, -1], [1, 1, 0, 1], 13], [-5, -1, 0, 4, 1, -3, 0, 2, 4, 6, 0, 1, -1]], ['regression [[-1, -3, 1, 4, -3], [1, 1, 0, 1], 6]', [[-1, -3, 1, 4, -3], [1, 1, 0, 1], 6], [-1, -3, 0, 1, 4, -3]], ['partial-repair [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10]', [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10], [2, 0, 1, -3, 6, 0, -1, 0, -5, -3]], ['partial-repair [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8]', [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8], [-1, 0, 4, 1, -5, 0, -3, 0]], ['control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]', [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12], [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0]], ['control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]', [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12], [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0]], ['control [[1, 2], [1, 1, 0], 3]', [[1, 2], [1, 1, 0], 3], [1, 2, 0]], ['control [[1, 2, 3], [1, 1, 0], 3]', [[1, 2, 3], [1, 1, 0], 3], None]], [['regression [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8]', [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8], [-1, 0, 4, 1, -5, 0, -3, 0]], ['regression [[1, -1, -1, 6, 2, 4, -1, 1, 4, 6, 6], [1, 1, 1, 0], 14]', [[1, -1, -1, 6, 2, 4, -1, 1, 4, 6, 6], [1, 1, 1, 0], 14], [1, -1, -1, 0, 6, 2, 4, 0, -1, 1, 4, 0, 6, 6]], ['partial-repair [[-3, 6, 6], [0, 1, 1, 1], 5]', [[-3, 6, 6], [0, 1, 1, 1], 5], [0, -3, 6, 6, 0]], ['partial-repair [[4], [1, 0, 0], 2]', [[4], [1, 0, 0], 2], [4, 0]], ['control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]', [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12], [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0]], ['control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]', [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12], [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0]], ['control [[1, 2], [1, 1, 0], 3]', [[1, 2], [1, 1, 0], 3], [1, 2, 0]], ['control [[1, 2, 3], [1, 1, 0], 3]', [[1, 2, 3], [1, 1, 0], 3], None]], [['regression [[6, 2, -1], [1, 0], 5]', [[6, 2, -1], [1, 0], 5], [6, 0, 2, 0, -1]], ['regression [[-3, 2, -3, -1, 4, 2, 1, 6, 6, -5], [1, 1, 0], 14]', [[-3, 2, -3, -1, 4, 2, 1, 6, 6, -5], [1, 1, 0], 14], [-3, 2, 0, -3, -1, 0, 4, 2, 0, 1, 6, 0, 6, -5]], ['partial-repair [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8]', [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8], [-1, 0, 4, 1, -5, 0, -3, 0]], ['partial-repair [[6, 4, 2], [0, 1, 1, 1], 5]', [[6, 4, 2], [0, 1, 1, 1], 5], [0, 6, 4, 2, 0]], ['control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]', [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12], [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0]], ['control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]', [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12], [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0]], ['control [[1, 2], [1, 1, 0], 3]', [[1, 2], [1, 1, 0], 3], [1, 2, 0]], ['control [[1, 2, 3], [1, 1, 0], 3]', [[1, 2, 3], [1, 1, 0], 3], None]], [['regression [[7, 8, 9, 5], [1, 1, 0, 1], 5]', [[7, 8, 9, 5], [1, 1, 0, 1], 5], [7, 8, 0, 9, 5]], ['regression [[-5, -1, 4, 1, -3, 2, 4, 6, 1, -1], [1, 1, 0, 1], 13]', [[-5, -1, 4, 1, -3, 2, 4, 6, 1, -1], [1, 1, 0, 1], 13], [-5, -1, 0, 4, 1, -3, 0, 2, 4, 6, 0, 1, -1]], ['partial-repair [[4], [1, 0, 0], 2]', [[4], [1, 0, 0], 2], [4, 0]], ['partial-repair [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10]', [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10], [2, 0, 1, -3, 6, 0, -1, 0, -5, -3]], ['control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]', [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12], [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0]], ['control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]', [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12], [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0]], ['control [[1, 2], [1, 1, 0], 3]', [[1, 2], [1, 1, 0], 3], [1, 2, 0]], ['control [[1, 2, 3], [1, 1, 0], 3]', [[1, 2, 3], [1, 1, 0], 3], None]], [['regression [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10]', [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10], [2, 0, 1, -3, 6, 0, -1, 0, -5, -3]], ['regression [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8]', [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8], [-1, 0, 4, 1, -5, 0, -3, 0]], ['partial-repair [[6, 4, 2], [0, 1, 1, 1], 5]', [[6, 4, 2], [0, 1, 1, 1], 5], [0, 6, 4, 2, 0]], ['partial-repair [[-3, 6, 6], [0, 1, 1, 1], 5]', [[-3, 6, 6], [0, 1, 1, 1], 5], [0, -3, 6, 6, 0]], ['control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]', [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12], [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0]], ['control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]', [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12], [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0]], ['control [[1, 2], [1, 1, 0], 3]', [[1, 2], [1, 1, 0], 3], [1, 2, 0]], ['control [[1, 2, 3], [1, 1, 0], 3]', [[1, 2, 3], [1, 1, 0], 3], None]]]\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":"9bcac2248cd1399d60ffd642ba1d42cafaaecd4cf78609eaa4b8196cba270383","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(rx, pattern, total):\n    if not pattern or sum(pattern) == 0 or total < 0:\n        return None\n    kept = sum(pattern) * (total // len(pattern)) + sum(pattern[:total % len(pattern)])\n    if kept != len(rx):\n        return None\n    out, j = [], 0\n    for k in range(total):\n        if pattern[k % len(pattern)]:\n            out.append(rx[j])\n            j += 1\n        else:\n            out.append(0)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression [[-5, -1, 4, 1, -3, 2, 4, 6, 1, -1], [1, 1, 0, 1], 13]', [[-5, -1, 4, 1, -3, 2, 4, 6, 1, -1], [1, 1, 0, 1], 13], [-5, -1, 0, 4, 1, -3, 0, 2, 4, 6, 0, 1, -1]], ['regression [[-1, -3, 1, 4, -3], [1, 1, 0, 1], 6]', [[-1, -3, 1, 4, -3], [1, 1, 0, 1], 6], [-1, -3, 0, 1, 4, -3]], ['partial-repair [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10]', [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10], [2, 0, 1, -3, 6, 0, -1, 0, -5, -3]], ['partial-repair [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8]', [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8], [-1, 0, 4, 1, -5, 0, -3, 0]], ['control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]', [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12], [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0]], ['control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]', [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12], [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0]], ['control [[1, 2], [1, 1, 0], 3]', [[1, 2], [1, 1, 0], 3], [1, 2, 0]], ['control [[1, 2, 3], [1, 1, 0], 3]', [[1, 2, 3], [1, 1, 0], 3], None]], [['regression [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8]', [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8], [-1, 0, 4, 1, -5, 0, -3, 0]], ['regression [[1, -1, -1, 6, 2, 4, -1, 1, 4, 6, 6], [1, 1, 1, 0], 14]', [[1, -1, -1, 6, 2, 4, -1, 1, 4, 6, 6], [1, 1, 1, 0], 14], [1, -1, -1, 0, 6, 2, 4, 0, -1, 1, 4, 0, 6, 6]], ['partial-repair [[-3, 6, 6], [0, 1, 1, 1], 5]', [[-3, 6, 6], [0, 1, 1, 1], 5], [0, -3, 6, 6, 0]], ['partial-repair [[4], [1, 0, 0], 2]', [[4], [1, 0, 0], 2], [4, 0]], ['control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]', [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12], [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0]], ['control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]', [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12], [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0]], ['control [[1, 2], [1, 1, 0], 3]', [[1, 2], [1, 1, 0], 3], [1, 2, 0]], ['control [[1, 2, 3], [1, 1, 0], 3]', [[1, 2, 3], [1, 1, 0], 3], None]], [['regression [[6, 2, -1], [1, 0], 5]', [[6, 2, -1], [1, 0], 5], [6, 0, 2, 0, -1]], ['regression [[-3, 2, -3, -1, 4, 2, 1, 6, 6, -5], [1, 1, 0], 14]', [[-3, 2, -3, -1, 4, 2, 1, 6, 6, -5], [1, 1, 0], 14], [-3, 2, 0, -3, -1, 0, 4, 2, 0, 1, 6, 0, 6, -5]], ['partial-repair [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8]', [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8], [-1, 0, 4, 1, -5, 0, -3, 0]], ['partial-repair [[6, 4, 2], [0, 1, 1, 1], 5]', [[6, 4, 2], [0, 1, 1, 1], 5], [0, 6, 4, 2, 0]], ['control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]', [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12], [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0]], ['control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]', [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12], [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0]], ['control [[1, 2], [1, 1, 0], 3]', [[1, 2], [1, 1, 0], 3], [1, 2, 0]], ['control [[1, 2, 3], [1, 1, 0], 3]', [[1, 2, 3], [1, 1, 0], 3], None]], [['regression [[7, 8, 9, 5], [1, 1, 0, 1], 5]', [[7, 8, 9, 5], [1, 1, 0, 1], 5], [7, 8, 0, 9, 5]], ['regression [[-5, -1, 4, 1, -3, 2, 4, 6, 1, -1], [1, 1, 0, 1], 13]', [[-5, -1, 4, 1, -3, 2, 4, 6, 1, -1], [1, 1, 0, 1], 13], [-5, -1, 0, 4, 1, -3, 0, 2, 4, 6, 0, 1, -1]], ['partial-repair [[4], [1, 0, 0], 2]', [[4], [1, 0, 0], 2], [4, 0]], ['partial-repair [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10]', [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10], [2, 0, 1, -3, 6, 0, -1, 0, -5, -3]], ['control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]', [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12], [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0]], ['control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]', [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12], [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0]], ['control [[1, 2], [1, 1, 0], 3]', [[1, 2], [1, 1, 0], 3], [1, 2, 0]], ['control [[1, 2, 3], [1, 1, 0], 3]', [[1, 2, 3], [1, 1, 0], 3], None]], [['regression [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10]', [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10], [2, 0, 1, -3, 6, 0, -1, 0, -5, -3]], ['regression [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8]', [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8], [-1, 0, 4, 1, -5, 0, -3, 0]], ['partial-repair [[6, 4, 2], [0, 1, 1, 1], 5]', [[6, 4, 2], [0, 1, 1, 1], 5], [0, 6, 4, 2, 0]], ['partial-repair [[-3, 6, 6], [0, 1, 1, 1], 5]', [[-3, 6, 6], [0, 1, 1, 1], 5], [0, -3, 6, 6, 0]], ['control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]', [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12], [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0]], ['control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]', [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12], [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0]], ['control [[1, 2], [1, 1, 0], 3]', [[1, 2], [1, 1, 0], 3], [1, 2, 0]], ['control [[1, 2, 3], [1, 1, 0], 3]', [[1, 2, 3], [1, 1, 0], 3], None]]]\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-depuncture-partial-period-count","generated_at":"2026-09-29T14:48:35.995382+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Rate-compatible punctured convolutional and turbo codes need exact depuncturing before decoding.","repair":"Add the kept positions of the leading slice of the pattern for the remainder.","root_cause":"The kept count only counts whole pattern periods.","sha256":"76fc0f99bc8277b6cf73329a11f7a08c6d9b46e1d5742530d272258df4330a03","title":"Depuncturing ignores the partial final pattern period · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.199,"exit_code":1,"observations":[{"actual":[-5,-1,0,4,1,-3,0,2,4,6,0,1,-1],"check":"regression [[-5, -1, 4, 1, -3, 2, 4, 6, 1, -1], [1, 1, 0, 1], 13]","expected":[-5,-1,0,4,1,-3,0,2,4,6,0,1,-1],"passed":true},{"actual":[-1,-3,0,1,4,-3],"check":"regression [[-1, -3, 1, 4, -3], [1, 1, 0, 1], 6]","expected":[-1,-3,0,1,4,-3],"passed":true},{"actual":null,"check":"partial-repair [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10]","expected":[2,0,1,-3,6,0,-1,0,-5,-3],"passed":false},{"actual":null,"check":"partial-repair [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8]","expected":[-1,0,4,1,-5,0,-3,0],"passed":false},{"actual":[1,-3,-5,0,2,2,-1,0,-3,2,4,0],"check":"control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]","expected":[1,-3,-5,0,2,2,-1,0,-3,2,4,0],"passed":true},{"actual":[-5,-3,0,-1,6,0,-3,-5,0,-5,-3,0],"check":"control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]","expected":[-5,-3,0,-1,6,0,-3,-5,0,-5,-3,0],"passed":true},{"actual":[1,2,0],"check":"control [[1, 2], [1, 1, 0], 3]","expected":[1,2,0],"passed":true},{"actual":null,"check":"control [[1, 2, 3], [1, 1, 0], 3]","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [[-5, -1, 4, 1, -3, 2, 4, 6, 1, -1], [1, 1, 0, 1], 13]\", \"actual\": [-5, -1, 0, 4, 1, -3, 0, 2, 4, 6, 0, 1, -1], \"expected\": [-5, -1, 0, 4, 1, -3, 0, 2, 4, 6, 0, 1, -1], \"passed\": true}, {\"check\": \"regression [[-1, -3, 1, 4, -3], [1, 1, 0, 1], 6]\", \"actual\": [-1, -3, 0, 1, 4, -3], \"expected\": [-1, -3, 0, 1, 4, -3], \"passed\": true}, {\"check\": \"partial-repair [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10]\", \"actual\": null, \"expected\": [2, 0, 1, -3, 6, 0, -1, 0, -5, -3], \"passed\": false}, {\"check\": \"partial-repair [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8]\", \"actual\": null, \"expected\": [-1, 0, 4, 1, -5, 0, -3, 0], \"passed\": false}, {\"check\": \"control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]\", \"actual\": [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0], \"expected\": [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0], \"passed\": true}, {\"check\": \"control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]\", \"actual\": [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0], \"expected\": [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0], \"passed\": true}, {\"check\": \"control [[1, 2], [1, 1, 0], 3]\", \"actual\": [1, 2, 0], \"expected\": [1, 2, 0], \"passed\": true}, {\"check\": \"control [[1, 2, 3], [1, 1, 0], 3]\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.112,"exit_code":1,"observations":[{"actual":null,"check":"regression [[-5, -1, 4, 1, -3, 2, 4, 6, 1, -1], [1, 1, 0, 1], 13]","expected":[-5,-1,0,4,1,-3,0,2,4,6,0,1,-1],"passed":false},{"actual":null,"check":"regression [[-1, -3, 1, 4, -3], [1, 1, 0, 1], 6]","expected":[-1,-3,0,1,4,-3],"passed":false},{"actual":null,"check":"partial-repair [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10]","expected":[2,0,1,-3,6,0,-1,0,-5,-3],"passed":false},{"actual":null,"check":"partial-repair [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8]","expected":[-1,0,4,1,-5,0,-3,0],"passed":false},{"actual":[1,-3,-5,0,2,2,-1,0,-3,2,4,0],"check":"control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]","expected":[1,-3,-5,0,2,2,-1,0,-3,2,4,0],"passed":true},{"actual":[-5,-3,0,-1,6,0,-3,-5,0,-5,-3,0],"check":"control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]","expected":[-5,-3,0,-1,6,0,-3,-5,0,-5,-3,0],"passed":true},{"actual":[1,2,0],"check":"control [[1, 2], [1, 1, 0], 3]","expected":[1,2,0],"passed":true},{"actual":null,"check":"control [[1, 2, 3], [1, 1, 0], 3]","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [[-5, -1, 4, 1, -3, 2, 4, 6, 1, -1], [1, 1, 0, 1], 13]\", \"actual\": null, \"expected\": [-5, -1, 0, 4, 1, -3, 0, 2, 4, 6, 0, 1, -1], \"passed\": false}, {\"check\": \"regression [[-1, -3, 1, 4, -3], [1, 1, 0, 1], 6]\", \"actual\": null, \"expected\": [-1, -3, 0, 1, 4, -3], \"passed\": false}, {\"check\": \"partial-repair [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10]\", \"actual\": null, \"expected\": [2, 0, 1, -3, 6, 0, -1, 0, -5, -3], \"passed\": false}, {\"check\": \"partial-repair [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8]\", \"actual\": null, \"expected\": [-1, 0, 4, 1, -5, 0, -3, 0], \"passed\": false}, {\"check\": \"control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]\", \"actual\": [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0], \"expected\": [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0], \"passed\": true}, {\"check\": \"control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]\", \"actual\": [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0], \"expected\": [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0], \"passed\": true}, {\"check\": \"control [[1, 2], [1, 1, 0], 3]\", \"actual\": [1, 2, 0], \"expected\": [1, 2, 0], \"passed\": true}, {\"check\": \"control [[1, 2, 3], [1, 1, 0], 3]\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.725,"exit_code":0,"observations":[{"actual":[-5,-1,0,4,1,-3,0,2,4,6,0,1,-1],"check":"regression [[-5, -1, 4, 1, -3, 2, 4, 6, 1, -1], [1, 1, 0, 1], 13]","expected":[-5,-1,0,4,1,-3,0,2,4,6,0,1,-1],"passed":true},{"actual":[-1,-3,0,1,4,-3],"check":"regression [[-1, -3, 1, 4, -3], [1, 1, 0, 1], 6]","expected":[-1,-3,0,1,4,-3],"passed":true},{"actual":[2,0,1,-3,6,0,-1,0,-5,-3],"check":"partial-repair [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10]","expected":[2,0,1,-3,6,0,-1,0,-5,-3],"passed":true},{"actual":[-1,0,4,1,-5,0,-3,0],"check":"partial-repair [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8]","expected":[-1,0,4,1,-5,0,-3,0],"passed":true},{"actual":[1,-3,-5,0,2,2,-1,0,-3,2,4,0],"check":"control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]","expected":[1,-3,-5,0,2,2,-1,0,-3,2,4,0],"passed":true},{"actual":[-5,-3,0,-1,6,0,-3,-5,0,-5,-3,0],"check":"control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]","expected":[-5,-3,0,-1,6,0,-3,-5,0,-5,-3,0],"passed":true},{"actual":[1,2,0],"check":"control [[1, 2], [1, 1, 0], 3]","expected":[1,2,0],"passed":true},{"actual":null,"check":"control [[1, 2, 3], [1, 1, 0], 3]","expected":null,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression [[-5, -1, 4, 1, -3, 2, 4, 6, 1, -1], [1, 1, 0, 1], 13]\", \"actual\": [-5, -1, 0, 4, 1, -3, 0, 2, 4, 6, 0, 1, -1], \"expected\": [-5, -1, 0, 4, 1, -3, 0, 2, 4, 6, 0, 1, -1], \"passed\": true}, {\"check\": \"regression [[-1, -3, 1, 4, -3], [1, 1, 0, 1], 6]\", \"actual\": [-1, -3, 0, 1, 4, -3], \"expected\": [-1, -3, 0, 1, 4, -3], \"passed\": true}, {\"check\": \"partial-repair [[2, 1, -3, 6, -1, -5, -3], [1, 0, 1, 1, 1, 0], 10]\", \"actual\": [2, 0, 1, -3, 6, 0, -1, 0, -5, -3], \"expected\": [2, 0, 1, -3, 6, 0, -1, 0, -5, -3], \"passed\": true}, {\"check\": \"partial-repair [[-1, 4, 1, -5, -3], [1, 0, 1, 1, 1, 0], 8]\", \"actual\": [-1, 0, 4, 1, -5, 0, -3, 0], \"expected\": [-1, 0, 4, 1, -5, 0, -3, 0], \"passed\": true}, {\"check\": \"control [[1, -3, -5, 2, 2, -1, -3, 2, 4], [1, 1, 1, 0], 12]\", \"actual\": [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0], \"expected\": [1, -3, -5, 0, 2, 2, -1, 0, -3, 2, 4, 0], \"passed\": true}, {\"check\": \"control [[-5, -3, -1, 6, -3, -5, -5, -3], [1, 1, 0], 12]\", \"actual\": [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0], \"expected\": [-5, -3, 0, -1, 6, 0, -3, -5, 0, -5, -3, 0], \"passed\": true}, {\"check\": \"control [[1, 2], [1, 1, 0], 3]\", \"actual\": [1, 2, 0], \"expected\": [1, 2, 0], \"passed\": true}, {\"check\": \"control [[1, 2, 3], [1, 1, 0], 3]\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}