ADR-117: Modernize the pip wifi-densepose library — Rust core via PyO3 + maturin, v2.0.0
@ruvnet is already working on this.
Since May 24, 2026.
- 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-denseposeto 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-denseposetoday 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 asv2.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:
pip install --pre wifi-densepose==2.0.0a1from PyPI test index → wheel installs without compile step on Linux/macOS/Windowspython -c "import wifi_densepose; print(wifi_densepose.__version__, wifi_densepose.__rust_version__)"→ both versions printpython -c "from wifi_densepose import CsiFrame; ..."→ core type round-trips through PyO3python -c "from wifi_densepose import vitals; vitals.detect_hr(...)"→ 4-stage pipeline runs on a sample CSI bufferpip install wifi-densepose[client]; python -c "import wifi_densepose.client; ..."→ WS client connects to a running sensing-serverpytest python/tests/→ ≥30 tests pass (smoke + binding round-trips)maturin build --release --strip→ wheel under 5 MB per platform (ADR §5.4 budget)wifi-densepose==1.99.0is the latest 1.x;import wifi_denseposeraisesImportErrorwith migration URLwifi-densepose==1.0.0is yanked from PyPI;1.1.0is un-yanked with deprecation notice (90-day window)- Witness
expected_features_v2.sha256generated in CI, committed alongside the existingarchive/v1/data/proof/, re-verifiable from Python viawifi_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>andRefs #<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.0is published on PyPIwifi-densepose==1.99.0tombstone 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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.