Skip to content

fix(sensing): reduce empty-room adaptive false positives#527

Closed
davestanyer wants to merge 1 commit into
ruvnet:mainfrom
davestanyer:fix/empty-room-adaptive-false-positive
Closed

fix(sensing): reduce empty-room adaptive false positives#527
davestanyer wants to merge 1 commit into
ruvnet:mainfrom
davestanyer:fix/empty-room-adaptive-false-positive

Conversation

@davestanyer
Copy link
Copy Markdown

Summary

  • Expand adaptive training samples from RuView multi-node JSONL into per-node sequences so runtime per-node classification matches training data shape.
  • Preserve temporal window boundaries by grouping training windows by recording/node sequence key instead of concatenating unrelated nodes or captures.
  • Add an absence consensus gate: when adaptive motion says present but independent multistatic/person-count fusion remains zero, clamp the fused output and active node API view to absent / person_count: 0.

Why

In the current empty-room acceptance case, all six live ESP32 CSI nodes could report present_moving while the independent person-count path reported zero people. That creates an empty-room false positive. This PR treats that contradiction as absence unless the independent person-count/fusion path agrees there is a person.

Related: #518, #521

Local validation

  • cargo fmt --package wifi-densepose-sensing-server
  • cargo test -p wifi-densepose-sensing-server --bin sensing-server adaptive_classifier::tests -- --nocapture — 4 passed
  • cargo test -p wifi-densepose-sensing-server --bin sensing-server -- --nocapture — 74 passed
  • cargo test -p wifi-densepose-sensing-server — passed
  • docker compose -f docker/docker-compose.yml up -d --build sensing-server — rebuilt/restarted
  • Live empty-room check after rebuild: final /api/v1/sensing/latest reported motion_level: absent, presence: false, estimated_persons: null; final /api/v1/nodes sample showed all six active nodes as absent with person_count: 0.

Notes

This is intentionally focused on sensing-server adaptive/runtime behavior. It does not include local recordings, generated model files, firmware binaries, or unrelated local worktree changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant