{"abstract":"The impulse response has a single echo instead of a decaying train.","category":"Digital signal filters","checks":7,"contract":"Input [D, g, samples]: y[n] = x[n] + g y[n-D] using a D-slot ring buffer with zero initial state; \"bad-delay\" if D < 1, \"unstable\" if |g| >= 1. Return exact fraction strings.","contract_signature":"x","evaluation_group":"w2-digital_signal_filters-feedback-comb-ring-buffer","failed_approach":"The attempted repair stores g y[n], applying the gain twice per trip.","family":"w2-digital_signal_filters-feedback-comb-ring-buffer-recirculated-value","id":"FA-91741","implementations":{"attempt":{"sha256":"2fd233917187c67daeddf0b848cc103b980a39b015611d8df414f2e5db8e39db","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    D, g, xs = x[0], Fraction(x[1]), x[2]\n    if D < 1:\n        return 'bad-delay'\n    if abs(g) >= 1:\n        return 'unstable'\n    buf = [Fraction(0)] * D\n    pos = 0\n    out = []\n    for v in xs:\n        delayed = buf[pos]\n        y = v + g * delayed\n        buf[pos] = g * y\n        pos = (pos + 1) % D\n        out.append(str(y))\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: impulse delay 2', [2, '1/2', [1, 0, 0, 0, 0, 0]], ['1', '0', '1/2', '0', '1/4', '0']], ['regression: delay 1', [1, '-1/2', [1, 0, 0]], ['1', '-1/2', '1/4']], ['regression: random comb 0', [2, '1/2', [-1, 3, 3, 0, 3, 2, -3, -1, -2]], ['-1', '3', '5/2', '3/2', '17/4', '11/4', '-7/8', '3/8', '-39/16']], ['control: unit gain rejected', [3, '1', [1]], 'unstable'], ['control: negative unit gain', [3, '-1', [1]], 'unstable'], ['control: bad delay', [0, '1/2', [1]], 'bad-delay'], ['control: random comb 6', [4, '-2/3', [1, 0, -3, 3]], ['1', '0', '-3', '3']]], [['regression: random comb 1', [4, '1/2', [-3, -2, 2, -3, 2, -1, -3, -2, -3]], ['-3', '-2', '2', '-3', '1/2', '-2', '-2', '-7/2', '-11/4']], ['regression: random comb 5', [2, '-2/3', [-3, -3, -1, -3, -1]], ['-3', '-3', '1', '-1', '-5/3']], ['regression: random comb 0', [2, '1/2', [-1, 3, 3, 0, 3, 2, -3, -1, -2]], ['-1', '3', '5/2', '3/2', '17/4', '11/4', '-7/8', '3/8', '-39/16']], ['control: random comb 8', [4, '-2/3', [1, 3, -2, -1]], ['1', '3', '-2', '-1']], ['control: random comb 14', [4, '-2/3', [0, 0, -3, -3, -3]], ['0', '0', '-3', '-3', '-3']], ['control: random comb 17', [4, '1/3', [2, -2, 1, -1]], ['2', '-2', '1', '-1']], ['control: random comb 20', [4, '-1/2', [3, 2, 3, 2]], ['3', '2', '3', '2']]], [['regression: random comb 9', [3, '1/2', [-2, 0, -3, 1, -3, 0, 3, 1]], ['-2', '0', '-3', '0', '-3', '-3/2', '3', '-1/2']], ['regression: random comb 11', [1, '3/4', [0, 1, 2, 0, -2, 1, 0]], ['0', '1', '11/4', '33/16', '-29/64', '169/256', '507/1024']], ['repair check: random comb 2', [4, '-2/3', [2, 2, -1, 3, -1, 2, 1]], ['2', '2', '-1', '3', '-7/3', '2/3', '5/3']], ['control: random comb 31', [4, '-1/2', [-2, -2, 0, 2]], ['-2', '-2', '0', '2']], ['control: random comb 34', [4, '-2/3', [3, -3, -3, -3]], ['3', '-3', '-3', '-3']], ['control: unit gain rejected', [3, '1', [1]], 'unstable'], ['control: negative unit gain', [3, '-1', [1]], 'unstable']], [['regression: random comb 22', [3, '-2/3', [2, 1, -3, 2, 2, 0, 2, 1, 3]], ['2', '1', '-3', '2/3', '4/3', '2', '14/9', '1/9', '5/3']], ['regression: random comb 23', [3, '1/2', [2, 3, -1, 3, 0, -3, 0, 2, -1]], ['2', '3', '-1', '4', '3/2', '-7/2', '2', '11/4', '-11/4']], ['repair check: random comb 4', [3, '1/3', [-3, 3, 1, -1]], ['-3', '3', '1', '-2']], ['control: bad delay', [0, '1/2', [1]], 'bad-delay'], ['control: random comb 6', [4, '-2/3', [1, 0, -3, 3]], ['1', '0', '-3', '3']], ['control: random comb 8', [4, '-2/3', [1, 3, -2, -1]], ['1', '3', '-2', '-1']], ['control: random comb 14', [4, '-2/3', [0, 0, -3, -3, -3]], ['0', '0', '-3', '-3', '-3']]], [['regression: random comb 25', [1, '1/3', [0, -2, 2, 3, 0, 2, -2, -3]], ['0', '-2', '4/3', '31/9', '31/27', '193/81', '-293/243', '-2480/729']], ['regression: random comb 29', [1, '1/2', [-3, 0, -3, -3, 2]], ['-3', '-3/2', '-15/4', '-39/8', '-7/16']], ['regression: random comb 7', [4, '-2/3', [1, 3, 3, -1, -1, 2, 3, -2, 2]], ['1', '3', '3', '-1', '-5/3', '0', '1', '-4/3', '28/9']], ['control: random comb 17', [4, '1/3', [2, -2, 1, -1]], ['2', '-2', '1', '-1']], ['control: random comb 20', [4, '-1/2', [3, 2, 3, 2]], ['3', '2', '3', '2']], ['control: random comb 31', [4, '-1/2', [-2, -2, 0, 2]], ['-2', '-2', '0', '2']], ['control: random comb 34', [4, '-2/3', [3, -3, -3, -3]], ['3', '-3', '-3', '-3']]]]\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":"f1e1f2bbbe04f71b4946dca1bea21502756befa531783fbead97bc78e28cea61","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    D, g, xs = x[0], Fraction(x[1]), x[2]\n    if D < 1:\n        return 'bad-delay'\n    if abs(g) >= 1:\n        return 'unstable'\n    buf = [Fraction(0)] * D\n    pos = 0\n    out = []\n    for v in xs:\n        delayed = buf[pos]\n        y = v + g * delayed\n        buf[pos] = v\n        pos = (pos + 1) % D\n        out.append(str(y))\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: impulse delay 2', [2, '1/2', [1, 0, 0, 0, 0, 0]], ['1', '0', '1/2', '0', '1/4', '0']], ['regression: delay 1', [1, '-1/2', [1, 0, 0]], ['1', '-1/2', '1/4']], ['regression: random comb 0', [2, '1/2', [-1, 3, 3, 0, 3, 2, -3, -1, -2]], ['-1', '3', '5/2', '3/2', '17/4', '11/4', '-7/8', '3/8', '-39/16']], ['control: unit gain rejected', [3, '1', [1]], 'unstable'], ['control: negative unit gain', [3, '-1', [1]], 'unstable'], ['control: bad delay', [0, '1/2', [1]], 'bad-delay'], ['control: random comb 6', [4, '-2/3', [1, 0, -3, 3]], ['1', '0', '-3', '3']]], [['regression: random comb 1', [4, '1/2', [-3, -2, 2, -3, 2, -1, -3, -2, -3]], ['-3', '-2', '2', '-3', '1/2', '-2', '-2', '-7/2', '-11/4']], ['regression: random comb 5', [2, '-2/3', [-3, -3, -1, -3, -1]], ['-3', '-3', '1', '-1', '-5/3']], ['regression: random comb 0', [2, '1/2', [-1, 3, 3, 0, 3, 2, -3, -1, -2]], ['-1', '3', '5/2', '3/2', '17/4', '11/4', '-7/8', '3/8', '-39/16']], ['control: random comb 8', [4, '-2/3', [1, 3, -2, -1]], ['1', '3', '-2', '-1']], ['control: random comb 14', [4, '-2/3', [0, 0, -3, -3, -3]], ['0', '0', '-3', '-3', '-3']], ['control: random comb 17', [4, '1/3', [2, -2, 1, -1]], ['2', '-2', '1', '-1']], ['control: random comb 20', [4, '-1/2', [3, 2, 3, 2]], ['3', '2', '3', '2']]], [['regression: random comb 9', [3, '1/2', [-2, 0, -3, 1, -3, 0, 3, 1]], ['-2', '0', '-3', '0', '-3', '-3/2', '3', '-1/2']], ['regression: random comb 11', [1, '3/4', [0, 1, 2, 0, -2, 1, 0]], ['0', '1', '11/4', '33/16', '-29/64', '169/256', '507/1024']], ['repair check: random comb 2', [4, '-2/3', [2, 2, -1, 3, -1, 2, 1]], ['2', '2', '-1', '3', '-7/3', '2/3', '5/3']], ['control: random comb 31', [4, '-1/2', [-2, -2, 0, 2]], ['-2', '-2', '0', '2']], ['control: random comb 34', [4, '-2/3', [3, -3, -3, -3]], ['3', '-3', '-3', '-3']], ['control: unit gain rejected', [3, '1', [1]], 'unstable'], ['control: negative unit gain', [3, '-1', [1]], 'unstable']], [['regression: random comb 22', [3, '-2/3', [2, 1, -3, 2, 2, 0, 2, 1, 3]], ['2', '1', '-3', '2/3', '4/3', '2', '14/9', '1/9', '5/3']], ['regression: random comb 23', [3, '1/2', [2, 3, -1, 3, 0, -3, 0, 2, -1]], ['2', '3', '-1', '4', '3/2', '-7/2', '2', '11/4', '-11/4']], ['repair check: random comb 4', [3, '1/3', [-3, 3, 1, -1]], ['-3', '3', '1', '-2']], ['control: bad delay', [0, '1/2', [1]], 'bad-delay'], ['control: random comb 6', [4, '-2/3', [1, 0, -3, 3]], ['1', '0', '-3', '3']], ['control: random comb 8', [4, '-2/3', [1, 3, -2, -1]], ['1', '3', '-2', '-1']], ['control: random comb 14', [4, '-2/3', [0, 0, -3, -3, -3]], ['0', '0', '-3', '-3', '-3']]], [['regression: random comb 25', [1, '1/3', [0, -2, 2, 3, 0, 2, -2, -3]], ['0', '-2', '4/3', '31/9', '31/27', '193/81', '-293/243', '-2480/729']], ['regression: random comb 29', [1, '1/2', [-3, 0, -3, -3, 2]], ['-3', '-3/2', '-15/4', '-39/8', '-7/16']], ['regression: random comb 7', [4, '-2/3', [1, 3, 3, -1, -1, 2, 3, -2, 2]], ['1', '3', '3', '-1', '-5/3', '0', '1', '-4/3', '28/9']], ['control: random comb 17', [4, '1/3', [2, -2, 1, -1]], ['2', '-2', '1', '-1']], ['control: random comb 20', [4, '-1/2', [3, 2, 3, 2]], ['3', '2', '3', '2']], ['control: random comb 31', [4, '-1/2', [-2, -2, 0, 2]], ['-2', '-2', '0', '2']], ['control: random comb 34', [4, '-2/3', [3, -3, -3, -3]], ['3', '-3', '-3', '-3']]]]\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-feedback-comb-ring-buffer-recirculated-value","generated_at":"2026-09-29T14:51:38.847483+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Feedback combs build resonators and reverberators; ring-buffer indexing slips change the delay and the pitch.","root_cause":"The ring buffer stores x[n] instead of y[n], making it a feedforward comb.","sha256":"94b32a62d0e42aadd9a7b11f917215c504896435c4b349d8d8b3e93851c1e5ed","title":"Feedback comb stores the input in its delay line · 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":44.401,"exit_code":1,"observations":[{"actual":["1","0","1/4","0","1/16","0"],"check":"regression: impulse delay 2","expected":["1","0","1/2","0","1/4","0"],"passed":false},{"actual":["1","1/4","1/16"],"check":"regression: delay 1","expected":["1","-1/2","1/4"],"passed":false},{"actual":["-1","3","11/4","3/4","59/16","35/16","-133/64","-29/64","-645/256"],"check":"regression: random comb 0","expected":["-1","3","5/2","3/2","17/4","11/4","-7/8","3/8","-39/16"],"passed":false},{"actual":"unstable","check":"control: unit gain rejected","expected":"unstable","passed":true},{"actual":"unstable","check":"control: negative unit gain","expected":"unstable","passed":true},{"actual":"bad-delay","check":"control: bad delay","expected":"bad-delay","passed":true},{"actual":["1","0","-3","3"],"check":"control: random comb 6","expected":["1","0","-3","3"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: impulse delay 2\", \"actual\": [\"1\", \"0\", \"1/4\", \"0\", \"1/16\", \"0\"], \"expected\": [\"1\", \"0\", \"1/2\", \"0\", \"1/4\", \"0\"], \"passed\": false}, {\"check\": \"regression: delay 1\", \"actual\": [\"1\", \"1/4\", \"1/16\"], \"expected\": [\"1\", \"-1/2\", \"1/4\"], \"passed\": false}, {\"check\": \"regression: random comb 0\", \"actual\": [\"-1\", \"3\", \"11/4\", \"3/4\", \"59/16\", \"35/16\", \"-133/64\", \"-29/64\", \"-645/256\"], \"expected\": [\"-1\", \"3\", \"5/2\", \"3/2\", \"17/4\", \"11/4\", \"-7/8\", \"3/8\", \"-39/16\"], \"passed\": false}, {\"check\": \"control: unit gain rejected\", \"actual\": \"unstable\", \"expected\": \"unstable\", \"passed\": true}, {\"check\": \"control: negative unit gain\", \"actual\": \"unstable\", \"expected\": \"unstable\", \"passed\": true}, {\"check\": \"control: bad delay\", \"actual\": \"bad-delay\", \"expected\": \"bad-delay\", \"passed\": true}, {\"check\": \"control: random comb 6\", \"actual\": [\"1\", \"0\", \"-3\", \"3\"], \"expected\": [\"1\", \"0\", \"-3\", \"3\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.24,"exit_code":1,"observations":[{"actual":["1","0","1/2","0","0","0"],"check":"regression: impulse delay 2","expected":["1","0","1/2","0","1/4","0"],"passed":false},{"actual":["1","-1/2","0"],"check":"regression: delay 1","expected":["1","-1/2","1/4"],"passed":false},{"actual":["-1","3","5/2","3/2","9/2","2","-3/2","0","-7/2"],"check":"regression: random comb 0","expected":["-1","3","5/2","3/2","17/4","11/4","-7/8","3/8","-39/16"],"passed":false},{"actual":"unstable","check":"control: unit gain rejected","expected":"unstable","passed":true},{"actual":"unstable","check":"control: negative unit gain","expected":"unstable","passed":true},{"actual":"bad-delay","check":"control: bad delay","expected":"bad-delay","passed":true},{"actual":["1","0","-3","3"],"check":"control: random comb 6","expected":["1","0","-3","3"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: impulse delay 2\", \"actual\": [\"1\", \"0\", \"1/2\", \"0\", \"0\", \"0\"], \"expected\": [\"1\", \"0\", \"1/2\", \"0\", \"1/4\", \"0\"], \"passed\": false}, {\"check\": \"regression: delay 1\", \"actual\": [\"1\", \"-1/2\", \"0\"], \"expected\": [\"1\", \"-1/2\", \"1/4\"], \"passed\": false}, {\"check\": \"regression: random comb 0\", \"actual\": [\"-1\", \"3\", \"5/2\", \"3/2\", \"9/2\", \"2\", \"-3/2\", \"0\", \"-7/2\"], \"expected\": [\"-1\", \"3\", \"5/2\", \"3/2\", \"17/4\", \"11/4\", \"-7/8\", \"3/8\", \"-39/16\"], \"passed\": false}, {\"check\": \"control: unit gain rejected\", \"actual\": \"unstable\", \"expected\": \"unstable\", \"passed\": true}, {\"check\": \"control: negative unit gain\", \"actual\": \"unstable\", \"expected\": \"unstable\", \"passed\": true}, {\"check\": \"control: bad delay\", \"actual\": \"bad-delay\", \"expected\": \"bad-delay\", \"passed\": true}, {\"check\": \"control: random comb 6\", \"actual\": [\"1\", \"0\", \"-3\", \"3\"], \"expected\": [\"1\", \"0\", \"-3\", \"3\"], \"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."}}