mirror of
https://github.com/ruvnet/RuView.git
synced 2026-10-21 22:22:33 -05:00
Adds ruview-survey, a host-side check that compares pairwise node ranges with the configured --node-positions and warns, never writes. It reports per-link residuals, a fitted scale with feet/inch/cm/mm unit detection, a suggested id swap (exhaustive up to 8 nodes, fewest-changes rule, explicit ambiguity for symmetric layouts), moved nodes, and unknown or unranged ids. RangeObservation is source-agnostic (FTM, UWB, BLE CS, manual). Per-boot calibration keys offsets by (initiator, responder, responder_boot) because the measured FTM bias moved with every responder start. Fill mode is not implemented; fill_gate keeps it off until a source has MEASURED p90 link error <= 0.3 m over >= 6 links. FTM tolerances come from a two-board ESP32-S3 bench (20 MHz, ch 1): spread within a start <= 0.31 m, bias between starts -0.5 to +1.9 m at 1.14 m, clamp to 0 below ~0.8 m. Tests are SYNTHETIC. Co-Authored-By: claude-flow <ruv@ruv.net>