From 598a4b2f6b6462b66c5fa5a71e55ec175f402af6 Mon Sep 17 00:00:00 2001 From: arsen Date: Sun, 17 May 2026 14:13:57 +0700 Subject: [PATCH] feat(adr-105): n_aps_used in enhanced_motion/enhanced_breathing Uniform u8 field on both enhanced_* JSON objects so downstream consumers can decide whether to trust a multi-AP enhancement that, on a single sensor, may have run with only 1 AP. Mirrors the existing contributing_bssids / bssid_count counts under a single name across motion and breathing. Co-Authored-By: claude-flow --- v2/crates/wifi-densepose-sensing-server/src/main.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/v2/crates/wifi-densepose-sensing-server/src/main.rs b/v2/crates/wifi-densepose-sensing-server/src/main.rs index 44926400..5d4fdf93 100644 --- a/v2/crates/wifi-densepose-sensing-server/src/main.rs +++ b/v2/crates/wifi-densepose-sensing-server/src/main.rs @@ -2716,10 +2716,15 @@ async fn windows_wifi_task(state: SharedState, tick_ms: u64) { drop(s_write_pre); // ── Step 5: Build enhanced fields from pipeline result ─────── + // ADR-105: n_aps_used is a uniform u8 indicator across both + // enhanced_motion and enhanced_breathing so downstream consumers + // can decide whether to trust a multi-AP enhancement that, on a + // single sensor, may have run with only 1 contributing AP. let enhanced_motion = Some(serde_json::json!({ "score": enhanced.motion.score, "level": format!("{:?}", enhanced.motion.level), "contributing_bssids": enhanced.motion.contributing_bssids, + "n_aps_used": enhanced.motion.contributing_bssids.min(u8::MAX as usize) as u8, })); let enhanced_breathing = enhanced.breathing.as_ref().map(|b| { @@ -2727,6 +2732,7 @@ async fn windows_wifi_task(state: SharedState, tick_ms: u64) { "rate_bpm": b.rate_bpm, "confidence": b.confidence, "bssid_count": b.bssid_count, + "n_aps_used": b.bssid_count.min(u8::MAX as usize) as u8, }) });