{"abstract":"The impulse response differs from the allpass kernel after the first sample.","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 stores y in both delay slots.","family":"w2-digital_signal_filters-first-order-allpass-allpass-state-assignment","id":"FA-91836","implementations":{"attempt":{"sha256":"a4bf0213fd26c7fe208093a2fd3eebb9cf9720e9d30411f7cc77cf9ee2c6add1","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 = 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: a zero is delay', ['0', [1, 2, 3]], ['0', '1', '2']], ['control: unstable', ['1', [1]], 'unstable'], ['control: random allpass 27', ['-2/3', [0, 4]], ['0', '-8/3']], ['regression: random allpass 0', ['1/4', [1, 2, 2, 4]], ['1/4', '23/16', '137/64', '631/256']], ['regression: random allpass 1', ['1/2', [0, -1, -1, 0]], ['0', '-1/2', '-5/4', '-3/8']]], [['regression: random allpass 0', ['1/4', [1, 2, 2, 4]], ['1/4', '23/16', '137/64', '631/256']], ['regression: random allpass 1', ['1/2', [0, -1, -1, 0]], ['0', '-1/2', '-5/4', '-3/8']], ['regression: a zero is delay', ['0', [1, 2, 3]], ['0', '1', '2']], ['control: unstable', ['1', [1]], 'unstable'], ['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 3', ['3/5', [1, -1, 0, 4, 1, 4]], ['3/5', '1/25', '-128/125', '1884/625', '8723/3125', '26956/15625']]], [['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 1', ['1/2', [0, -1, -1, 0]], ['0', '-1/2', '-5/4', '-3/8']], ['control: unstable', ['1', [1]], 'unstable'], ['control: random allpass 27', ['-2/3', [0, 4]], ['0', '-8/3']], ['regression: random allpass 0', ['1/4', [1, 2, 2, 4]], ['1/4', '23/16', '137/64', '631/256']], ['regression: random allpass 2', ['-1/2', [-2, -1, -3, 3]], ['1', '-1', '0', '-9/2']]], [['regression: random allpass 6', ['-1/2', [-3, 3, 3, 2]], ['3/2', '-15/4', '-3/8', '29/16']], ['regression: random allpass 7', ['-2/3', [4, 3, 3, -3]], ['-8/3', '2/9', '31/27', '467/81']], ['regression: random allpass 3', ['3/5', [1, -1, 0, 4, 1, 4]], ['3/5', '1/25', '-128/125', '1884/625', '8723/3125', '26956/15625']], ['control: unstable', ['1', [1]], 'unstable'], ['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 2', ['-1/2', [-2, -1, -3, 3]], ['1', '-1', '0', '-9/2']]], [['regression: random allpass 9', ['1/4', [1, -3, 3, 2, -1, 4]], ['1/4', '3/16', '-147/64', '1043/256', '749/1024', '-749/4096']], ['regression: random allpass 10', ['1/4', [-3, 4, 3, 2, -3]], ['-3/4', '-29/16', '333/64', '563/256', '717/1024']], ['regression: random allpass 5', ['-1/2', [3, 4, -2, 1, -1]], ['-3/2', '1/4', '41/8', '1/16', '49/32']], ['control: unstable', ['1', [1]], 'unstable'], ['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 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":"a2a99e5da55fb34f4d75c7c2d57a06ea21a7de990c360f8d412e132bac927de6","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 = y, v\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: a zero is delay', ['0', [1, 2, 3]], ['0', '1', '2']], ['control: unstable', ['1', [1]], 'unstable'], ['control: random allpass 27', ['-2/3', [0, 4]], ['0', '-8/3']], ['regression: random allpass 0', ['1/4', [1, 2, 2, 4]], ['1/4', '23/16', '137/64', '631/256']], ['regression: random allpass 1', ['1/2', [0, -1, -1, 0]], ['0', '-1/2', '-5/4', '-3/8']]], [['regression: random allpass 0', ['1/4', [1, 2, 2, 4]], ['1/4', '23/16', '137/64', '631/256']], ['regression: random allpass 1', ['1/2', [0, -1, -1, 0]], ['0', '-1/2', '-5/4', '-3/8']], ['regression: a zero is delay', ['0', [1, 2, 3]], ['0', '1', '2']], ['control: unstable', ['1', [1]], 'unstable'], ['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 3', ['3/5', [1, -1, 0, 4, 1, 4]], ['3/5', '1/25', '-128/125', '1884/625', '8723/3125', '26956/15625']]], [['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 1', ['1/2', [0, -1, -1, 0]], ['0', '-1/2', '-5/4', '-3/8']], ['control: unstable', ['1', [1]], 'unstable'], ['control: random allpass 27', ['-2/3', [0, 4]], ['0', '-8/3']], ['regression: random allpass 0', ['1/4', [1, 2, 2, 4]], ['1/4', '23/16', '137/64', '631/256']], ['regression: random allpass 2', ['-1/2', [-2, -1, -3, 3]], ['1', '-1', '0', '-9/2']]], [['regression: random allpass 6', ['-1/2', [-3, 3, 3, 2]], ['3/2', '-15/4', '-3/8', '29/16']], ['regression: random allpass 7', ['-2/3', [4, 3, 3, -3]], ['-8/3', '2/9', '31/27', '467/81']], ['regression: random allpass 3', ['3/5', [1, -1, 0, 4, 1, 4]], ['3/5', '1/25', '-128/125', '1884/625', '8723/3125', '26956/15625']], ['control: unstable', ['1', [1]], 'unstable'], ['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 2', ['-1/2', [-2, -1, -3, 3]], ['1', '-1', '0', '-9/2']]], [['regression: random allpass 9', ['1/4', [1, -3, 3, 2, -1, 4]], ['1/4', '3/16', '-147/64', '1043/256', '749/1024', '-749/4096']], ['regression: random allpass 10', ['1/4', [-3, 4, 3, 2, -3]], ['-3/4', '-29/16', '333/64', '563/256', '717/1024']], ['regression: random allpass 5', ['-1/2', [3, 4, -2, 1, -1]], ['-3/2', '1/4', '41/8', '1/16', '49/32']], ['control: unstable', ['1', [1]], 'unstable'], ['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 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-state-assignment","generated_at":"2026-09-29T14:51:39.625909+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 state update stores y in x[n-1] and x in y[n-1].","sha256":"c2f483971299e713a1028da969d0e84bc5f9d819e4a5a9d9362e787f82b98702","title":"Allpass swaps the input and output delay slots · 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.307,"exit_code":1,"observations":[{"actual":["1/2","1/4","1/8","1/16"],"check":"regression: impulse a=1/2","expected":["1/2","3/4","-3/8","3/16"],"passed":false},{"actual":["-2/3","-5/9","-20/27"],"check":"regression: negative coefficient","expected":["-2/3","19/9","-8/27"],"passed":false},{"actual":["0","0","0"],"check":"regression: a zero is delay","expected":["0","1","2"],"passed":false},{"actual":"unstable","check":"control: unstable","expected":"unstable","passed":true},{"actual":["0","-8/3"],"check":"control: random allpass 27","expected":["0","-8/3"],"passed":true},{"actual":["1/4","11/16","65/64","451/256"],"check":"regression: random allpass 0","expected":["1/4","23/16","137/64","631/256"],"passed":false},{"actual":["0","-1/2","-3/4","-3/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\", \"1/4\", \"1/8\", \"1/16\"], \"expected\": [\"1/2\", \"3/4\", \"-3/8\", \"3/16\"], \"passed\": false}, {\"check\": \"regression: negative coefficient\", \"actual\": [\"-2/3\", \"-5/9\", \"-20/27\"], \"expected\": [\"-2/3\", \"19/9\", \"-8/27\"], \"passed\": false}, {\"check\": \"regression: a zero is delay\", \"actual\": [\"0\", \"0\", \"0\"], \"expected\": [\"0\", \"1\", \"2\"], \"passed\": false}, {\"check\": \"control: unstable\", \"actual\": \"unstable\", \"expected\": \"unstable\", \"passed\": true}, {\"check\": \"control: random allpass 27\", \"actual\": [\"0\", \"-8/3\"], \"expected\": [\"0\", \"-8/3\"], \"passed\": true}, {\"check\": \"regression: random allpass 0\", \"actual\": [\"1/4\", \"11/16\", \"65/64\", \"451/256\"], \"expected\": [\"1/4\", \"23/16\", \"137/64\", \"631/256\"], \"passed\": false}, {\"check\": \"regression: random allpass 1\", \"actual\": [\"0\", \"-1/2\", \"-3/4\", \"-3/8\"], \"expected\": [\"0\", \"-1/2\", \"-5/4\", \"-3/8\"], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.784,"exit_code":1,"observations":[{"actual":["1/2","0","0","0"],"check":"regression: impulse a=1/2","expected":["1/2","3/4","-3/8","3/16"],"passed":false},{"actual":["-2/3","1/3","0"],"check":"regression: negative coefficient","expected":["-2/3","19/9","-8/27"],"passed":false},{"actual":["0","0","0"],"check":"regression: a zero is delay","expected":["0","1","2"],"passed":false},{"actual":"unstable","check":"control: unstable","expected":"unstable","passed":true},{"actual":["0","-8/3"],"check":"control: random allpass 27","expected":["0","-8/3"],"passed":true},{"actual":["1/4","1/2","1/2","1"],"check":"regression: random allpass 0","expected":["1/4","23/16","137/64","631/256"],"passed":false},{"actual":["0","-1/2","-1/2","0"],"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\", \"0\", \"0\", \"0\"], \"expected\": [\"1/2\", \"3/4\", \"-3/8\", \"3/16\"], \"passed\": false}, {\"check\": \"regression: negative coefficient\", \"actual\": [\"-2/3\", \"1/3\", \"0\"], \"expected\": [\"-2/3\", \"19/9\", \"-8/27\"], \"passed\": false}, {\"check\": \"regression: a zero is delay\", \"actual\": [\"0\", \"0\", \"0\"], \"expected\": [\"0\", \"1\", \"2\"], \"passed\": false}, {\"check\": \"control: unstable\", \"actual\": \"unstable\", \"expected\": \"unstable\", \"passed\": true}, {\"check\": \"control: random allpass 27\", \"actual\": [\"0\", \"-8/3\"], \"expected\": [\"0\", \"-8/3\"], \"passed\": true}, {\"check\": \"regression: random allpass 0\", \"actual\": [\"1/4\", \"1/2\", \"1/2\", \"1\"], \"expected\": [\"1/4\", \"23/16\", \"137/64\", \"631/256\"], \"passed\": false}, {\"check\": \"regression: random allpass 1\", \"actual\": [\"0\", \"-1/2\", \"-1/2\", \"0\"], \"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."}}