mirror of
https://github.com/ruvnet/RuView.git
synced 2026-04-26 13:10:40 +00:00
Critical fixes: - C1: FieldModel created with n_links=1 (single_link_config) so feed_calibration/extract_perturbation no longer get DimensionMismatch - C2: variance_explained now uses centered covariance trace (E[x²]-E[x]²) matching mode_energies normalization - C3: MP ratio uses total_obs = frames * links for consistent threshold between calibration and runtime - C4: Noise estimator filters to positive eigenvalues only, preventing collapse to ~0 on rank-deficient matrices (p > n) - C5: ESP32 paths gate total_persons on presence — empty room reports 0 High fixes: - H1: Bounding box computed from observed keypoints only (confidence > 0), preventing collapse from centroid-filled unobserved slots - H2: fuse_or_fallback returns Option<usize> instead of sentinel 0, eliminating type ambiguity between "fusion succeeded" and "zero people" - H3: Monotonic epoch-relative timestamps replace wall-clock/Instant mixing, preventing spurious TimestampMismatch on NTP steps - H5: ndarray-linalg gated behind "eigenvalue" feature flag (default=on), diagonal fallback used with --no-default-features Moderate fixes: - M1: calibration_start guards against replacing Fresh calibration - M2: parse_node_positions logs warning for malformed entries Co-Authored-By: claude-flow <ruv@ruv.net>
55 lines
1.6 KiB
TOML
55 lines
1.6 KiB
TOML
[package]
|
|
name = "wifi-densepose-signal"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
description = "WiFi CSI signal processing for DensePose estimation"
|
|
license.workspace = true
|
|
authors = ["rUv <ruv@ruv.net>", "WiFi-DensePose Contributors"]
|
|
repository.workspace = true
|
|
documentation = "https://docs.rs/wifi-densepose-signal"
|
|
keywords = ["wifi", "csi", "signal-processing", "densepose", "rust"]
|
|
categories = ["science", "computer-vision"]
|
|
readme = "README.md"
|
|
|
|
[features]
|
|
default = ["eigenvalue"]
|
|
## Enable eigenvalue-based person counting (requires BLAS via ndarray-linalg).
|
|
## Disable with --no-default-features to use the diagonal fallback instead.
|
|
eigenvalue = ["ndarray-linalg"]
|
|
|
|
[dependencies]
|
|
# Core utilities
|
|
thiserror.workspace = true
|
|
serde = { workspace = true }
|
|
serde_json.workspace = true
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
|
|
# Signal processing
|
|
ndarray = { workspace = true }
|
|
ndarray-linalg = { workspace = true, optional = true }
|
|
rustfft.workspace = true
|
|
num-complex.workspace = true
|
|
num-traits.workspace = true
|
|
|
|
# Graph algorithms
|
|
ruvector-mincut = { workspace = true }
|
|
ruvector-attn-mincut = { workspace = true }
|
|
|
|
# Attention and solver integrations (ADR-017)
|
|
ruvector-attention = { workspace = true }
|
|
ruvector-solver = { workspace = true }
|
|
|
|
# Midstreamer integrations (ADR-032a)
|
|
midstreamer-temporal-compare = { workspace = true }
|
|
midstreamer-attractor = { workspace = true }
|
|
|
|
# Internal
|
|
wifi-densepose-core = { version = "0.3.0", path = "../wifi-densepose-core" }
|
|
|
|
[dev-dependencies]
|
|
criterion = { version = "0.5", features = ["html_reports"] }
|
|
proptest.workspace = true
|
|
|
|
[[bench]]
|
|
name = "signal_bench"
|
|
harness = false
|