From f74e73ccf7bb340b3969741d9ea6f21c49d37dde Mon Sep 17 00:00:00 2001 From: ruv Date: Tue, 21 Jul 2026 17:36:37 -0700 Subject: [PATCH] chore(adr-184): promote wifi-densepose to 2.0.0 stable + ruview 2.0.0 (P2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ADR-184 P2 (version promotion + changelog) — version-metadata prep only; triggers NO publish (P3's real PyPI upload is still gated on the manual Trusted Publisher registration on pypi.org). - python/pyproject.toml: version 2.0.0a1 -> 2.0.0; classifier "Development Status :: 3 - Alpha" -> "5 - Production/Stable". - python/ruview-meta/pyproject.toml: version 2.0.0a1 -> 2.0.0; same classifier bump; repointed the wifi-densepose dependency pins (base + [client]) from ==2.0.0a1 to ==2.0.0 so the stable ruview meta-package depends on the stable wifi-densepose, not the alpha. - python/wifi_densepose/__init__.py: runtime __version__ 2.0.0a1 -> 2.0.0 (caught during the sanity check — it would otherwise contradict the stable wheel version reported by `wifi_densepose.__version__`). - CHANGELOG.md: [Unreleased] entry recording the promotion. Sanity-checked that the core package genuinely deserves "Production/Stable" (not just a version-string change): maturin build --release --strip -> default wheel 279 KB pytest python/tests/ (excluding [aether]/[meridian]/[mat] extra modules) -> 185 passed, 0 failed (smoke/keypoint/pose/vitals/bfld/security/ WS+MQTT client) post-bump: wheel installs as 2.0.0, __version__ = 2.0.0, smoke 6/6 pass. No publish/tag/release commands were run. --- CHANGELOG.md | 1 + python/pyproject.toml | 4 ++-- python/ruview-meta/pyproject.toml | 12 ++++++------ python/wifi_densepose/__init__.py | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e2c3ab5..5e16eaa3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Changed +- **`wifi-densepose` promoted to `2.0.0` stable; `ruview` `2.0.0` 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`. Pip-release now authenticates via Trusted Publishing (see the entry below). **Version-metadata prep only — nothing is published by this change**: the actual PyPI upload (ADR-184 P3) is still gated on the one-time manual Trusted Publisher registration on pypi.org that only the repo owner can perform. 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` publish job migrated to PyPI OIDC Trusted Publishing** (commit `cc153e8b5`; refs #785, completes ADR-117). The release workflow now authenticates to PyPI via short-lived OIDC tokens (`id-token: write`) instead of a long-lived `PYPI_API_TOKEN` secret. **Not yet active**: publishing will fail until the matching Trusted Publisher is registered manually on pypi.org (a one-time, per-project step that cannot be automated from CI) — ADR-184 P1 tracks this as the remaining gate (status recorded in `dfc4c1abd`). - **`@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/python/pyproject.toml b/python/pyproject.toml index 786cf4a4..f7f9a832 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -10,7 +10,7 @@ build-backend = "maturin" [project] name = "wifi-densepose" -version = "2.0.0a1" +version = "2.0.0" description = "WiFi-based human pose estimation, vital sign extraction, and ambient intelligence from Channel State Information (CSI). PyO3 bindings for the Rust core." readme = "README.md" requires-python = ">=3.10" @@ -23,7 +23,7 @@ keywords = [ "biometric", "ambient-intelligence", "home-assistant", "matter", ] classifiers = [ - "Development Status :: 3 - Alpha", + "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", diff --git a/python/ruview-meta/pyproject.toml b/python/ruview-meta/pyproject.toml index 401805c2..9b971e3c 100644 --- a/python/ruview-meta/pyproject.toml +++ b/python/ruview-meta/pyproject.toml @@ -16,7 +16,7 @@ build-backend = "setuptools.build_meta" [project] name = "ruview" -version = "2.0.0a1" +version = "2.0.0" description = "RuView — ambient intelligence from WiFi CSI. Meta-package; installs `wifi-densepose` and re-exports it under the `ruview` namespace. See https://github.com/ruvnet/RuView." readme = "README.md" requires-python = ">=3.10" @@ -28,7 +28,7 @@ keywords = [ "ruview", ] classifiers = [ - "Development Status :: 3 - Alpha", + "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", @@ -43,13 +43,13 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - # Pin to the matching v2 release so an alpha-pin `pip install ruview` - # always gets a compatible wifi-densepose. - "wifi-densepose==2.0.0a1", + # Pin to the matching v2 release so `pip install ruview` always gets a + # compatible wifi-densepose. + "wifi-densepose==2.0.0", ] [project.optional-dependencies] -client = ["wifi-densepose[client]==2.0.0a1"] +client = ["wifi-densepose[client]==2.0.0"] [project.urls] Homepage = "https://github.com/ruvnet/RuView" diff --git a/python/wifi_densepose/__init__.py b/python/wifi_densepose/__init__.py index f468f2b1..874d44ca 100644 --- a/python/wifi_densepose/__init__.py +++ b/python/wifi_densepose/__init__.py @@ -28,7 +28,7 @@ from __future__ import annotations # Public Python version follows the wheel version, NOT the Rust core # version. The Rust core version is surfaced separately as # `__rust_version__` for diagnostics. -__version__ = "2.0.0a1" +__version__ = "2.0.0" # Re-export the compiled module's surface. The leading underscore on # `_native` is intentional — it marks the binding module as internal.