Summary
The falcon-core test notch_reduces_rate_loop_noise_under_rotor_vibration (NOTCH-P01 closed-loop, v1.122) is a non-deterministic oracle and is now #[ignore]d. Enabling the RPM notch destabilizes the analytic-plant hover under moderate rotor-line vibration, chaotically and non-monotonically, and the flip is not kernel-specific. The robust NOTCH-P01 evidence (relay-notch frequency-domain suite: ≥20 dB attenuation, sweep-within-3 dB, <10° crossover phase, bit-exact bypass, line rejection) is unaffected and still passing.
Surfaced by the v1.125 f32-kernel work (a ≤2 ulp trig change flipped the test), but the kernel is exonerated — see the sweep.
Evidence (SimBackend hover, 250 Hz, rotor_vib = per-motor gyro line amplitude; final tilt, rad)
| vib |
libm off |
libm on |
f32-kernel off |
f32-kernel on |
| 0.2 |
0.10 |
0.56 |
0.10 |
0.055 |
| 0.3 |
0.09 |
0.10 |
0.10 |
2.32 |
| 0.4 |
0.80 |
1.06 |
0.09 |
1.62 |
| 0.5 |
0.00 |
0.10 |
0.09 |
0.78 |
| 0.6 |
3.14 |
0.45 |
0.00 |
0.07 |
| 0.8 |
0.00 |
0.00 |
0.09 |
1.89 |
Both kernels flip; libm flips notch-OFF at 0.4 and 0.6 (bold = tilt ≥ 0.25 rad, i.e. departed hover). The v1.122 pass at vib=0.8 (libm 0.00/0.00) was a lucky-stable point. Thrash at stable low injections shows the notch gives no motor-thrash reduction in this plant (notch-on ≈ notch-off, occasionally slightly worse) — the plant's LPF+ADRC already reject the line.
What has been ruled out
- Kernel accuracy: the f32 kernels conform to libm ≤2 ulp over |x|≤128 (4M-point sweep), pass totality + Pythagorean-identity; not the cause.
- Center-frequency chasing the thrashing eRPM (parametric excitation): tried a one-pole low-pass (12 Hz) on the tracked frequency — did NOT fix it. Mechanism is deeper.
The discriminating experiment (do this first)
A filter with the measured <10° crossover phase cannot destabilize its loop via steady-state response — yet it does. So the <10° unit test isn't capturing the real closed-loop effect. Run notch-on at CONSTANT RPM (static coefficients, no vibration) + a small attitude disturbance:
- stable → it's a transient / time-varying-coefficient (retune-per-tick) problem;
- unstable → the <10° phase figure understates the real margin (full 4-motor-bank stacking, or Direct-Form-1 state under continuous drive).
Either answer is a real result. "It's chaotic" is a description, not a root cause.
Do NOT
- Re-enable the test or lower
vib to green CI until root-caused.
- Correct/demote FV-FALCON-NOTCH-001 until the root-cause lands (its own two-commit traceability action).
Relates to #270 (gz hover limit-cycle — same fragility family). NOTCH-P01 closed-loop validation ultimately belongs on the real X500 airframe / a faithful gz vibration spectrum.
🤖 Generated with Claude Code
https://claude.ai/code/session_01HvusAXYbHLyv3uTzfBcMbG
Summary
The falcon-core test
notch_reduces_rate_loop_noise_under_rotor_vibration(NOTCH-P01 closed-loop, v1.122) is a non-deterministic oracle and is now#[ignore]d. Enabling the RPM notch destabilizes the analytic-plant hover under moderate rotor-line vibration, chaotically and non-monotonically, and the flip is not kernel-specific. The robust NOTCH-P01 evidence (relay-notch frequency-domain suite: ≥20 dB attenuation, sweep-within-3 dB, <10° crossover phase, bit-exact bypass, line rejection) is unaffected and still passing.Surfaced by the v1.125 f32-kernel work (a ≤2 ulp trig change flipped the test), but the kernel is exonerated — see the sweep.
Evidence (SimBackend hover, 250 Hz,
rotor_vib= per-motor gyro line amplitude; final tilt, rad)Both kernels flip; libm flips notch-OFF at 0.4 and 0.6 (bold = tilt ≥ 0.25 rad, i.e. departed hover). The v1.122 pass at vib=0.8 (libm 0.00/0.00) was a lucky-stable point. Thrash at stable low injections shows the notch gives no motor-thrash reduction in this plant (notch-on ≈ notch-off, occasionally slightly worse) — the plant's LPF+ADRC already reject the line.
What has been ruled out
The discriminating experiment (do this first)
A filter with the measured <10° crossover phase cannot destabilize its loop via steady-state response — yet it does. So the <10° unit test isn't capturing the real closed-loop effect. Run notch-on at CONSTANT RPM (static coefficients, no vibration) + a small attitude disturbance:
Either answer is a real result. "It's chaotic" is a description, not a root cause.
Do NOT
vibto green CI until root-caused.Relates to #270 (gz hover limit-cycle — same fragility family). NOTCH-P01 closed-loop validation ultimately belongs on the real X500 airframe / a faithful gz vibration spectrum.
🤖 Generated with Claude Code
https://claude.ai/code/session_01HvusAXYbHLyv3uTzfBcMbG