Compare commits

...

1 Commits

Author SHA1 Message Date
ruv b2f9c8d28d chore: version-bump and republish 10 of 12 documented crates to crates.io
Bumped each crate to its next patch version above whatever was already
live on crates.io (several had drifted ahead of what this checkout's
Cargo.toml showed) and 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 (workspace.package version).

wifi-densepose-signal's default `eigenvalue` feature pulls in
ndarray-linalg -> openblas-src, which needs vcpkg on native Windows;
verified+published with --no-default-features instead (the crate
already builds clean without it; nothing about the published tarball
changes based on the local verify build's feature flags).

wifi-densepose-sensing-server and wifi-densepose-cli were bumped
(0.3.5, 0.3.2) but NOT published: both path-depend on ruview-auth,
which is `publish = false` and not on crates.io, so `cargo publish`
correctly refuses them ("all dependencies must have a version
requirement"). Left as-is pending a decision on whether ruview-auth
should become publishable.

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-07-26 18:24:22 -04:00
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