From 2cc378c12f56bbe462f237496188f44a57de45eb Mon Sep 17 00:00:00 2001 From: rUv Date: Sun, 26 Jul 2026 15:44:24 -0700 Subject: [PATCH] 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. --- CHANGELOG.md | 1 + v2/Cargo.lock | 42 +++++++++---------- v2/Cargo.toml | 2 +- v2/crates/wifi-densepose-cli/Cargo.toml | 2 +- v2/crates/wifi-densepose-core/Cargo.toml | 2 +- v2/crates/wifi-densepose-hardware/Cargo.toml | 2 +- v2/crates/wifi-densepose-mat/Cargo.toml | 2 +- v2/crates/wifi-densepose-nn/Cargo.toml | 2 +- v2/crates/wifi-densepose-ruvector/Cargo.toml | 2 +- .../wifi-densepose-sensing-server/Cargo.toml | 2 +- v2/crates/wifi-densepose-signal/Cargo.toml | 2 +- v2/crates/wifi-densepose-train/Cargo.toml | 2 +- v2/crates/wifi-densepose-vitals/Cargo.toml | 2 +- v2/crates/wifi-densepose-wifiscan/Cargo.toml | 2 +- 14 files changed, 34 insertions(+), 33 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d6a5ac59..b5946fea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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) Beer–Lambert 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 — Allen–Berkley 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. diff --git a/v2/Cargo.lock b/v2/Cargo.lock index 02c23491..814fa09c 100644 --- a/v2/Cargo.lock +++ b/v2/Cargo.lock @@ -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", diff --git a/v2/Cargo.toml b/v2/Cargo.toml index ca831f02..b986a606 100644 --- a/v2/Cargo.toml +++ b/v2/Cargo.toml @@ -103,7 +103,7 @@ exclude = [ ] [workspace.package] -version = "0.3.0" +version = "0.3.1" edition = "2021" authors = ["rUv ", "WiFi-DensePose Contributors"] license = "MIT OR Apache-2.0" diff --git a/v2/crates/wifi-densepose-cli/Cargo.toml b/v2/crates/wifi-densepose-cli/Cargo.toml index f5082939..d28d1e50 100644 --- a/v2/crates/wifi-densepose-cli/Cargo.toml +++ b/v2/crates/wifi-densepose-cli/Cargo.toml @@ -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 diff --git a/v2/crates/wifi-densepose-core/Cargo.toml b/v2/crates/wifi-densepose-core/Cargo.toml index 6cb1e735..a7126b75 100644 --- a/v2/crates/wifi-densepose-core/Cargo.toml +++ b/v2/crates/wifi-densepose-core/Cargo.toml @@ -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 diff --git a/v2/crates/wifi-densepose-hardware/Cargo.toml b/v2/crates/wifi-densepose-hardware/Cargo.toml index c7975453..ff3b2a15 100644 --- a/v2/crates/wifi-densepose-hardware/Cargo.toml +++ b/v2/crates/wifi-densepose-hardware/Cargo.toml @@ -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" diff --git a/v2/crates/wifi-densepose-mat/Cargo.toml b/v2/crates/wifi-densepose-mat/Cargo.toml index e393371b..cea80cdf 100644 --- a/v2/crates/wifi-densepose-mat/Cargo.toml +++ b/v2/crates/wifi-densepose-mat/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wifi-densepose-mat" -version = "0.3.1" +version = "0.3.2" edition = "2021" authors = ["rUv ", "WiFi-DensePose Contributors"] description = "Mass Casualty Assessment Tool - WiFi-based disaster survivor detection" diff --git a/v2/crates/wifi-densepose-nn/Cargo.toml b/v2/crates/wifi-densepose-nn/Cargo.toml index 20b4f31e..c6b91c59 100644 --- a/v2/crates/wifi-densepose-nn/Cargo.toml +++ b/v2/crates/wifi-densepose-nn/Cargo.toml @@ -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 diff --git a/v2/crates/wifi-densepose-ruvector/Cargo.toml b/v2/crates/wifi-densepose-ruvector/Cargo.toml index 220dfd4e..7447b9e5 100644 --- a/v2/crates/wifi-densepose-ruvector/Cargo.toml +++ b/v2/crates/wifi-densepose-ruvector/Cargo.toml @@ -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 diff --git a/v2/crates/wifi-densepose-sensing-server/Cargo.toml b/v2/crates/wifi-densepose-sensing-server/Cargo.toml index 62eb6fad..bf752c46 100644 --- a/v2/crates/wifi-densepose-sensing-server/Cargo.toml +++ b/v2/crates/wifi-densepose-sensing-server/Cargo.toml @@ -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 diff --git a/v2/crates/wifi-densepose-signal/Cargo.toml b/v2/crates/wifi-densepose-signal/Cargo.toml index 183e730d..3e9b7a08 100644 --- a/v2/crates/wifi-densepose-signal/Cargo.toml +++ b/v2/crates/wifi-densepose-signal/Cargo.toml @@ -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 diff --git a/v2/crates/wifi-densepose-train/Cargo.toml b/v2/crates/wifi-densepose-train/Cargo.toml index bebbf82c..ddfeeb1a 100644 --- a/v2/crates/wifi-densepose-train/Cargo.toml +++ b/v2/crates/wifi-densepose-train/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wifi-densepose-train" -version = "0.3.2" +version = "0.3.3" edition = "2021" authors = ["rUv ", "WiFi-DensePose Contributors"] license = "MIT OR Apache-2.0" diff --git a/v2/crates/wifi-densepose-vitals/Cargo.toml b/v2/crates/wifi-densepose-vitals/Cargo.toml index 756c1471..b235ea37 100644 --- a/v2/crates/wifi-densepose-vitals/Cargo.toml +++ b/v2/crates/wifi-densepose-vitals/Cargo.toml @@ -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 diff --git a/v2/crates/wifi-densepose-wifiscan/Cargo.toml b/v2/crates/wifi-densepose-wifiscan/Cargo.toml index 5d7c6aba..d3e62e8c 100644 --- a/v2/crates/wifi-densepose-wifiscan/Cargo.toml +++ b/v2/crates/wifi-densepose-wifiscan/Cargo.toml @@ -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