Source: https://guthlabs.ai/docs/instruments/filter-designer-active-sallen-key-2nd-order/mechanism/

instrument mechanism / verified-clean

# Filter Designer — Active Sallen-Key (2nd order) mechanism

The inspectable method record for Filter Designer — Active Sallen-Key (2nd order), kept separate from implementation and qualification.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Model scope

The spec is not uniquely implementable as written. To support the advertised inputs, specify the exact Sallen-Key topology, the complete Q equation, whether gain K is fixed or adjustable, and a component-selection policy such as fixed C1/C2 or a preferred-value search. If the intended product is only the equal-component unity-gain approximation, restrict or clearly display Q=0.5 rather than accepting arbitrary Q.

- The cutoff-frequency equation fc=1/(2π√(R1R2C1C2)) is standard, but it is insufficient to determine four component values from only fc and Q; an additional component-selection rule or fixed capacitor/resistor value is required.

- The Q relation is unspecified. For a common non-inverting Sallen-Key topology, Q depends on the passband gain K and component ratios. With equal components R1=R2=R and C1=C2=C, Q=1/(3-K). Unity gain K=1 therefore permits only Q=0.5.

- The stated honest label says 'unity-gain ... equal-component design approximation', but the instrument inputs allow arbitrary Q. Arbitrary Q cannot be produced by this equal-component unity-gain design.

- LP and HP Sallen-Key equations are not fully specified. The equal-component cutoff calculation is the same for LP and HP, but the component placement/topology and Q equation should be stated explicitly for each type.

- No capacitor-selection rule, preferred-value rule, resistor-range constraint, gain-setting rule, or component-tolerance rule is provided, so the output values are not uniquely defined.

## Units and conventions

- fc is in hertz (Hz), R1 and R2 are in ohms (Ω), and C1 and C2 are in farads (F).

- The test vectors use the explicit conventional design assumption C1=C2=10 nF or 100 pF, R1=R2=1/(2πfcC), unity gain K=1, and therefore Q=0.5.

- The same equal-component values give the same ideal fc and Q for the corresponding LP and HP Sallen-Key topologies; the schematic topology still must be specified.

- Numerical component values are ideal mathematical values, not rounded E-series component values.

## Inspectable vector

One of 4 source-bound review vectors:

````
{
  "inputs": {
    "fc_hz": 1000,
    "Q": 0.5,
    "filter_type": "LP",
    "design_assumption": "C1=C2=10 nF; unity gain K=1; R1=R2"
  },
  "expected_outputs": {
    "R1_ohm": 15915.494309,
    "R2_ohm": 15915.494309,
    "C1_F": 1e-8,
    "C2_F": 1e-8,
    "achieved_fc_hz": 1000,
    "achieved_Q": 0.5
  },
  "working": "Set C1=C2=C=10 nF=10×10^-9 F and R1=R2=R. Then fc=1/(2πRC), so R=1/(2πfcC)=1/(2×3.141592653589793×1000×10×10^-9)=1/(0.0000628318530718)=15915.494309 Ω. For unity gain K=1, Q=1/(3-K)=1/(3-1)=0.5. Therefore R1=R2=15915.494309 Ω and C1=C2=10 nF."
}
````

## Failure boundary

**BREAK_CLAIMED** · SELF_FLAGGED

The advertised input Q is not independently realizable in the stated unity-gain equal-component approximation: that topology fixes Q at 0.5, so any requested Q other than 0.5 cannot be met without changing component ratios or adding gain. The engine also reaches an undefined division at fc=0 and can misdesign by a factor of 2π if Hz versus rad/s is not explicit.

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/filter-designer-active-sallen-key-2nd-order/>)[03**Implementation**](<https://guthlabs.ai/docs/instruments/filter-designer-active-sallen-key-2nd-order/implementation/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/filter-designer-active-sallen-key-2nd-order/qualification/>)

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json`

- `evidence-tranche6/tranche6-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
