ruvnet / ruvnet/RuView

ADR-117: Modernize the pip wifi-densepose library — Rust core via PyO3 + maturin, v2.0.0

Open
#785 14 comments 0 reactions 1 assignee View on GitHub

@ruvnet is already working on this.

Since May 24, 2026.

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

Description

What this issue tracks

This is the single tracking issue for ADR-117 — the v2.0.0 rewrite of the pip wifi-densepose package as a PyO3 + maturin compiled wheel that wraps the current Rust core in v2/crates/, replacing the 11.5-month-stale pure-Python wifi-densepose==1.1.0 (released 2025-06-07).

Background in plain language
  • We published wifi-densepose to PyPI in June 2025 as a pure-Python implementation
  • Since then the project has shifted to a Rust-first architecture in v2/crates/ (15 crates), with massive capability gains: SOTA signal processing (ADR-014), edge vital signs (ADR-021), AETHER contrastive embeddings (ADR-024), MERIDIAN cross-environment generalization (ADR-027), the ESP32-C6 firmware (ADR-110), and just-yesterday the Home Assistant + Matter integration with 10 inferred semantic primitives (ADR-115)
  • The pip library has none of that. A user who pip install wifi-densepose today gets a sensor abstraction that's effectively a museum piece
  • ADR-117 lays out the path to fix it: build the Rust core into a compiled extension module via PyO3, publish per-platform wheels via cibuildwheel with abi3-py310 (one binary covers Python 3.10–3.13), deprecate the 1.x line with a tombstone wheel, ship as v2.0.0
Strategic alignment

This work pairs with the just-merged ADR-115 to give RuView a plug-and-play Python entry point for the customer base that already lives in pip + Jupyter notebooks (data scientists, IoT prototypers, healthcare researchers). The HA + Matter integration shipped first because it had the higher user-onboarding leverage; the Python wheel is the second prong so the wider scripting community can build on top.

Phase ledger

Phase Scope ETA Status
P1 Scaffold — python/ workspace member, Cargo.toml, pyproject.toml, smoke tests 2026-05-31 in_progress
P2 Core type bindings — CsiFrame, Keypoint, PoseEstimate, .pyi stubs 2026-06-07 pending
P3 Vitals + signal DSP — 4-stage HR/BR pipeline, CsiProcessor, PhaseSanitizer, GIL-release on hot paths 2026-06-21 pending
P4 WS/MQTT client layer — pure-Python wifi_densepose[client] extra 2026-06-28 pending
P5 cibuildwheel + v2.0.0 PyPI publish — linux/macos/windows × abi3-py310, OIDC 2026-07-05 pending
P-tomb v1.99.0 tombstone wheel — pure-Python __init__.py raises ImportError with migration URL concurrent with P5 pending
P6+ Deferred — Matter integration helpers, additional crate bindings (AETHER, MERIDIAN, MAT) post-v2.0.0 pending

42-day runway to first PyPI publish on 2026-07-05.

Acceptance criteria (verbatim from ADR-117 §11)

A reviewer must be able to:

  1. pip install --pre wifi-densepose==2.0.0a1 from PyPI test index → wheel installs without compile step on Linux/macOS/Windows
  2. python -c "import wifi_densepose; print(wifi_densepose.__version__, wifi_densepose.__rust_version__)" → both versions print
  3. python -c "from wifi_densepose import CsiFrame; ..." → core type round-trips through PyO3
  4. python -c "from wifi_densepose import vitals; vitals.detect_hr(...)" → 4-stage pipeline runs on a sample CSI buffer
  5. pip install wifi-densepose[client]; python -c "import wifi_densepose.client; ..." → WS client connects to a running sensing-server
  6. pytest python/tests/ → ≥30 tests pass (smoke + binding round-trips)
  7. maturin build --release --strip → wheel under 5 MB per platform (ADR §5.4 budget)
  8. wifi-densepose==1.99.0 is the latest 1.x; import wifi_densepose raises ImportError with migration URL
  9. wifi-densepose==1.0.0 is yanked from PyPI; 1.1.0 is un-yanked with deprecation notice (90-day window)
  10. Witness expected_features_v2.sha256 generated in CI, committed alongside the existing archive/v1/data/proof/, re-verifiable from Python via wifi_densepose.verify_witness(...)

How to follow along

  • Phase-comment replies below seed the threads for each phase. Click into the one you're interested in and follow the discussion / PR links there
  • PRs linking back to this issue use Closes #<phase-PR> and Refs #<this-issue>
  • Horizon tracker is watching the 42-day runway; drift signal fires at P1 not-complete-by 2026-06-07

Related

  • ADR-117 (this work's design doc)
  • ADR-115 (Home Assistant + Matter integration — the user-onboarding sibling)
  • ADR-024 (AETHER) — the contrastive CSI embedding that's the foundational identity channel, will be bound in P6
  • ADR-027 (MERIDIAN) — cross-environment generalization, bound in P6+
  • ADR-110 (ESP32-C6) — provides the witness chain re-used for the v2 witness verifier in P3
  • Issue #776 (ADR-115 tracking, closed) — template for this issue's structure

Done

Issue closes when:

  • All P1–P5 + P-tomb phases ✅
  • All 10 acceptance criteria pass
  • wifi-densepose==2.0.0 is published on PyPI
  • wifi-densepose==1.99.0 tombstone is published
  • ADR-117 §Status flips to Accepted

🤖 Tracked by claude-flow + horizon-tracker (horizon adr117-pip-phoenix)

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.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.