ruview @ v1067
integrity
- size
- 55.6 MiB
- downloaded
- last checked
release notes
Automated release from CI pipeline
Changes: research(R13): NEGATIVE — contactless BP from CSI is physically inferior to a cuff (#713)
Critical-physics scrutiny of published 'contactless BP from WiFi CSI' claims (Yang 2022, Liu 2021, others). Four physics floors quantified; all four make CSI-based BP provably worse than a 20 dollar arm cuff.
-
PTT temporal resolution: need 0.5 ms for 1 mmHg precision; ESP32-S3 maxes at 1 ms (1000 Hz CSI) and typical deployment is 10 ms (100 Hz) = 20 mmHg precision floor. Achievable but requires sacrificing every other sensing pipeline.
-
Spatial separation: carotid-femoral distance 55 cm, Fresnel envelope at 5 m link is 40 cm. Single-link CSI cannot resolve the two sites independently. Multistatic with 4-6 anchors is severely ill-posed (same regime that defeated R12).
-
Pulse-contour SNR: pulse motion at chest is 0.3 mm; breathing is 8 mm (27x larger). After 4th-order bandpass we get +20 dB HR-band SNR; literature (Mukkamala 2015) says +25 dB minimum for waveform- shape recovery. 5 dB short.
-
Vs 0 arm cuff: best published CSI BP is +/-10 mmHg with per-subject calibration; arm cuff is +/-2 mmHg uncalibrated. CSI is 5x worse AND requires calibration the user doesn't otherwise need.
Verdict: do not ship BP as a primary RuView feature. The breathing/HR features we already ship work because their motion amplitudes are 30-100x larger than the pulse waveform. Adding BP would force 1 kHz CSI rate (degrading every other pipeline), require per-subject calibration (defeating no-setup story), and ship a feature that's worse than a 20 dollar device the user can buy.
Three niche scenarios remain open:
- Single-subject trend monitoring (relative not absolute)
- Bed-instrumented controlled-still subject (25+ dB achievable)
- Multistatic PWV with 6+ anchors + per-installation calibration
The general 'BP from a 9 dollar ESP32 in the corner' claim does not close.
Composes:
- R1 (CRLB) confirms temporal-resolution floor for PTT
- R6 (Fresnel) provides the spatial floor that defeats two-site PTT
- R5 (saliency) explains why whole-chest observable but 0.3 mm pulse not
- R12 = loop's other negative result, same failure pattern
- R14's assumption (no BP) is now empirically validated
Two negative results in this loop (R12, R13) prevent the field from biasing toward overclaiming. This is the most valuable kind of tick because it marks BP-from-CSI as off-roadmap with explicit numbers, so future contributors don't waste cycles attempting it.
Coordination: ticks/tick-11.md, no PROGRESS.md edit.
Docker Image:
ghcr.io/ruvnet/RuView:bcfdf0a4d06ebcec7ecc9c2879637e318aa546d7
download
curl -fL -o v1067.zip https://ratatoskr.space/pkg/ruview/v1067.zip
printf '%s %s\n' 'ca4a37c6b244afff00dc4d382df6d307babd104a2c5798ebc6d45dd4ed14fe43' 'v1067.zip' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v1067.zip"
$out = "v1067.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "ca4a37c6b244afff00dc4d382df6d307babd104a2c5798ebc6d45dd4ed14fe43") { throw "sha256 mismatch" }
curl -fL -o v1067.tar.gz https://ratatoskr.space/pkg/ruview/v1067.tar.gz
printf '%s %s\n' '0f3dc6c1181312b5cee21207a5e030058c718f35883c37088239a1d95ead7181' 'v1067.tar.gz' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v1067.tar.gz"
$out = "v1067.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "0f3dc6c1181312b5cee21207a5e030058c718f35883c37088239a1d95ead7181") { throw "sha256 mismatch" }
download via yggdrasil mesh
curl -fL -o v1067.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1067.zip
printf '%s %s\n' 'ca4a37c6b244afff00dc4d382df6d307babd104a2c5798ebc6d45dd4ed14fe43' 'v1067.zip' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1067.zip"
$out = "v1067.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "ca4a37c6b244afff00dc4d382df6d307babd104a2c5798ebc6d45dd4ed14fe43") { throw "sha256 mismatch" }
curl -fL -o v1067.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1067.tar.gz
printf '%s %s\n' '0f3dc6c1181312b5cee21207a5e030058c718f35883c37088239a1d95ead7181' 'v1067.tar.gz' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1067.tar.gz"
$out = "v1067.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "0f3dc6c1181312b5cee21207a5e030058c718f35883c37088239a1d95ead7181") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v1067.zip | zip | 55.5 MiB |
blake3-24 b513f0194e26eb996c3c6e39dce7d6c7daa4ac44f96e025f
sha256 ca4a37c6b244afff00dc4d382df6d307babd104a2c5798ebc6d45dd4ed14fe43
sha1 8ebd089c68b9796cd5e5767d69de46747689a422
|
| v1067.tar.gz | tar.gz | 54.1 MiB |
blake3-24 26d43a584d63cb49453cd12d9202022b2ef23d24af89debd
sha256 0f3dc6c1181312b5cee21207a5e030058c718f35883c37088239a1d95ead7181
sha1 e9fef96c5d44f6a42c601f2e863cf3d33085bc1d
|
install
http_archive(
name = "ruview",
urls = ["https://ratatoskr.space/pkg/ruview/v1067.tar.gz"],
integrity = "sha256-Dz3GwRgTErXO4hIHpeAwBYxxjzWIPDcIgjmh2V6tcYE=",
strip_prefix = "ruview-v1067",
)
.url = "https://ratatoskr.space/pkg/ruview/v1067.tar.gz",
install via yggdrasil mesh
http_archive(
name = "ruview",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1067.tar.gz"],
integrity = "sha256-Dz3GwRgTErXO4hIHpeAwBYxxjzWIPDcIgjmh2V6tcYE=",
strip_prefix = "ruview-v1067",
)
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1067.tar.gz",