chore: version-bump and republish 10 of 12 documented crates to crates.io (#1439)

Published: wifi-densepose-core 0.3.2, -vitals 0.3.2, -wifiscan 0.3.2, -hardware 0.3.2, -signal 0.3.6, -nn 0.3.2, -ruvector 0.3.3, -train 0.3.3, -mat 0.3.2, -wasm 0.3.1.

Not published (blocked, needs a decision): wifi-densepose-sensing-server and wifi-densepose-cli both path-depend on ruview-auth, which is publish = false. Version bumps reserved (0.3.5, 0.3.2) but not published.
This commit is contained in:
rUv
2026-07-26 15:44:24 -07:00
committed by GitHub
parent 2e018f4f19
commit 2cc378c12f
14 changed files with 34 additions and 33 deletions
+1
View File
@@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **`ruview-unified` — unified RF spatial world model, P1 (ADR-273..278).** New v2 workspace leaf crate implementing the five-pillar architecture: (1) canonical `RfTensor` (`links × 56 bins × 8 snapshots`, complex, validated at the boundary) plus a fail-closed hardware adapter registry with reference adapters for 802.11 CSI (consumes `wifi-densepose-core::CsiFrame`), FMCW radar cubes (fast-time DFT), UWB CIR, and 5G SRS (comb de-interleave); (2) a universal RF foundation encoder — window-median + CFO-aligned tokenizer, masked-reconstruction pretraining with a hand-derived backward pass verified against central finite differences (174 params sampled, max rel err 1.31e-5), the ADR-273 fusion contract `z = Enc(CSI) ⊙ σ(AgeEnc) + GeomEnc(pose)`, and ≤1% task adapters (presence 129 / activity 268 / localization 387 / anomaly 2 vs a 40,856-param backbone); (3) an RF-aware Gaussian spatial memory — anisotropic primitives with per-band×angle reflectivity, confidence-weighted fusion, exponential decay, spatial-hash + semantic queries, closed-form (erf) BeerLambert channel-gain queries that degrade to exact Friis on an empty map, inverse gain updates that learn an unseen 6 dB obstruction to <0.5 dB in 20 link observations, and a JITOMA-style task-gated scene graph; (4) a physics-guided synthetic RF world generator — AllenBerkley image method (order ≤2), complex-permittivity Fresnel materials, bistatic person scattering with *emergent* Doppler (proven against the analytic phase rate), seeded ChaCha20 domain randomization of physics + hardware nuisances (gain/CFO/phase noise/packet loss/interference); (5) an edge sensing control plane — 802.11bf/ETSI-ISAC-aligned purposes and zones, fail-closed authorization, a double-gated identity purpose, retention bounds, and a `BoundedEvent`-only trust boundary that makes raw RF export unrepresentable. Anti-leakage evaluation (`StrictSplit` by room/day/person/chipset/firmware/layout with an independent disjointness verifier, ECE, selective risk, degradation) plus an end-to-end acceptance pipeline: presence F1 1.00 on held-out rooms *and* held-out chipset, degradation 0.0, ECE 0.012, p95 tokenize+encode 2.0 ms debug / 105 µs release — **all SYNTHETIC** (honest labeling propagates from `RfModality::Synthetic` through `Provenance.synthetic`). Criterion benches with an optimization pass: segment-corridor candidate search took `channel_gain` from 139 µs → 27 µs (O(1) in map size; hash/linear crossover at ~4k Gaussians reported honestly), `observe_link` 305 µs → 74 µs, precomputed DFT twiddles 4.9×. 66 unit + 3 acceptance tests, 0 failed.
### Changed
- **crates.io release batch — 10 of the 12 documented crates republished at their next patch version.** `wifi-densepose-core` 0.3.2, `-vitals` 0.3.2, `-wifiscan` 0.3.2, `-hardware` 0.3.2 (picks up the ADR-273..282 review-fix commit's clippy fixes), `-signal` 0.3.6, `-nn` 0.3.2, `-ruvector` 0.3.3, `-train` 0.3.3, `-mat` 0.3.2, `-wasm` 0.3.1 — all published and verified live on crates.io. **`wifi-densepose-sensing-server` and `wifi-densepose-cli` were bumped locally (0.3.5, 0.3.2) but NOT published**: both now path-depend on `ruview-auth`, which is deliberately `publish = false` and not on crates.io — `cargo publish` correctly refuses to publish a crate with an unversioned/unpublishable path dependency. This is a pre-existing gap (the dependency predates this batch); resolving it is a deliberate call for whoever owns whether `ruview-auth` becomes public, not something to route around silently.
- **`wifi-densepose` promoted to `2.0.0` stable; `ruview` `2.0.0` prepared for its first stable publish (ADR-184 P2).** Dropped the `a1` alpha suffix on both sibling packages (`python/pyproject.toml`, `python/ruview-meta/pyproject.toml`) and flipped their trove classifier `Development Status :: 3 - Alpha``5 - Production/Stable`; the `ruview` meta-package's `wifi-densepose==2.0.0a1` dependency pins (base + `[client]`) were repointed to `==2.0.0`. **Version-metadata prep only — nothing is published by this change**: the actual PyPI upload remains gated on the ADR-117 v2 witness hash. Justified as "stable": the default (no-extras) wheel builds at 279 KB (`maturin build --release --strip`) and the base non-SOTA suite is green — `pytest python/tests/` (excluding the `[aether]`/`[meridian]`/`[mat]` extra modules) = **185 passed, 0 failed** (smoke / keypoint / pose / vitals / bfld / security / WS+MQTT client).
- **CI (ADR-184): `pip-release.yml` keeps token-based PyPI authentication until Trusted Publishing is registered.** An OIDC migration was attempted in `cc153e8b5` and reverted in `82d5c7339` so releases would not enter a half-configured state. Production currently uses `PYPI_API_TOKEN`; TestPyPI uses its independent `TESTPYPI_API_TOKEN`. The workflow now builds and publishes `wifi-densepose` and `ruview` together, verifies their versions and dependency pin match, and fails closed before production upload when `expected_features_v2.sha256` is absent.
- **`@ruvnet/rvagent` startup optimization — stdio time-to-first-response ~242 ms → ~189 ms (22%; MEASURED, median of repeated `initialize` round-trips against `dist/index.js`, this container, reproduce with a piped-stdin timer).** Two changes: (1) `./http-transport.js` is now imported **lazily** inside the `RVAGENT_HTTP_PORT` branch — it chain-loads the MCP SDK's `streamableHttp` module (~48 ms MEASURED via per-module `import()` timing), which the default stdio path never uses; (2) the advertised JSON Schemas generated from the Zod sources are memoized per tool instead of re-walking the Zod tree on every `tools/list` (matters under the session-per-server HTTP model where each session lists tools). No behavior change: 99/99 jest tests, HTTP session flow re-smoke-tested through the lazy path. The `@ruvnet/ruview` harness CLI was profiled too and left alone — 50 ms vs the ~29 ms bare `node -e ''` floor on the same box (MEASURED), i.e. already near the interpreter floor with zero dependencies.
Generated
+21 -21
View File
@@ -996,7 +996,7 @@ dependencies = [
[[package]]
name = "cog-ha-matter"
version = "0.3.0"
version = "0.3.1"
dependencies = [
"clap",
"ed25519-dalek",
@@ -1015,7 +1015,7 @@ dependencies = [
[[package]]
name = "cog-person-count"
version = "0.3.0"
version = "0.3.1"
dependencies = [
"approx",
"candle-core 0.9.2",
@@ -1036,7 +1036,7 @@ dependencies = [
[[package]]
name = "cog-pose-estimation"
version = "0.3.0"
version = "0.3.1"
dependencies = [
"candle-core 0.9.2",
"candle-nn 0.9.2",
@@ -5359,7 +5359,7 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
[[package]]
name = "nvsim"
version = "0.3.0"
version = "0.3.1"
dependencies = [
"approx",
"criterion",
@@ -5377,7 +5377,7 @@ dependencies = [
[[package]]
name = "nvsim-server"
version = "0.3.0"
version = "0.3.1"
dependencies = [
"axum",
"clap",
@@ -7677,7 +7677,7 @@ dependencies = [
[[package]]
name = "ruview-unified"
version = "0.3.0"
version = "0.3.1"
dependencies = [
"criterion",
"ndarray 0.17.2",
@@ -11056,7 +11056,7 @@ dependencies = [
[[package]]
name = "wifi-densepose-calibration"
version = "0.3.0"
version = "0.3.1"
dependencies = [
"ndarray 0.17.2",
"num-complex",
@@ -11070,7 +11070,7 @@ dependencies = [
[[package]]
name = "wifi-densepose-cli"
version = "0.3.1"
version = "0.3.2"
dependencies = [
"anyhow",
"assert_cmd",
@@ -11105,7 +11105,7 @@ dependencies = [
[[package]]
name = "wifi-densepose-core"
version = "0.3.1"
version = "0.3.2"
dependencies = [
"async-trait",
"blake3",
@@ -11122,7 +11122,7 @@ dependencies = [
[[package]]
name = "wifi-densepose-desktop"
version = "0.3.0"
version = "0.3.1"
dependencies = [
"chrono",
"flume",
@@ -11178,7 +11178,7 @@ dependencies = [
[[package]]
name = "wifi-densepose-hardware"
version = "0.3.1"
version = "0.3.2"
dependencies = [
"approx",
"byteorder",
@@ -11198,7 +11198,7 @@ dependencies = [
[[package]]
name = "wifi-densepose-mat"
version = "0.3.1"
version = "0.3.2"
dependencies = [
"anyhow",
"approx",
@@ -11230,7 +11230,7 @@ dependencies = [
[[package]]
name = "wifi-densepose-nn"
version = "0.3.1"
version = "0.3.2"
dependencies = [
"anyhow",
"candle-core 0.4.1",
@@ -11253,7 +11253,7 @@ dependencies = [
[[package]]
name = "wifi-densepose-occworld-candle"
version = "0.3.0"
version = "0.3.1"
dependencies = [
"approx",
"candle-core 0.9.2",
@@ -11296,7 +11296,7 @@ dependencies = [
[[package]]
name = "wifi-densepose-ruvector"
version = "0.3.2"
version = "0.3.3"
dependencies = [
"approx",
"criterion",
@@ -11316,7 +11316,7 @@ dependencies = [
[[package]]
name = "wifi-densepose-sensing-server"
version = "0.3.4"
version = "0.3.5"
dependencies = [
"axum",
"base64 0.21.7",
@@ -11360,7 +11360,7 @@ dependencies = [
[[package]]
name = "wifi-densepose-signal"
version = "0.3.5"
version = "0.3.6"
dependencies = [
"chrono",
"criterion",
@@ -11387,7 +11387,7 @@ dependencies = [
[[package]]
name = "wifi-densepose-train"
version = "0.3.2"
version = "0.3.3"
dependencies = [
"anyhow",
"approx",
@@ -11424,7 +11424,7 @@ dependencies = [
[[package]]
name = "wifi-densepose-vitals"
version = "0.3.1"
version = "0.3.2"
dependencies = [
"criterion",
"serde",
@@ -11434,7 +11434,7 @@ dependencies = [
[[package]]
name = "wifi-densepose-wasm"
version = "0.3.0"
version = "0.3.1"
dependencies = [
"chrono",
"console_error_panic_hook",
@@ -11456,7 +11456,7 @@ dependencies = [
[[package]]
name = "wifi-densepose-wifiscan"
version = "0.3.1"
version = "0.3.2"
dependencies = [
"serde",
"tokio",
+1 -1
View File
@@ -103,7 +103,7 @@ exclude = [
]
[workspace.package]
version = "0.3.0"
version = "0.3.1"
edition = "2021"
authors = ["rUv <ruv@ruv.net>", "WiFi-DensePose Contributors"]
license = "MIT OR Apache-2.0"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "wifi-densepose-cli"
version = "0.3.1"
version = "0.3.2"
edition.workspace = true
description = "CLI for WiFi-DensePose"
authors.workspace = true
+1 -1
View File
@@ -1,7 +1,7 @@
[package]
name = "wifi-densepose-core"
description = "Core types, traits, and utilities for WiFi-DensePose pose estimation system"
version = "0.3.1" # ADR-136: ComplexSample/CanonicalFrame/provenance + blake3
version = "0.3.2" # ADR-136: ComplexSample/CanonicalFrame/provenance + blake3
edition.workspace = true
authors.workspace = true
license.workspace = true
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "wifi-densepose-hardware"
version = "0.3.1"
version = "0.3.2"
edition.workspace = true
description = "Hardware interface abstractions for WiFi CSI sensors (ESP32, Intel 5300, Atheros)"
license = "MIT OR Apache-2.0"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "wifi-densepose-mat"
version = "0.3.1"
version = "0.3.2"
edition = "2021"
authors = ["rUv <ruv@ruv.net>", "WiFi-DensePose Contributors"]
description = "Mass Casualty Assessment Tool - WiFi-based disaster survivor detection"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "wifi-densepose-nn"
version = "0.3.1"
version = "0.3.2"
edition.workspace = true
authors.workspace = true
license.workspace = true
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "wifi-densepose-ruvector"
version = "0.3.2"
version = "0.3.3"
edition.workspace = true
authors.workspace = true
license.workspace = true
@@ -1,6 +1,6 @@
[package]
name = "wifi-densepose-sensing-server"
version = "0.3.4"
version = "0.3.5"
edition.workspace = true
description = "Lightweight Axum server for WiFi sensing UI with RuVector signal processing"
license.workspace = true
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "wifi-densepose-signal"
version = "0.3.5"
version = "0.3.6"
edition.workspace = true
description = "WiFi CSI signal processing for DensePose estimation"
license.workspace = true
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "wifi-densepose-train"
version = "0.3.2"
version = "0.3.3"
edition = "2021"
authors = ["rUv <ruv@ruv.net>", "WiFi-DensePose Contributors"]
license = "MIT OR Apache-2.0"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "wifi-densepose-vitals"
version = "0.3.1"
version = "0.3.2"
edition.workspace = true
description = "ESP32 CSI-grade vital sign extraction (ADR-021): heart rate and respiratory rate from WiFi Channel State Information"
license.workspace = true
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "wifi-densepose-wifiscan"
version = "0.3.1"
version = "0.3.2"
edition.workspace = true
description = "Multi-BSSID WiFi scanning domain layer for enhanced Windows WiFi DensePose sensing (ADR-022)"
license.workspace = true