FA-91756 / Digital signal filters / Open access
DC blocker starts from a zero previous input · case 01
A constant input produces a decaying spike equal to the offset at start-up.
ROOT CAUSE
x[-1] is initialized to 0 instead of x[0].
VERIFIED REPAIR
Warm-start x[-1] = x[0].
Unsuccessful approach: The attempted repair warm-starts both x[-1] and y[-1] to x[0], injecting the offset through the feedback path.
Case contract
Input [R, samples]: y[n] = x[n] - x[n-1] + R y[n-1] with 0 <= R < 1 ("bad-pole"), warm-started so x[-1] = x[0] and y[-1] = 0 (no start-up step). Return exact fraction strings.
Why this case matters
DC blockers remove offsets before further processing; a cold start injects a large transient.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(x):
R, xs = Fraction(x[0]), x[1]
if not 0 <= R < 1:
return 'bad-pole'
if not xs:
return []
xp = 0
yp = Fraction(0)
out = []
for v in xs:
y = v - xp + R * yp
xp, yp = v, y
out.append(str(y))
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: constant input warm start', ['9/10', [5, 5, 5]], ['0', '0', '0']], ['regression: pole zero', ['0', [1, 3, 2]], ['0', '2', '-1']], ['regression: random dc blocker 0', ['3/4', [-2, -1, 1, -3]], ['0', '1', '11/4', '-31/16']], ['control: step', ['1/2', [0, 4, 4, 4]], ['0', '4', '2', '1']], ['control: bad pole', ['1', [1]], 'bad-pole'], ['control: empty', ['1/2', []], []], ['control: random dc blocker 7', ['1/2', [0, 6, -2, -1, 2, 0]], ['0', '6', '-5', '-3/2', '9/4', '-7/8']]], [['regression: random dc blocker 1', ['3/4', [-2, 2]], ['0', '4']], ['regression: random dc blocker 2', ['1/4', [-3, 0, 1, -3]], ['0', '3', '7/4', '-57/16']], ['regression: random dc blocker 3', ['9/10', [1, 4, -3, -3, 5, -2]], ['0', '3', '-43/10', '-387/100', '4517/1000', '-29347/10000']], ['control: random dc blocker 18', ['3/4', [0, 5, 4]], ['0', '5', '11/4']], ['control: random dc blocker 25', ['3/4', [0, 4, 6, -2, 1, -3]], ['0', '4', '5', '-17/4', '-3/16', '-265/64']], ['control: random dc blocker 32', ['9/10', [0, 0]], ['0', '0']], ['control: step', ['1/2', [0, 4, 4, 4]], ['0', '4', '2', '1']]], [['regression: random dc blocker 4', ['3/4', [1, 2, 6, 0, -2]], ['0', '1', '19/4', '-39/16', '-245/64']], ['regression: random dc blocker 5', ['9/10', [2, 5]], ['0', '3']], ['regression: random dc blocker 3', ['9/10', [1, 4, -3, -3, 5, -2]], ['0', '3', '-43/10', '-387/100', '4517/1000', '-29347/10000']], ['control: bad pole', ['1', [1]], 'bad-pole'], ['control: empty', ['1/2', []], []], ['control: random dc blocker 7', ['1/2', [0, 6, -2, -1, 2, 0]], ['0', '6', '-5', '-3/2', '9/4', '-7/8']], ['control: random dc blocker 18', ['3/4', [0, 5, 4]], ['0', '5', '11/4']]], [['regression: random dc blocker 8', ['9/10', [-3, -3, 2, -2, 2, -2]], ['0', '0', '5', '1/2', '89/20', '1/200']], ['regression: random dc blocker 9', ['9/10', [3, 4, -2, 3]], ['0', '1', '-51/10', '41/100']], ['regression: random dc blocker 5', ['9/10', [2, 5]], ['0', '3']], ['control: random dc blocker 25', ['3/4', [0, 4, 6, -2, 1, -3]], ['0', '4', '5', '-17/4', '-3/16', '-265/64']], ['control: random dc blocker 32', ['9/10', [0, 0]], ['0', '0']], ['control: step', ['1/2', [0, 4, 4, 4]], ['0', '4', '2', '1']], ['control: bad pole', ['1', [1]], 'bad-pole']], [['regression: random dc blocker 11', ['1/2', [-1, 0, 6]], ['0', '1', '13/2']], ['regression: random dc blocker 12', ['3/4', [-3, 0, 6]], ['0', '3', '33/4']], ['regression: random dc blocker 8', ['9/10', [-3, -3, 2, -2, 2, -2]], ['0', '0', '5', '1/2', '89/20', '1/200']], ['control: empty', ['1/2', []], []], ['control: random dc blocker 7', ['1/2', [0, 6, -2, -1, 2, 0]], ['0', '6', '-5', '-3/2', '9/4', '-7/8']], ['control: random dc blocker 18', ['3/4', [0, 5, 4]], ['0', '5', '11/4']], ['control: random dc blocker 25', ['3/4', [0, 4, 6, -2, 1, -3]], ['0', '4', '5', '-17/4', '-3/16', '-265/64']]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: constant input warm start | ['5', '9/2', '81/20'] | ['0', '0', '0'] | Failed |
| regression: pole zero | ['1', '2', '-1'] | ['0', '2', '-1'] | Failed |
| regression: random dc blocker 0 | ['-2', '-1/2', '13/8', '-89/32'] | ['0', '1', '11/4', '-31/16'] | Failed |
| control: step | ['0', '4', '2', '1'] | ['0', '4', '2', '1'] | Passed |
| control: bad pole | bad-pole | bad-pole | Passed |
| control: empty | [] | [] | Passed |
| control: random dc blocker 7 | ['0', '6', '-5', '-3/2', '9/4', '-7/8'] | ['0', '6', '-5', '-3/2', '9/4', '-7/8'] | Passed |
SHA-256 / 3183eeb04210b60ebaff82a881cdcfeebc5d5bb82d0aebe0ee9ac3e307e8931b
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(x):
R, xs = Fraction(x[0]), x[1]
if not 0 <= R < 1:
return 'bad-pole'
if not xs:
return []
xp = xs[0]
yp = Fraction(xs[0])
out = []
for v in xs:
y = v - xp + R * yp
xp, yp = v, y
out.append(str(y))
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: constant input warm start', ['9/10', [5, 5, 5]], ['0', '0', '0']], ['regression: pole zero', ['0', [1, 3, 2]], ['0', '2', '-1']], ['regression: random dc blocker 0', ['3/4', [-2, -1, 1, -3]], ['0', '1', '11/4', '-31/16']], ['control: step', ['1/2', [0, 4, 4, 4]], ['0', '4', '2', '1']], ['control: bad pole', ['1', [1]], 'bad-pole'], ['control: empty', ['1/2', []], []], ['control: random dc blocker 7', ['1/2', [0, 6, -2, -1, 2, 0]], ['0', '6', '-5', '-3/2', '9/4', '-7/8']]], [['regression: random dc blocker 1', ['3/4', [-2, 2]], ['0', '4']], ['regression: random dc blocker 2', ['1/4', [-3, 0, 1, -3]], ['0', '3', '7/4', '-57/16']], ['regression: random dc blocker 3', ['9/10', [1, 4, -3, -3, 5, -2]], ['0', '3', '-43/10', '-387/100', '4517/1000', '-29347/10000']], ['control: random dc blocker 18', ['3/4', [0, 5, 4]], ['0', '5', '11/4']], ['control: random dc blocker 25', ['3/4', [0, 4, 6, -2, 1, -3]], ['0', '4', '5', '-17/4', '-3/16', '-265/64']], ['control: random dc blocker 32', ['9/10', [0, 0]], ['0', '0']], ['control: step', ['1/2', [0, 4, 4, 4]], ['0', '4', '2', '1']]], [['regression: random dc blocker 4', ['3/4', [1, 2, 6, 0, -2]], ['0', '1', '19/4', '-39/16', '-245/64']], ['regression: random dc blocker 5', ['9/10', [2, 5]], ['0', '3']], ['regression: random dc blocker 3', ['9/10', [1, 4, -3, -3, 5, -2]], ['0', '3', '-43/10', '-387/100', '4517/1000', '-29347/10000']], ['control: bad pole', ['1', [1]], 'bad-pole'], ['control: empty', ['1/2', []], []], ['control: random dc blocker 7', ['1/2', [0, 6, -2, -1, 2, 0]], ['0', '6', '-5', '-3/2', '9/4', '-7/8']], ['control: random dc blocker 18', ['3/4', [0, 5, 4]], ['0', '5', '11/4']]], [['regression: random dc blocker 8', ['9/10', [-3, -3, 2, -2, 2, -2]], ['0', '0', '5', '1/2', '89/20', '1/200']], ['regression: random dc blocker 9', ['9/10', [3, 4, -2, 3]], ['0', '1', '-51/10', '41/100']], ['regression: random dc blocker 5', ['9/10', [2, 5]], ['0', '3']], ['control: random dc blocker 25', ['3/4', [0, 4, 6, -2, 1, -3]], ['0', '4', '5', '-17/4', '-3/16', '-265/64']], ['control: random dc blocker 32', ['9/10', [0, 0]], ['0', '0']], ['control: step', ['1/2', [0, 4, 4, 4]], ['0', '4', '2', '1']], ['control: bad pole', ['1', [1]], 'bad-pole']], [['regression: random dc blocker 11', ['1/2', [-1, 0, 6]], ['0', '1', '13/2']], ['regression: random dc blocker 12', ['3/4', [-3, 0, 6]], ['0', '3', '33/4']], ['regression: random dc blocker 8', ['9/10', [-3, -3, 2, -2, 2, -2]], ['0', '0', '5', '1/2', '89/20', '1/200']], ['control: empty', ['1/2', []], []], ['control: random dc blocker 7', ['1/2', [0, 6, -2, -1, 2, 0]], ['0', '6', '-5', '-3/2', '9/4', '-7/8']], ['control: random dc blocker 18', ['3/4', [0, 5, 4]], ['0', '5', '11/4']], ['control: random dc blocker 25', ['3/4', [0, 4, 6, -2, 1, -3]], ['0', '4', '5', '-17/4', '-3/16', '-265/64']]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: constant input warm start | ['9/2', '81/20', '729/200'] | ['0', '0', '0'] | Failed |
| regression: pole zero | ['0', '2', '-1'] | ['0', '2', '-1'] | Passed |
| regression: random dc blocker 0 | ['-3/2', '-1/8', '61/32', '-329/128'] | ['0', '1', '11/4', '-31/16'] | Failed |
| control: step | ['0', '4', '2', '1'] | ['0', '4', '2', '1'] | Passed |
| control: bad pole | bad-pole | bad-pole | Passed |
| control: empty | [] | [] | Passed |
| control: random dc blocker 7 | ['0', '6', '-5', '-3/2', '9/4', '-7/8'] | ['0', '6', '-5', '-3/2', '9/4', '-7/8'] | Passed |
SHA-256 / 6c0836148a2da4c59c904ece7c50194dd007bfcdaee1f6263a12bba830154bc6
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(x):
R, xs = Fraction(x[0]), x[1]
if not 0 <= R < 1:
return 'bad-pole'
if not xs:
return []
xp = xs[0]
yp = Fraction(0)
out = []
for v in xs:
y = v - xp + R * yp
xp, yp = v, y
out.append(str(y))
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: constant input warm start', ['9/10', [5, 5, 5]], ['0', '0', '0']], ['regression: pole zero', ['0', [1, 3, 2]], ['0', '2', '-1']], ['regression: random dc blocker 0', ['3/4', [-2, -1, 1, -3]], ['0', '1', '11/4', '-31/16']], ['control: step', ['1/2', [0, 4, 4, 4]], ['0', '4', '2', '1']], ['control: bad pole', ['1', [1]], 'bad-pole'], ['control: empty', ['1/2', []], []], ['control: random dc blocker 7', ['1/2', [0, 6, -2, -1, 2, 0]], ['0', '6', '-5', '-3/2', '9/4', '-7/8']]], [['regression: random dc blocker 1', ['3/4', [-2, 2]], ['0', '4']], ['regression: random dc blocker 2', ['1/4', [-3, 0, 1, -3]], ['0', '3', '7/4', '-57/16']], ['regression: random dc blocker 3', ['9/10', [1, 4, -3, -3, 5, -2]], ['0', '3', '-43/10', '-387/100', '4517/1000', '-29347/10000']], ['control: random dc blocker 18', ['3/4', [0, 5, 4]], ['0', '5', '11/4']], ['control: random dc blocker 25', ['3/4', [0, 4, 6, -2, 1, -3]], ['0', '4', '5', '-17/4', '-3/16', '-265/64']], ['control: random dc blocker 32', ['9/10', [0, 0]], ['0', '0']], ['control: step', ['1/2', [0, 4, 4, 4]], ['0', '4', '2', '1']]], [['regression: random dc blocker 4', ['3/4', [1, 2, 6, 0, -2]], ['0', '1', '19/4', '-39/16', '-245/64']], ['regression: random dc blocker 5', ['9/10', [2, 5]], ['0', '3']], ['regression: random dc blocker 3', ['9/10', [1, 4, -3, -3, 5, -2]], ['0', '3', '-43/10', '-387/100', '4517/1000', '-29347/10000']], ['control: bad pole', ['1', [1]], 'bad-pole'], ['control: empty', ['1/2', []], []], ['control: random dc blocker 7', ['1/2', [0, 6, -2, -1, 2, 0]], ['0', '6', '-5', '-3/2', '9/4', '-7/8']], ['control: random dc blocker 18', ['3/4', [0, 5, 4]], ['0', '5', '11/4']]], [['regression: random dc blocker 8', ['9/10', [-3, -3, 2, -2, 2, -2]], ['0', '0', '5', '1/2', '89/20', '1/200']], ['regression: random dc blocker 9', ['9/10', [3, 4, -2, 3]], ['0', '1', '-51/10', '41/100']], ['regression: random dc blocker 5', ['9/10', [2, 5]], ['0', '3']], ['control: random dc blocker 25', ['3/4', [0, 4, 6, -2, 1, -3]], ['0', '4', '5', '-17/4', '-3/16', '-265/64']], ['control: random dc blocker 32', ['9/10', [0, 0]], ['0', '0']], ['control: step', ['1/2', [0, 4, 4, 4]], ['0', '4', '2', '1']], ['control: bad pole', ['1', [1]], 'bad-pole']], [['regression: random dc blocker 11', ['1/2', [-1, 0, 6]], ['0', '1', '13/2']], ['regression: random dc blocker 12', ['3/4', [-3, 0, 6]], ['0', '3', '33/4']], ['regression: random dc blocker 8', ['9/10', [-3, -3, 2, -2, 2, -2]], ['0', '0', '5', '1/2', '89/20', '1/200']], ['control: empty', ['1/2', []], []], ['control: random dc blocker 7', ['1/2', [0, 6, -2, -1, 2, 0]], ['0', '6', '-5', '-3/2', '9/4', '-7/8']], ['control: random dc blocker 18', ['3/4', [0, 5, 4]], ['0', '5', '11/4']], ['control: random dc blocker 25', ['3/4', [0, 4, 6, -2, 1, -3]], ['0', '4', '5', '-17/4', '-3/16', '-265/64']]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: constant input warm start | ['0', '0', '0'] | ['0', '0', '0'] | Passed |
| regression: pole zero | ['0', '2', '-1'] | ['0', '2', '-1'] | Passed |
| regression: random dc blocker 0 | ['0', '1', '11/4', '-31/16'] | ['0', '1', '11/4', '-31/16'] | Passed |
| control: step | ['0', '4', '2', '1'] | ['0', '4', '2', '1'] | Passed |
| control: bad pole | bad-pole | bad-pole | Passed |
| control: empty | [] | [] | Passed |
| control: random dc blocker 7 | ['0', '6', '-5', '-3/2', '9/4', '-7/8'] | ['0', '6', '-5', '-3/2', '9/4', '-7/8'] | Passed |
SHA-256 / edf817a2b512b2b1601fd8f59f0dc7327db15a3fdec8e76fa5f0d23ad848bd3e
Verification & scope
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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:51:38.910503+00:00.
Case digest / 1af3e7172b56f0b87b63da1495d60a201a7521c76ccb537c68c2d90efe064da9