Automated release from CI pipeline
Changes:
docs(adr): ADR-103 — learned multi-person counter (SOTA path) (#693)
Motivated by #499 (multi-node double-skeletons) which PR #491 stopped
the bleeding on but didn't take to the WiFi-CSI literature's state of
the art. Designs a learned counter that replaces today's slot
heuristic + dedup_factor knob, reusing the primitives we've already
shipped this week:
- Candle / RTX 5080 training pipeline (proven yesterday, 2.1 s for
400 epochs on pose_v1.safetensors) - HF presence encoder as initialization (architectures compatible,
unlike the pose head case) - ruvector-mincut (Stoer-Wagner) for multi-node fusion upper-bound
- Cog packaging spec (ADR-100) + edge module registry (ADR-102)
- Paired-data pipeline (PR #641 streaming-safe align-ground-truth.js)
—n_personslabels come for free; no new data collection
campaign required to bootstrap.
Architecture:
per-node CSI [56×20] -> frozen HF encoder -> 128-dim embedding
> count head (softmax {0..7})
> confidence head (sigmoid)
N nodes' distributions -> confidence-weighted log-sum
-> Stoer-Wagner min-cut upper-bound clip
-> { count, confidence,
count_p95_low, count_p95_high,
per_node_breakdown }
Compares the proposal explicitly against WiCount / DeepCount /
CrossCount / HeadCount published numbers and is honest about the
hardware gap (their 3x3 MIMO research NICs vs our 1x1 SISO ESP32-S3).
v0.1.0 acceptance gates target >=80% within-+/-1 same-room and
=60% cross-room — modest on purpose; bounded by the same paired-
data scarcity #645 documents for pose. The framework is the
deliverable; the accuracy follows the data.
Includes:
- Architecture diagram in ascii
- Comparison table vs published WiFi-CSI counting SOTA
- Per-failure-mode mapping from #499 symptoms to how the
learned counter addresses each - v0.1.0 + v0.2.0 acceptance gates with measurable thresholds
- Repo layout for the new
v2/crates/cog-person-count/crate - Five-step migration plan from this ADR -> first GCS release
Status: Proposed. Implementation follows in the same incremental
pattern ADR-101 used: scaffold-cog PR -> train+publish PR ->
server-wiring PR.
Docker Image:
ghcr.io/ruvnet/RuView:962e0f4a34d17452d4fe2c6187628c0672e47cfc