mirror of
https://github.com/ruvnet/RuView
synced 2026-07-29 18:31:44 +00:00
bc0e8fd031
A cross-vendor review of the parity rework (2febbb81) found three issues; all
verified and fixed here.
1. HIGH — the native≈golden half never ran in CI, so a binding marshalling bug
could pass. The golden vectors were regenerated through the Python binding,
and only pytest (binding vs that golden) runs in CI — the native reference
tests in `python/tests/aether_parity.rs` link against the PyO3 crate and no
workflow runs them. A stable PyO3 conversion defect present at regeneration
would therefore be baked into the golden and go undetected.
Fix: a real native parity test IN the `wifi-densepose-aether` crate
(`tests/golden_parity.rs`), which is std-only and a member of the v2
workspace, so it runs under the existing `cargo test --workspace`. It
recomputes the embedding with no PyO3/marshalling and asserts it matches the
SAME committed golden within tolerance. Now native≈golden AND binding≈golden
both run in CI ⇒ binding≈native, and a binding-specific artifact in the
golden surfaces here as a native mismatch. serde_json added as a
dev-dependency only (test-only; never linked into the lib or the wheel, so
the crate stays runtime-dependency-free).
Independently proven at this commit: native output equals the committed
golden BIT-FOR-BIT (128/128 exact bits, Δ=0) for both base and loaded — the
golden is native-faithful today; this test keeps it that way.
2. MEDIUM — the Python parity helper passed non-finite output. `abs(nan - b) >
tol` is False, so an all-NaN embedding slipped through. Now every element
must be `math.isfinite` first. Proven: an all-NaN vector is rejected
("element 0 is not finite (nan)"); the Rust helpers already caught it via
`<=`.
3. LOW — a coherent shift inside the per-element tolerance could move the whole
vector undetected. Added a whole-vector cosine-similarity bound (≥ 1 - 1e-6)
alongside the per-element check.
Verified on aarch64/macOS: `test_aether` 13, full `python/tests/` suite 227
passed against a `--features sota` build; the new native test passes
(2/2) run standalone (the in-worktree `cargo test -p` only failed on an
un-checked-out submodule; ci.yml checks out submodules recursively).
Co-Authored-By: Ruflo & AQE
27 lines
997 B
TOML
27 lines
997 B
TOML
[package]
|
|
name = "wifi-densepose-aether"
|
|
description = "AETHER pure-compute stack (ADR-024): contrastive CSI embedding, CSI-to-pose transformer, SONA drift/LoRA, and quantization — std-only, no async/server deps so the Python `[aether]` wheel stays lean (ADR-185 §3.2)"
|
|
version = "0.3.0"
|
|
edition.workspace = true
|
|
authors.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
documentation.workspace = true
|
|
keywords.workspace = true
|
|
categories.workspace = true
|
|
|
|
# Intentionally dependency-free: this crate is the leaf hoisted out of
|
|
# `wifi-densepose-sensing-server` (ADR-185 §13) precisely so that binding it into
|
|
# the `wifi_densepose[aether]` wheel does not pull the Axum/tokio/worldgraph/
|
|
# ruvector server tree. Keep it std-only.
|
|
[dependencies]
|
|
|
|
# Test-only: parses the committed golden fixtures shared with the Python parity
|
|
# tests. Never linked into the library or the wheel.
|
|
[dev-dependencies]
|
|
serde_json = "1"
|
|
|
|
[lib]
|
|
name = "wifi_densepose_aether"
|
|
path = "src/lib.rs"
|