ruvnet / ruvnet/RuView

Calibration qualification can accept an always-absent model without an occupied sensitivity control

Open
#1,952 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Rust
Stars
94.4k
Forks
12.5k
Avg merge
21h 27m
Merged PRs (30d)
43

Description

A completed empty-room calibration can pass startup-baseline promotion while failing every known-occupied control. The promotion result therefore cannot establish occupancy qualification.

MEASURED on a Mac Catalyst app with its bundled arm64 sensing-server at dbf47886289b344fff8c399d5ff17c4cdf3b4da3 (PR #1936, based on #1903), four ESP32-C6 sources, 2026-09-16:

  • Empty capture finalized with 19 baseline eigenvalues, active 256-subcarrier grid, no missing contributors.
  • Learned residual threshold: 47.9984.
  • Bootstrap promotion: 12/12 samples empty; baseline stored on disk.
  • Subsequent operator-labelled phases: sitting 0/865 calibrated-present, walking 0/927, sitting 0/786. Raw heuristic reported presence; raw output is not ground truth.

The operator-labelled walking control falsifies sensitivity. A detector that always returns zero trivially satisfies an empty-only check. Disturbed-baseline threshold inflation is a plausible mechanism addressed separately by #1917; this issue concerns the missing qualification control regardless of the mechanism.

Important contract distinction: stored bootstrap models intentionally have negative-only authority. This is not a request to grant them positive presence or vitals authority. Keep bootstrap storage/background checks separate from a claim that the explicit field calibration is qualified for occupancy.

Suggested acceptance:

  1. An always-absent model fails occupancy qualification against a known-occupied, operator-labelled held-out phase.
  2. Pair sensitivity with a sufficiently long independent empty phase and report sample durations, false alarms and missed detections separately.
  3. Match the exact boot/session/model/binding identity and require fresh CSI from the radio actually scored; refuse cached/stale evidence.
  4. The Mac UI must distinguish stored bootstrap baseline from occupancy-qualified field calibration.
  5. Include real app/server contract fixtures; schema literals and mocked frames alone do not establish producer/consumer compatibility.

Related: #1917, #1936, #1940. No production/fleet accuracy claim is made from this installation.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the calibration qualification and bootstrap-promotion path across the sensing server and Mac Catalyst UI, then inspect the app/server contract fixtures and the related issues #1917, #1936, and #1940. Add an operator-labelled held-out occupied phase alongside an independent empty phase, verify fresh boot/session/model/binding identity, and confirm the UI distinguishes stored bootstrap baselines from occupancy-qualified calibration.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend-api-design, desktop, embedded-iot, testing
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.