Ports Pace's NBVI = α·(σ/μ²) + (1-α)·(σ/μ) (α=0.5) into the
amp_presence_override classifier. Per node, accumulates a 30-second
ring of full amplitude vectors, every ~5 s ranks the subcarriers,
picks top-12 by lowest NBVI, then computes broadband mean and CV ONLY
on that subset instead of all 56 subcarriers.
Live impact on the operator's deployment (idle room, 2 pps ping):
node 1 CV: 5% -> 3.1% (-38 %)
node 2 CV: 7% -> 3.9% (-44 %)
Thresholds tightened proportionally to match the new baseline:
active: 30 % -> 22 %
present_moving: 15 % -> 10 %
This lets the detector catch subtler motion (e.g. waving while seated)
without raising the false-positive rate above what we had before.
Implemented entirely server-side — no firmware change, no second
flash cycle. Algorithm parameters in const block for easy retuning.