mirror of
https://github.com/ruvnet/RuView
synced 2026-07-24 17:43:20 +00:00
revert(python): keep the small base wheel — P6 stays source-build-only for now
Reverses the release-wheel packaging change from3ed43e9aafter review. That commit built the published wheels with `--features sota` so `pip install wifi-densepose[aether]` would work. But it did so by abandoning a DELIBERATE, guarded design: `default = []`, the RuView#1387-default-wheel-budget-config fix-marker, and the wheel-size-budget job exist specifically to keep the base wheel small and make SOTA opt-in (ADR-117 §5.4). Building SOTA into every published wheel makes the base fat, turns the `[aether]`/`[mat]`/`[meridian]` extras into inert no-ops, and — worse — leaves the PUBLISHED wheel un-budget-checked (the budget job only builds the no-features wheel), so the ONNX Runtime dependency the fix-marker anticipates for `mat` would later balloon the shipped wheel past 5 MiB silently. A pip extra cannot enable a cargo feature on a prebuilt wheel, so "small base + opt-in SOTA in binary wheels" is only achievable by splitting into separate packages — tracked as #1412. Until that lands, P6 is source-build-only, and the honest thing is to say so. This commit: - Restores pip-release.yml to its original state (no --features in the release build; original smoke test). Net packaging change across the branch is now ZERO — the small-base design is fully intact. - Points the aether/mat/meridian import shims at the real interim path: a source build with `--features <x>` (or `--features sota`), and #1412 for the binary wheels follow-up. The earlier revision wrongly claimed "the official wheels include it", which is only true once #1412 ships. KEPT from3ed43e9a(correct regardless of packaging): the AETHER parity tests are now arch-portable — they compare a golden VECTOR within tolerance instead of a SHA-256 of raw f32 bytes, which only ever matched the one architecture that generated it and failed on the aarch64/macOS-arm wheels this project builds. Verified on aarch64/macOS with a `--features sota` build (as python-ci does): test_aether 13, test_mat 7, test_meridian 13 pass; full suite unaffected. Co-Authored-By: Ruflo & AQE
This commit is contained in:
@@ -111,33 +111,16 @@ jobs:
|
|||||||
CIBW_ARCHS_WINDOWS: ${{ matrix.arch }}
|
CIBW_ARCHS_WINDOWS: ${{ matrix.arch }}
|
||||||
CIBW_BUILD_FRONTEND: "build"
|
CIBW_BUILD_FRONTEND: "build"
|
||||||
CIBW_BEFORE_BUILD: "pip install maturin>=1.7"
|
CIBW_BEFORE_BUILD: "pip install maturin>=1.7"
|
||||||
# PUBLISHED wheels carry the full SOTA feature set. A pip extra
|
|
||||||
# (`[aether]`) CANNOT enable a Rust cargo feature on an already-built
|
|
||||||
# wheel, so the only way P6 reaches PyPI users is to compile it in.
|
|
||||||
# `default = []` stays in Cargo.toml (dev builds + the wheel-size
|
|
||||||
# budget job keep guarding the small base compile); the RELEASE build
|
|
||||||
# opts in here via maturin's PEP517 args. Measured 1.68 MiB — well
|
|
||||||
# under the ADR-117 §5.4 5 MiB budget. Set per-platform because
|
|
||||||
# CIBW_ENVIRONMENT_LINUX overrides the general CIBW_ENVIRONMENT.
|
|
||||||
CIBW_ENVIRONMENT: 'MATURIN_PEP517_ARGS="--features sota"'
|
|
||||||
# The PyO3 sdist landing depends on the cargo/Rust toolchain
|
# The PyO3 sdist landing depends on the cargo/Rust toolchain
|
||||||
# being present. cibuildwheel images carry rustup on Linux
|
# being present. cibuildwheel images carry rustup on Linux
|
||||||
# but we also pin a known-good version for reproducibility.
|
# but we also pin a known-good version for reproducibility.
|
||||||
CIBW_BEFORE_ALL_LINUX: "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.82"
|
CIBW_BEFORE_ALL_LINUX: "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.82"
|
||||||
CIBW_ENVIRONMENT_LINUX: 'PATH="$HOME/.cargo/bin:$PATH" MATURIN_PEP517_ARGS="--features sota"'
|
CIBW_ENVIRONMENT_LINUX: 'PATH="$HOME/.cargo/bin:$PATH"'
|
||||||
# Smoke-test every built wheel before accepting it. This ASSERTS the
|
# Smoke-test every built wheel before accepting it. Catches
|
||||||
# SOTA bindings are present and importable — the prior version only
|
# the case where the wheel imports but the compiled symbols
|
||||||
# printed __build_features__ and asserted hello(), so a wheel missing
|
# are missing.
|
||||||
# every P6 binding published green. A featureless wheel now fails here
|
|
||||||
# instead of shipping an ImportError to users.
|
|
||||||
CIBW_TEST_REQUIRES: "pytest>=8.0"
|
CIBW_TEST_REQUIRES: "pytest>=8.0"
|
||||||
CIBW_TEST_COMMAND: >-
|
CIBW_TEST_COMMAND: 'python -c "import wifi_densepose; assert wifi_densepose.hello() == \"ok\"; print(wifi_densepose.__build_features__)"'
|
||||||
python -c "import wifi_densepose as w;
|
|
||||||
assert w.hello() == 'ok';
|
|
||||||
missing = [f for f in ('p6-aether-bindings','p6-meridian-bindings','p6-mat-bindings') if f not in w.__build_features__];
|
|
||||||
assert not missing, ('published wheel is missing SOTA bindings: ' + str(missing) + ' have=' + str(w.__build_features__));
|
|
||||||
import wifi_densepose.aether, wifi_densepose.mat, wifi_densepose.meridian;
|
|
||||||
print('OK — SOTA bindings present:', w.__build_features__)"
|
|
||||||
with:
|
with:
|
||||||
package-dir: python
|
package-dir: python
|
||||||
output-dir: wheelhouse
|
output-dir: wheelhouse
|
||||||
|
|||||||
@@ -4,10 +4,10 @@ Self-supervised 128-dim L2-normalized embeddings for WiFi CSI: room
|
|||||||
fingerprinting, person re-identification, and anomaly scoring, computed
|
fingerprinting, person re-identification, and anomaly scoring, computed
|
||||||
entirely offline by the Rust core (no server, no network).
|
entirely offline by the Rust core (no server, no network).
|
||||||
|
|
||||||
Included in the official ``wifi-densepose`` wheels. It is absent only from a
|
Not in the binary wheels yet (see ruvnet/RuView#1412 — the P6 SOTA
|
||||||
from-source build that did not enable the Rust ``aether`` feature; rebuild with
|
bindings are shipped source-build-only for now to keep the base wheel
|
||||||
``maturin ... --features aether`` (or ``--features sota`` for all three P6
|
small). Build from source with ``maturin ... --features aether`` (or
|
||||||
subsystems) in that case.
|
``--features sota`` for all three P6 subsystems).
|
||||||
|
|
||||||
Quick start::
|
Quick start::
|
||||||
|
|
||||||
@@ -23,15 +23,14 @@ from __future__ import annotations
|
|||||||
|
|
||||||
from wifi_densepose import _native
|
from wifi_densepose import _native
|
||||||
|
|
||||||
# The AETHER symbols are compiled into `_native` only under the Rust
|
# The AETHER symbols are compiled into `_native` only under the Rust `aether`
|
||||||
# `aether` feature, which the official wheels enable. They are absent only from
|
# feature. The binary wheels do NOT enable it yet (ruvnet/RuView#1412);
|
||||||
# a from-source build that omitted the feature — name the actual fix (rebuild
|
# it is available from a source build with the feature. Name that fix, not
|
||||||
# with the feature), not a pip extra, which cannot add compiled code to an
|
# a pip extra, which cannot add compiled code to a built wheel.
|
||||||
# already-built wheel (ADR-185 §6 acceptance criterion).
|
|
||||||
if not hasattr(_native, "AetherConfig"):
|
if not hasattr(_native, "AetherConfig"):
|
||||||
raise ImportError(
|
raise ImportError(
|
||||||
"wifi_densepose.aether is not available in this build. The official "
|
"wifi_densepose.aether is not in the binary wheels yet "
|
||||||
"wheels include it; if you built from source, rebuild with "
|
"(see ruvnet/RuView#1412). Build from source with "
|
||||||
"`maturin ... --features aether` (or `--features sota`)."
|
"`maturin ... --features aether` (or `--features sota`)."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,10 @@
|
|||||||
WiFi-based disaster-survivor detection and START-protocol triage from CSI:
|
WiFi-based disaster-survivor detection and START-protocol triage from CSI:
|
||||||
ingest CSI frames, run a scan cycle, and query detected survivors by triage.
|
ingest CSI frames, run a scan cycle, and query detected survivors by triage.
|
||||||
|
|
||||||
Included in the official ``wifi-densepose`` wheels. It is absent only from a
|
Not in the binary wheels yet (see ruvnet/RuView#1412 — the P6 SOTA
|
||||||
from-source build that did not enable the Rust ``mat`` feature; rebuild with
|
bindings are shipped source-build-only for now to keep the base wheel
|
||||||
``maturin ... --features mat`` (or ``--features sota``) in that case.
|
small). Build from source with ``maturin ... --features mat`` (or
|
||||||
|
``--features sota`` for all three P6 subsystems).
|
||||||
|
|
||||||
Quick start::
|
Quick start::
|
||||||
|
|
||||||
@@ -36,8 +37,8 @@ from wifi_densepose import _native
|
|||||||
# MAT symbols are compiled into `_native` only under the Rust `mat` feature.
|
# MAT symbols are compiled into `_native` only under the Rust `mat` feature.
|
||||||
if not hasattr(_native, "DisasterResponse"):
|
if not hasattr(_native, "DisasterResponse"):
|
||||||
raise ImportError(
|
raise ImportError(
|
||||||
"wifi_densepose.mat is not available in this build. The official "
|
"wifi_densepose.mat is not in the binary wheels yet "
|
||||||
"wheels include it; if you built from source, rebuild with "
|
"(see ruvnet/RuView#1412). Build from source with "
|
||||||
"`maturin ... --features mat` (or `--features sota`)."
|
"`maturin ... --features mat` (or `--features sota`)."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -4,9 +4,10 @@ Hardware-invariant CSI normalization, geometry-conditioned deployment,
|
|||||||
few-shot room adaptation, and cross-domain evaluation — the tch-free
|
few-shot room adaptation, and cross-domain evaluation — the tch-free
|
||||||
inference/adaptation path of Project MERIDIAN, computed by the Rust core.
|
inference/adaptation path of Project MERIDIAN, computed by the Rust core.
|
||||||
|
|
||||||
Included in the official ``wifi-densepose`` wheels. It is absent only from a
|
Not in the binary wheels yet (see ruvnet/RuView#1412 — the P6 SOTA
|
||||||
from-source build that did not enable the Rust ``meridian`` feature; rebuild with
|
bindings are shipped source-build-only for now to keep the base wheel
|
||||||
``maturin ... --features meridian`` (or ``--features sota``) in that case.
|
small). Build from source with ``maturin ... --features meridian`` (or
|
||||||
|
``--features sota`` for all three P6 subsystems).
|
||||||
|
|
||||||
Quick start::
|
Quick start::
|
||||||
|
|
||||||
@@ -33,8 +34,8 @@ from wifi_densepose import _native
|
|||||||
# `meridian` feature; absent in a base wheel (ADR-185 §6 acceptance).
|
# `meridian` feature; absent in a base wheel (ADR-185 §6 acceptance).
|
||||||
if not hasattr(_native, "HardwareNormalizer"):
|
if not hasattr(_native, "HardwareNormalizer"):
|
||||||
raise ImportError(
|
raise ImportError(
|
||||||
"wifi_densepose.meridian is not available in this build. The official "
|
"wifi_densepose.meridian is not in the binary wheels yet "
|
||||||
"wheels include it; if you built from source, rebuild with "
|
"(see ruvnet/RuView#1412). Build from source with "
|
||||||
"`maturin ... --features meridian` (or `--features sota`)."
|
"`maturin ... --features meridian` (or `--features sota`)."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user