{"abstract":"The first outputs include contributions from the last input samples.","category":"Digital signal filters","checks":7,"contract":"Input [h, L, samples] (integers). Zero-stuff by L and filter with h, scaled by gain L: y[mL + p] = L sum_j h[jL + p] x[m - j]; return len(samples) * L outputs in time order.","contract_signature":"x","evaluation_group":"w2-digital_signal_filters-polyphase-interpolator","failed_approach":"The attempted repair requires m - j > 0, dropping the first input sample.","family":"w2-digital_signal_filters-polyphase-interpolator-history-lower-bound","id":"FA-91561","implementations":{"attempt":{"sha256":"a754d25524f50785433b68752c7a9390dc3aec64ba354c7445e1a392056af524","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    h, L, xs = x\n    out = []\n    for m in range(len(xs)):\n        for p in range(L):\n            acc = 0\n            j = 0\n            while j * L + p < len(h):\n                if m - j > 0:\n                    acc += h[j * L + p] * xs[m - j]\n                j += 1\n            out.append(L * acc)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: partial phase tail', [[1, 2, 3], 2, [1, 1]], [2, 4, 8, 4]], ['regression: L=3 taps 7', [[1, 1, 1, 1, 1, 1, 1], 3, [1, 2]], [3, 3, 3, 9, 9, 9]], ['repair check: impulse L=2', [[1, 2, 3, 4], 2, [1, 0, 0]], [2, 4, 6, 8, 0, 0]], ['control: random interpolator 5', [[0], 3, [2, 0]], [0, 0, 0, 0, 0, 0]], ['control: random interpolator 11', [[2, 4, -1, -3], 4, [0, -4, 1]], [0, 0, 0, 0, -32, -64, 16, 48, 8, 16, -4, -12]], ['regression: random interpolator 0', [[3, -1, -1, 2, 3], 3, [-4, -4, 2]], [-36, 12, 12, -60, -24, 12, -6, -42, -6]], ['regression: random interpolator 1', [[3, -2, 3, -3, 2, 2], 4, [3]], [36, -24, 36, -36]]], [['regression: random interpolator 1', [[3, -2, 3, -3, 2, 2], 4, [3]], [36, -24, 36, -36]], ['regression: random interpolator 4', [[-3, 3, 2, -1, 1], 4, [1]], [-12, 12, 8, -4]], ['regression: L=3 taps 7', [[1, 1, 1, 1, 1, 1, 1], 3, [1, 2]], [3, 3, 3, 9, 9, 9]], ['control: random interpolator 5', [[0], 3, [2, 0]], [0, 0, 0, 0, 0, 0]], ['control: random interpolator 11', [[2, 4, -1, -3], 4, [0, -4, 1]], [0, 0, 0, 0, -32, -64, 16, 48, 8, 16, -4, -12]], ['regression: random interpolator 0', [[3, -1, -1, 2, 3], 3, [-4, -4, 2]], [-36, 12, 12, -60, -24, 12, -6, -42, -6]], ['regression: random interpolator 8', [[0, -2, 3, 3, -2, 4, -3], 3, [4, 2]], [0, -24, 36, 36, -36, 66]]], [['regression: random interpolator 13', [[-2, 3, 3, -1, -1], 3, [1, 2, 3, -2, -2]], [-6, 9, 9, -15, 15, 18, -24, 21, 27, 3, -27, -18, 18, -12, -18]], ['regression: random interpolator 14', [[4, -1, 3, -1, 0, -2, 4], 3, [1, 3, 5]], [12, -3, 9, 33, -9, 21, 63, -15, 27]], ['regression: random interpolator 1', [[3, -2, 3, -3, 2, 2], 4, [3]], [36, -24, 36, -36]], ['control: random interpolator 5', [[0], 3, [2, 0]], [0, 0, 0, 0, 0, 0]], ['control: random interpolator 11', [[2, 4, -1, -3], 4, [0, -4, 1]], [0, 0, 0, 0, -32, -64, 16, 48, 8, 16, -4, -12]], ['regression: random interpolator 4', [[-3, 3, 2, -1, 1], 4, [1]], [-12, 12, 8, -4]], ['regression: random interpolator 8', [[0, -2, 3, 3, -2, 4, -3], 3, [4, 2]], [0, -24, 36, 36, -36, 66]]], [['regression: random interpolator 17', [[4, 4, 3, 1, -3, 2, 1], 4, [4]], [64, 64, 48, 16]], ['regression: random interpolator 18', [[-2, -1, -2, 0, 2], 2, [-4, 3, 1, 5, 1]], [16, 8, 4, -6, -32, -2, -12, -10, -20, -2]], ['repair check: random interpolator 3', [[-3], 4, [2, 2, 4, -3, -2]], [-24, 0, 0, 0, -24, 0, 0, 0, -48, 0, 0, 0, 36, 0, 0, 0, 24, 0, 0, 0]], ['control: random interpolator 5', [[0], 3, [2, 0]], [0, 0, 0, 0, 0, 0]], ['control: random interpolator 11', [[2, 4, -1, -3], 4, [0, -4, 1]], [0, 0, 0, 0, -32, -64, 16, 48, 8, 16, -4, -12]], ['regression: random interpolator 4', [[-3, 3, 2, -1, 1], 4, [1]], [-12, 12, 8, -4]], ['regression: random interpolator 8', [[0, -2, 3, 3, -2, 4, -3], 3, [4, 2]], [0, -24, 36, 36, -36, 66]]], [['regression: random interpolator 23', [[3, 2, 1, -1, 3, -1], 2, [-3, -1]], [-18, -12, -12, 2]], ['regression: random interpolator 26', [[4, -3, 2, -2], 3, [2, -4, 0, 4, -3]], [24, -18, 12, -60, 36, -24, 24, 0, 0, 48, -36, 24, -60, 27, -18]], ['repair check: random interpolator 6', [[2, -3, 2, -3], 4, [1, 5]], [8, -12, 8, -12, 40, -60, 40, -60]], ['control: random interpolator 5', [[0], 3, [2, 0]], [0, 0, 0, 0, 0, 0]], ['control: random interpolator 11', [[2, 4, -1, -3], 4, [0, -4, 1]], [0, 0, 0, 0, -32, -64, 16, 48, 8, 16, -4, -12]], ['regression: random interpolator 8', [[0, -2, 3, 3, -2, 4, -3], 3, [4, 2]], [0, -24, 36, 36, -36, 66]], ['regression: random interpolator 13', [[-2, 3, 3, -1, -1], 3, [1, 2, 3, -2, -2]], [-6, 9, 9, -15, 15, 18, -24, 21, 27, 3, -27, -18, 18, -12, -18]]]]\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":"035476609a18ec226c88bec05bf2b890b76b36af7f9861a8e517f95d515b0ea5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    h, L, xs = x\n    out = []\n    for m in range(len(xs)):\n        for p in range(L):\n            acc = 0\n            j = 0\n            while j * L + p < len(h):\n                acc += h[j * L + p] * xs[m - j]\n                j += 1\n            out.append(L * acc)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: partial phase tail', [[1, 2, 3], 2, [1, 1]], [2, 4, 8, 4]], ['regression: L=3 taps 7', [[1, 1, 1, 1, 1, 1, 1], 3, [1, 2]], [3, 3, 3, 9, 9, 9]], ['repair check: impulse L=2', [[1, 2, 3, 4], 2, [1, 0, 0]], [2, 4, 6, 8, 0, 0]], ['control: random interpolator 5', [[0], 3, [2, 0]], [0, 0, 0, 0, 0, 0]], ['control: random interpolator 11', [[2, 4, -1, -3], 4, [0, -4, 1]], [0, 0, 0, 0, -32, -64, 16, 48, 8, 16, -4, -12]], ['regression: random interpolator 0', [[3, -1, -1, 2, 3], 3, [-4, -4, 2]], [-36, 12, 12, -60, -24, 12, -6, -42, -6]], ['regression: random interpolator 1', [[3, -2, 3, -3, 2, 2], 4, [3]], [36, -24, 36, -36]]], [['regression: random interpolator 1', [[3, -2, 3, -3, 2, 2], 4, [3]], [36, -24, 36, -36]], ['regression: random interpolator 4', [[-3, 3, 2, -1, 1], 4, [1]], [-12, 12, 8, -4]], ['regression: L=3 taps 7', [[1, 1, 1, 1, 1, 1, 1], 3, [1, 2]], [3, 3, 3, 9, 9, 9]], ['control: random interpolator 5', [[0], 3, [2, 0]], [0, 0, 0, 0, 0, 0]], ['control: random interpolator 11', [[2, 4, -1, -3], 4, [0, -4, 1]], [0, 0, 0, 0, -32, -64, 16, 48, 8, 16, -4, -12]], ['regression: random interpolator 0', [[3, -1, -1, 2, 3], 3, [-4, -4, 2]], [-36, 12, 12, -60, -24, 12, -6, -42, -6]], ['regression: random interpolator 8', [[0, -2, 3, 3, -2, 4, -3], 3, [4, 2]], [0, -24, 36, 36, -36, 66]]], [['regression: random interpolator 13', [[-2, 3, 3, -1, -1], 3, [1, 2, 3, -2, -2]], [-6, 9, 9, -15, 15, 18, -24, 21, 27, 3, -27, -18, 18, -12, -18]], ['regression: random interpolator 14', [[4, -1, 3, -1, 0, -2, 4], 3, [1, 3, 5]], [12, -3, 9, 33, -9, 21, 63, -15, 27]], ['regression: random interpolator 1', [[3, -2, 3, -3, 2, 2], 4, [3]], [36, -24, 36, -36]], ['control: random interpolator 5', [[0], 3, [2, 0]], [0, 0, 0, 0, 0, 0]], ['control: random interpolator 11', [[2, 4, -1, -3], 4, [0, -4, 1]], [0, 0, 0, 0, -32, -64, 16, 48, 8, 16, -4, -12]], ['regression: random interpolator 4', [[-3, 3, 2, -1, 1], 4, [1]], [-12, 12, 8, -4]], ['regression: random interpolator 8', [[0, -2, 3, 3, -2, 4, -3], 3, [4, 2]], [0, -24, 36, 36, -36, 66]]], [['regression: random interpolator 17', [[4, 4, 3, 1, -3, 2, 1], 4, [4]], [64, 64, 48, 16]], ['regression: random interpolator 18', [[-2, -1, -2, 0, 2], 2, [-4, 3, 1, 5, 1]], [16, 8, 4, -6, -32, -2, -12, -10, -20, -2]], ['repair check: random interpolator 3', [[-3], 4, [2, 2, 4, -3, -2]], [-24, 0, 0, 0, -24, 0, 0, 0, -48, 0, 0, 0, 36, 0, 0, 0, 24, 0, 0, 0]], ['control: random interpolator 5', [[0], 3, [2, 0]], [0, 0, 0, 0, 0, 0]], ['control: random interpolator 11', [[2, 4, -1, -3], 4, [0, -4, 1]], [0, 0, 0, 0, -32, -64, 16, 48, 8, 16, -4, -12]], ['regression: random interpolator 4', [[-3, 3, 2, -1, 1], 4, [1]], [-12, 12, 8, -4]], ['regression: random interpolator 8', [[0, -2, 3, 3, -2, 4, -3], 3, [4, 2]], [0, -24, 36, 36, -36, 66]]], [['regression: random interpolator 23', [[3, 2, 1, -1, 3, -1], 2, [-3, -1]], [-18, -12, -12, 2]], ['regression: random interpolator 26', [[4, -3, 2, -2], 3, [2, -4, 0, 4, -3]], [24, -18, 12, -60, 36, -24, 24, 0, 0, 48, -36, 24, -60, 27, -18]], ['repair check: random interpolator 6', [[2, -3, 2, -3], 4, [1, 5]], [8, -12, 8, -12, 40, -60, 40, -60]], ['control: random interpolator 5', [[0], 3, [2, 0]], [0, 0, 0, 0, 0, 0]], ['control: random interpolator 11', [[2, 4, -1, -3], 4, [0, -4, 1]], [0, 0, 0, 0, -32, -64, 16, 48, 8, 16, -4, -12]], ['regression: random interpolator 8', [[0, -2, 3, 3, -2, 4, -3], 3, [4, 2]], [0, -24, 36, 36, -36, 66]], ['regression: random interpolator 13', [[-2, 3, 3, -1, -1], 3, [1, 2, 3, -2, -2]], [-6, 9, 9, -15, 15, 18, -24, 21, 27, 3, -27, -18, 18, -12, -18]]]]\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 with a stipulated toy contract; exact rational arithmetic or fixed-decimal rounding keeps outputs strict JSON. It is not a production DSP library and claims no standards conformance. 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-digital_signal_filters-polyphase-interpolator-history-lower-bound","generated_at":"2026-09-29T14:51:37.004500+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Interpolators feed DACs and sample-rate converters; gain and phase-indexing slips cause level errors and imaging.","root_cause":"The m - j >= 0 guard is missing, so negative indices wrap to the end of the input.","sha256":"a843c68b98e9b1657cc4f28ccb60f0de23eb8e12e5925aac4608427f75df86c3","title":"Polyphase interpolator reads wrapped input history · 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":39.216,"exit_code":1,"observations":[{"actual":[0,0,2,4],"check":"regression: partial phase tail","expected":[2,4,8,4],"passed":false},{"actual":[0,0,0,6,6,6],"check":"regression: L=3 taps 7","expected":[3,3,3,9,9,9],"passed":false},{"actual":[0,0,0,0,0,0],"check":"repair check: impulse L=2","expected":[2,4,6,8,0,0],"passed":false},{"actual":[0,0,0,0,0,0],"check":"control: random interpolator 5","expected":[0,0,0,0,0,0],"passed":true},{"actual":[0,0,0,0,-32,-64,16,48,8,16,-4,-12],"check":"control: random interpolator 11","expected":[0,0,0,0,-32,-64,16,48,8,16,-4,-12],"passed":true},{"actual":[0,0,0,-36,12,12,-6,-42,-6],"check":"regression: random interpolator 0","expected":[-36,12,12,-60,-24,12,-6,-42,-6],"passed":false},{"actual":[0,0,0,0],"check":"regression: random interpolator 1","expected":[36,-24,36,-36],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: partial phase tail\", \"actual\": [0, 0, 2, 4], \"expected\": [2, 4, 8, 4], \"passed\": false}, {\"check\": \"regression: L=3 taps 7\", \"actual\": [0, 0, 0, 6, 6, 6], \"expected\": [3, 3, 3, 9, 9, 9], \"passed\": false}, {\"check\": \"repair check: impulse L=2\", \"actual\": [0, 0, 0, 0, 0, 0], \"expected\": [2, 4, 6, 8, 0, 0], \"passed\": false}, {\"check\": \"control: random interpolator 5\", \"actual\": [0, 0, 0, 0, 0, 0], \"expected\": [0, 0, 0, 0, 0, 0], \"passed\": true}, {\"check\": \"control: random interpolator 11\", \"actual\": [0, 0, 0, 0, -32, -64, 16, 48, 8, 16, -4, -12], \"expected\": [0, 0, 0, 0, -32, -64, 16, 48, 8, 16, -4, -12], \"passed\": true}, {\"check\": \"regression: random interpolator 0\", \"actual\": [0, 0, 0, -36, 12, 12, -6, -42, -6], \"expected\": [-36, 12, 12, -60, -24, 12, -6, -42, -6], \"passed\": false}, {\"check\": \"regression: random interpolator 1\", \"actual\": [0, 0, 0, 0], \"expected\": [36, -24, 36, -36], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.405,"exit_code":1,"observations":[{"actual":[8,4,8,4],"check":"regression: partial phase tail","expected":[2,4,8,4],"passed":false},{"actual":[12,9,9,15,9,9],"check":"regression: L=3 taps 7","expected":[3,3,3,9,9,9],"passed":false},{"actual":[2,4,6,8,0,0],"check":"repair check: impulse L=2","expected":[2,4,6,8,0,0],"passed":true},{"actual":[0,0,0,0,0,0],"check":"control: random interpolator 5","expected":[0,0,0,0,0,0],"passed":true},{"actual":[0,0,0,0,-32,-64,16,48,8,16,-4,-12],"check":"control: random interpolator 11","expected":[0,0,0,0,-32,-64,16,48,8,16,-4,-12],"passed":true},{"actual":[-24,30,12,-60,-24,12,-6,-42,-6],"check":"regression: random interpolator 0","expected":[-36,12,12,-60,-24,12,-6,-42,-6],"passed":false},{"actual":[60,0,36,-36],"check":"regression: random interpolator 1","expected":[36,-24,36,-36],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: partial phase tail\", \"actual\": [8, 4, 8, 4], \"expected\": [2, 4, 8, 4], \"passed\": false}, {\"check\": \"regression: L=3 taps 7\", \"actual\": [12, 9, 9, 15, 9, 9], \"expected\": [3, 3, 3, 9, 9, 9], \"passed\": false}, {\"check\": \"repair check: impulse L=2\", \"actual\": [2, 4, 6, 8, 0, 0], \"expected\": [2, 4, 6, 8, 0, 0], \"passed\": true}, {\"check\": \"control: random interpolator 5\", \"actual\": [0, 0, 0, 0, 0, 0], \"expected\": [0, 0, 0, 0, 0, 0], \"passed\": true}, {\"check\": \"control: random interpolator 11\", \"actual\": [0, 0, 0, 0, -32, -64, 16, 48, 8, 16, -4, -12], \"expected\": [0, 0, 0, 0, -32, -64, 16, 48, 8, 16, -4, -12], \"passed\": true}, {\"check\": \"regression: random interpolator 0\", \"actual\": [-24, 30, 12, -60, -24, 12, -6, -42, -6], \"expected\": [-36, 12, 12, -60, -24, 12, -6, -42, -6], \"passed\": false}, {\"check\": \"regression: random interpolator 1\", \"actual\": [60, 0, 36, -36], \"expected\": [36, -24, 36, -36], \"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."}}