{"abstract":"The magnitude response is no longer flat; the section boosts low frequencies.","category":"Digital signal filters","checks":7,"contract":"Input [a, samples]: y[n] = a x[n] + x[n-1] - a y[n-1] with zero state, \"unstable\" if |a| >= 1. Return exact fraction strings.","contract_signature":"x","evaluation_group":"w2-digital_signal_filters-first-order-allpass","failed_approach":"The attempted repair subtracts a x[n-1] instead of a y[n-1].","family":"w2-digital_signal_filters-first-order-allpass-allpass-feedback-sign","id":"FA-91826","implementations":{"attempt":{"sha256":"5e25728d0833911bbd84d3bff1f79c5a25ce2993f6973a58c736ef1d6431a10d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    a, xs = Fraction(x[0]), x[1]\n    if abs(a) >= 1:\n        return 'unstable'\n    x1 = y1 = Fraction(0)\n    out = []\n    for v in xs:\n        y = a * v + x1 - a * x1\n        x1, y1 = v, y\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 a=1/2', ['1/2', [1, 0, 0, 0]], ['1/2', '3/4', '-3/8', '3/16']], ['regression: negative coefficient', ['-1/3', [2, -1, 0]], ['-2/3', '19/9', '-8/27']], ['regression: random allpass 0', ['1/4', [1, 2, 2, 4]], ['1/4', '23/16', '137/64', '631/256']], ['control: unstable', ['1', [1]], 'unstable'], ['control: a zero is delay', ['0', [1, 2, 3]], ['0', '1', '2']], ['control: random allpass 27', ['-2/3', [0, 4]], ['0', '-8/3']], ['regression: random allpass 1', ['1/2', [0, -1, -1, 0]], ['0', '-1/2', '-5/4', '-3/8']]], [['regression: random allpass 1', ['1/2', [0, -1, -1, 0]], ['0', '-1/2', '-5/4', '-3/8']], ['regression: random allpass 2', ['-1/2', [-2, -1, -3, 3]], ['1', '-1', '0', '-9/2']], ['regression: random allpass 0', ['1/4', [1, 2, 2, 4]], ['1/4', '23/16', '137/64', '631/256']], ['control: a zero is delay', ['0', [1, 2, 3]], ['0', '1', '2']], ['control: random allpass 27', ['-2/3', [0, 4]], ['0', '-8/3']], ['control: unstable', ['1', [1]], 'unstable'], ['regression: random allpass 3', ['3/5', [1, -1, 0, 4, 1, 4]], ['3/5', '1/25', '-128/125', '1884/625', '8723/3125', '26956/15625']]], [['regression: random allpass 4', ['1/2', [4, 2, -3, 0, 3, -3]], ['2', '4', '-3/2', '-9/4', '21/8', '3/16']], ['regression: random allpass 5', ['-1/2', [3, 4, -2, 1, -1]], ['-3/2', '1/4', '41/8', '1/16', '49/32']], ['regression: random allpass 2', ['-1/2', [-2, -1, -3, 3]], ['1', '-1', '0', '-9/2']], ['control: random allpass 27', ['-2/3', [0, 4]], ['0', '-8/3']], ['control: unstable', ['1', [1]], 'unstable'], ['control: a zero is delay', ['0', [1, 2, 3]], ['0', '1', '2']], ['regression: random allpass 1', ['1/2', [0, -1, -1, 0]], ['0', '-1/2', '-5/4', '-3/8']]], [['regression: random allpass 7', ['-2/3', [4, 3, 3, -3]], ['-8/3', '2/9', '31/27', '467/81']], ['regression: random allpass 8', ['3/5', [4, -2, -2]], ['12/5', '34/25', '-502/125']], ['regression: random allpass 4', ['1/2', [4, 2, -3, 0, 3, -3]], ['2', '4', '-3/2', '-9/4', '21/8', '3/16']], ['control: unstable', ['1', [1]], 'unstable'], ['control: a zero is delay', ['0', [1, 2, 3]], ['0', '1', '2']], ['control: random allpass 27', ['-2/3', [0, 4]], ['0', '-8/3']], ['regression: random allpass 2', ['-1/2', [-2, -1, -3, 3]], ['1', '-1', '0', '-9/2']]], [['regression: random allpass 10', ['1/4', [-3, 4, 3, 2, -3]], ['-3/4', '-29/16', '333/64', '563/256', '717/1024']], ['regression: random allpass 11', ['-2/3', [3, 1, 4, 0]], ['-2', '1', '-1', '10/3']], ['regression: random allpass 6', ['-1/2', [-3, 3, 3, 2]], ['3/2', '-15/4', '-3/8', '29/16']], ['control: a zero is delay', ['0', [1, 2, 3]], ['0', '1', '2']], ['control: random allpass 27', ['-2/3', [0, 4]], ['0', '-8/3']], ['control: unstable', ['1', [1]], 'unstable'], ['regression: random allpass 3', ['3/5', [1, -1, 0, 4, 1, 4]], ['3/5', '1/25', '-128/125', '1884/625', '8723/3125', '26956/15625']]]]\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":"c3a32ea205bf39d8341008610603cfc086cdecacbe82775752fa63ddc6e7ab1f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    a, xs = Fraction(x[0]), x[1]\n    if abs(a) >= 1:\n        return 'unstable'\n    x1 = y1 = Fraction(0)\n    out = []\n    for v in xs:\n        y = a * v + x1 + a * y1\n        x1, y1 = v, y\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 a=1/2', ['1/2', [1, 0, 0, 0]], ['1/2', '3/4', '-3/8', '3/16']], ['regression: negative coefficient', ['-1/3', [2, -1, 0]], ['-2/3', '19/9', '-8/27']], ['regression: random allpass 0', ['1/4', [1, 2, 2, 4]], ['1/4', '23/16', '137/64', '631/256']], ['control: unstable', ['1', [1]], 'unstable'], ['control: a zero is delay', ['0', [1, 2, 3]], ['0', '1', '2']], ['control: random allpass 27', ['-2/3', [0, 4]], ['0', '-8/3']], ['regression: random allpass 1', ['1/2', [0, -1, -1, 0]], ['0', '-1/2', '-5/4', '-3/8']]], [['regression: random allpass 1', ['1/2', [0, -1, -1, 0]], ['0', '-1/2', '-5/4', '-3/8']], ['regression: random allpass 2', ['-1/2', [-2, -1, -3, 3]], ['1', '-1', '0', '-9/2']], ['regression: random allpass 0', ['1/4', [1, 2, 2, 4]], ['1/4', '23/16', '137/64', '631/256']], ['control: a zero is delay', ['0', [1, 2, 3]], ['0', '1', '2']], ['control: random allpass 27', ['-2/3', [0, 4]], ['0', '-8/3']], ['control: unstable', ['1', [1]], 'unstable'], ['regression: random allpass 3', ['3/5', [1, -1, 0, 4, 1, 4]], ['3/5', '1/25', '-128/125', '1884/625', '8723/3125', '26956/15625']]], [['regression: random allpass 4', ['1/2', [4, 2, -3, 0, 3, -3]], ['2', '4', '-3/2', '-9/4', '21/8', '3/16']], ['regression: random allpass 5', ['-1/2', [3, 4, -2, 1, -1]], ['-3/2', '1/4', '41/8', '1/16', '49/32']], ['regression: random allpass 2', ['-1/2', [-2, -1, -3, 3]], ['1', '-1', '0', '-9/2']], ['control: random allpass 27', ['-2/3', [0, 4]], ['0', '-8/3']], ['control: unstable', ['1', [1]], 'unstable'], ['control: a zero is delay', ['0', [1, 2, 3]], ['0', '1', '2']], ['regression: random allpass 1', ['1/2', [0, -1, -1, 0]], ['0', '-1/2', '-5/4', '-3/8']]], [['regression: random allpass 7', ['-2/3', [4, 3, 3, -3]], ['-8/3', '2/9', '31/27', '467/81']], ['regression: random allpass 8', ['3/5', [4, -2, -2]], ['12/5', '34/25', '-502/125']], ['regression: random allpass 4', ['1/2', [4, 2, -3, 0, 3, -3]], ['2', '4', '-3/2', '-9/4', '21/8', '3/16']], ['control: unstable', ['1', [1]], 'unstable'], ['control: a zero is delay', ['0', [1, 2, 3]], ['0', '1', '2']], ['control: random allpass 27', ['-2/3', [0, 4]], ['0', '-8/3']], ['regression: random allpass 2', ['-1/2', [-2, -1, -3, 3]], ['1', '-1', '0', '-9/2']]], [['regression: random allpass 10', ['1/4', [-3, 4, 3, 2, -3]], ['-3/4', '-29/16', '333/64', '563/256', '717/1024']], ['regression: random allpass 11', ['-2/3', [3, 1, 4, 0]], ['-2', '1', '-1', '10/3']], ['regression: random allpass 6', ['-1/2', [-3, 3, 3, 2]], ['3/2', '-15/4', '-3/8', '29/16']], ['control: a zero is delay', ['0', [1, 2, 3]], ['0', '1', '2']], ['control: random allpass 27', ['-2/3', [0, 4]], ['0', '-8/3']], ['control: unstable', ['1', [1]], 'unstable'], ['regression: random allpass 3', ['3/5', [1, -1, 0, 4, 1, 4]], ['3/5', '1/25', '-128/125', '1884/625', '8723/3125', '26956/15625']]]]\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-first-order-allpass-allpass-feedback-sign","generated_at":"2026-09-29T14:51:39.576820+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Allpass sections build phase equalizers and fractional delays; any coefficient slip breaks the unit-magnitude property.","root_cause":"The recursion uses + a y[n-1].","sha256":"2ff081c50ca153d9529af3be1fb64ba78163b8d7e1d13bb5939b5d4003c2dec6","title":"Allpass adds the feedback term · 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.197,"exit_code":1,"observations":[{"actual":["1/2","1/2","0","0"],"check":"regression: impulse a=1/2","expected":["1/2","3/4","-3/8","3/16"],"passed":false},{"actual":["-2/3","3","-4/3"],"check":"regression: negative coefficient","expected":["-2/3","19/9","-8/27"],"passed":false},{"actual":["1/4","5/4","2","5/2"],"check":"regression: random allpass 0","expected":["1/4","23/16","137/64","631/256"],"passed":false},{"actual":"unstable","check":"control: unstable","expected":"unstable","passed":true},{"actual":["0","1","2"],"check":"control: a zero is delay","expected":["0","1","2"],"passed":true},{"actual":["0","-8/3"],"check":"control: random allpass 27","expected":["0","-8/3"],"passed":true},{"actual":["0","-1/2","-1","-1/2"],"check":"regression: random allpass 1","expected":["0","-1/2","-5/4","-3/8"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: impulse a=1/2\", \"actual\": [\"1/2\", \"1/2\", \"0\", \"0\"], \"expected\": [\"1/2\", \"3/4\", \"-3/8\", \"3/16\"], \"passed\": false}, {\"check\": \"regression: negative coefficient\", \"actual\": [\"-2/3\", \"3\", \"-4/3\"], \"expected\": [\"-2/3\", \"19/9\", \"-8/27\"], \"passed\": false}, {\"check\": \"regression: random allpass 0\", \"actual\": [\"1/4\", \"5/4\", \"2\", \"5/2\"], \"expected\": [\"1/4\", \"23/16\", \"137/64\", \"631/256\"], \"passed\": false}, {\"check\": \"control: unstable\", \"actual\": \"unstable\", \"expected\": \"unstable\", \"passed\": true}, {\"check\": \"control: a zero is delay\", \"actual\": [\"0\", \"1\", \"2\"], \"expected\": [\"0\", \"1\", \"2\"], \"passed\": true}, {\"check\": \"control: random allpass 27\", \"actual\": [\"0\", \"-8/3\"], \"expected\": [\"0\", \"-8/3\"], \"passed\": true}, {\"check\": \"regression: random allpass 1\", \"actual\": [\"0\", \"-1/2\", \"-1\", \"-1/2\"], \"expected\": [\"0\", \"-1/2\", \"-5/4\", \"-3/8\"], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.644,"exit_code":1,"observations":[{"actual":["1/2","5/4","5/8","5/16"],"check":"regression: impulse a=1/2","expected":["1/2","3/4","-3/8","3/16"],"passed":false},{"actual":["-2/3","23/9","-50/27"],"check":"regression: negative coefficient","expected":["-2/3","19/9","-8/27"],"passed":false},{"actual":["1/4","25/16","185/64","953/256"],"check":"regression: random allpass 0","expected":["1/4","23/16","137/64","631/256"],"passed":false},{"actual":"unstable","check":"control: unstable","expected":"unstable","passed":true},{"actual":["0","1","2"],"check":"control: a zero is delay","expected":["0","1","2"],"passed":true},{"actual":["0","-8/3"],"check":"control: random allpass 27","expected":["0","-8/3"],"passed":true},{"actual":["0","-1/2","-7/4","-15/8"],"check":"regression: random allpass 1","expected":["0","-1/2","-5/4","-3/8"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: impulse a=1/2\", \"actual\": [\"1/2\", \"5/4\", \"5/8\", \"5/16\"], \"expected\": [\"1/2\", \"3/4\", \"-3/8\", \"3/16\"], \"passed\": false}, {\"check\": \"regression: negative coefficient\", \"actual\": [\"-2/3\", \"23/9\", \"-50/27\"], \"expected\": [\"-2/3\", \"19/9\", \"-8/27\"], \"passed\": false}, {\"check\": \"regression: random allpass 0\", \"actual\": [\"1/4\", \"25/16\", \"185/64\", \"953/256\"], \"expected\": [\"1/4\", \"23/16\", \"137/64\", \"631/256\"], \"passed\": false}, {\"check\": \"control: unstable\", \"actual\": \"unstable\", \"expected\": \"unstable\", \"passed\": true}, {\"check\": \"control: a zero is delay\", \"actual\": [\"0\", \"1\", \"2\"], \"expected\": [\"0\", \"1\", \"2\"], \"passed\": true}, {\"check\": \"control: random allpass 27\", \"actual\": [\"0\", \"-8/3\"], \"expected\": [\"0\", \"-8/3\"], \"passed\": true}, {\"check\": \"regression: random allpass 1\", \"actual\": [\"0\", \"-1/2\", \"-7/4\", \"-15/8\"], \"expected\": [\"0\", \"-1/2\", \"-5/4\", \"-3/8\"], \"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."}}