Files
ruvnet--RuView/v2/crates/wifi-densepose-train/Cargo.toml
T
Claude 79d1fff99a feat: implement ADR-288/289/290 — benchmark harness, wideband CSI ingest, vitals ground-truth rig
ADR-288 (wifi-densepose-train): Widar3.0 Intel-5300 .dat bfee parser
(bounded, panic-free), WidarDataset over the CsiDataset trait, deterministic
SplitProtocol (cross-subject/environment/orientation + leakage-prone random
baseline), LeakageAudit that Errs on subject/environment/recording overlap,
train-only MeanPoseBaseline, and EvidenceGrade where Measured requires an
embedded reproducer. Criterion bench for parser + split + audit.

ADR-289 (wifi-densepose-mat): FeitCSI binary record parser (layout verified
against upstream source) with dimension-vs-buffer validation and bounded
allocation, DeviceType::FeitCsi replay/stream modes, subcarrier-agnostic
frame metadata (bandwidth/band/native->pipeline mapping). Criterion bench at
1992-subcarrier frames.

ADR-290 (wifi-densepose-vitals): reference-series CSV ingest, cross-correlation
time alignment with optional drift fit, Bland-Altman/MAE/RMSE agreement with
mandatory SessionScope, and EvidenceGrade gating Measured on reference device +
coverage + reproducer. Criterion bench for hour-scale alignment.

All three crate suites green; benches compile. Numbers are SYNTHETIC (in-code
fixtures); no hardware claims.

Co-Authored-By: claude-flow <ruv@ruv.net>
Claude-Session: https://claude.ai/code/session_015TcKegTS7QqhWPC2L2SzaS
2026-08-11 00:06:39 +00:00

116 lines
3.4 KiB
TOML

[package]
name = "wifi-densepose-train"
version = "0.3.3"
edition = "2021"
authors = ["rUv <ruv@ruv.net>", "WiFi-DensePose Contributors"]
license = "MIT OR Apache-2.0"
description = "Training pipeline for WiFi-DensePose pose estimation"
repository = "https://github.com/ruvnet/wifi-densepose"
documentation = "https://docs.rs/wifi-densepose-train"
keywords = ["wifi", "training", "pose-estimation", "deep-learning"]
categories = ["science", "computer-vision"]
readme = "README.md"
[[bin]]
name = "train"
path = "src/bin/train.rs"
[[bin]]
name = "verify-training"
path = "src/bin/verify_training.rs"
required-features = ["tch-backend"]
# AetherArena (ADR-149) deterministic score runner — the CI harness-gate entry
# point. Pure ruview_metrics (ndarray + sha2), no torch, so it builds and runs
# under --no-default-features for a fast, GPU-free PR gate.
[[bin]]
name = "aa_score_runner"
path = "src/bin/aa_score_runner.rs"
[features]
default = []
tch-backend = ["tch"]
cuda = ["tch-backend"]
[dependencies]
# Internal crates
wifi-densepose-signal = { version = "0.3.0", path = "../wifi-densepose-signal", default-features = false }
# NOTE: `wifi-densepose-nn` was declared here but never imported anywhere in
# this crate's src/ or bin/ (the tch-backend model path uses `tch` directly,
# not this crate). It was a dead dependency that pulled `ort` (ONNX Runtime) +
# reqwest/hyper into every downstream consumer — including the ADR-185
# `[meridian]` wheel. Removed to slim the dependency graph. Inference at
# serving time is done via `wifi-densepose-nn` by the binaries that actually
# load models, which depend on it directly.
# Core
thiserror.workspace = true
anyhow.workspace = true
serde = { workspace = true, features = ["derive"] }
serde_json.workspace = true
# Tensor / math
ndarray.workspace = true
num-complex.workspace = true
num-traits.workspace = true
# PyTorch bindings (optional — only enabled by `tch-backend` feature)
tch = { workspace = true, optional = true }
# Graph algorithms (min-cut for optimal keypoint assignment)
petgraph.workspace = true
# ruvector integration (subpolynomial min-cut, sparse solvers, temporal compression, attention)
ruvector-mincut = { workspace = true }
ruvector-attn-mincut = { workspace = true }
ruvector-temporal-tensor = { workspace = true }
ruvector-solver = { workspace = true }
ruvector-attention = { workspace = true }
# Data loading
ndarray-npy.workspace = true
memmap2 = "0.9"
walkdir.workspace = true
# Serialization
csv.workspace = true
toml = "0.8"
# Logging / progress
tracing.workspace = true
tracing-subscriber.workspace = true
indicatif.workspace = true
# Async (subset of features needed by training pipeline)
tokio = { workspace = true, features = ["rt", "rt-multi-thread", "macros", "fs"] }
# Crypto (for proof hash)
sha2.workspace = true
# CLI
clap.workspace = true
# Time
chrono = { version = "0.4", features = ["serde"] }
[dev-dependencies]
criterion.workspace = true
proptest.workspace = true
tempfile = "3.10"
approx = "0.5"
# Used by tests/test_real_loader.rs to write .npy fixtures that exercise the
# real MmFiDataset disk-loading path (the deterministic proof uses the
# in-memory SyntheticCsiDataset, which bypasses .npy parsing).
ndarray.workspace = true
ndarray-npy.workspace = true
[[bench]]
name = "training_bench"
harness = false
# ADR-288 — bfee-parser throughput and split-assignment benchmarks on
# synthetic, code-generated corpora (no dataset files).
[[bench]]
name = "benchmark_harness"
harness = false