ruview @ v1043
integrity
- size
- 55.3 MiB
- downloaded
- last checked
release notes
Automated release from CI pipeline
Changes: research(R7): Stoer-Wagner mincut detects adversarial CSI nodes 3/3 in synthetic (#704)
Premise: in a multi-node CSI mesh, all nodes see the same physical scene through slightly different multipath. Their per-window CSI vectors cluster tightly under cosine similarity. An adversarial node (replay / shift / noise injection) sits outside that cluster. The Stoer-Wagner minimum cut on the inter-node similarity graph isolates it cleanly when the cut is sharp.
Demo synthesises 4 honest nodes (one real CSI window from the paired data + per-node Gaussian noise 6 dB below signal) and 1 adversarial node under three attack modes. Cosine-similarity matrix, then Stoer-Wagner mincut, then check whether partition_B is the singleton {4} — the adversarial node.
Attack Mincut value Partition_B Isolated?
replay 3.4513 {4} YES shift 3.5724 {4} YES noise 2.5586 {4} YES
Detection rate: 3/3 = 100%.
Architectural payoff: this is the primitive that fills the stub at . ADR-103 v0.2.0 can wire it in directly. The mincut value also becomes a continuous 'mesh trustworthiness' metric for the cog-gateway dashboard.
Honest scope: the demo uses sloppy attackers. Adaptive attackers who have read this note can almost certainly evade by adding calibrated noise that keeps cosine similarity above the cluster floor. The next research step is the Stackelberg-game extension. See the 'Honest scope of this result' section in the research note.
Connections:
- R5 — top-8 saliency subcarriers are the priority list for a more-targeted per-subcarrier consistency check.
- R8 — same primitive likely works at lower SNR with RSSI-only metrics; cluster structure is preserved by the band integral.
Files:
- examples/research-sota/r7_multilink_consistency.py — pure-NumPy Stoer-Wagner mincut + synthetic-adversary harness.
- examples/research-sota/r7_multilink_consistency_results.json — full result JSON for cross-tick reproducibility.
- docs/research/sota-2026-05-22/R7-multilink-consistency.md — note.
- docs/research/sota-2026-05-22/PROGRESS.md — updated index + Done.
Docker Image:
ghcr.io/ruvnet/RuView:bb92419ccb2b910b24ccb14b52242fd00012aff5
download
curl -fL -o v1043.zip https://ratatoskr.space/pkg/ruview/v1043.zip
printf '%s %s\n' '4ec2f61e16365e180cc67aa2fb1863e2d9558a86192f03aac96c11de4d584fc9' 'v1043.zip' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v1043.zip"
$out = "v1043.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "4ec2f61e16365e180cc67aa2fb1863e2d9558a86192f03aac96c11de4d584fc9") { throw "sha256 mismatch" }
curl -fL -o v1043.tar.gz https://ratatoskr.space/pkg/ruview/v1043.tar.gz
printf '%s %s\n' '02d3d7f955a6f4c049634d076a1a14c275d4f7daae10a2323c2569b7e2a7840e' 'v1043.tar.gz' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v1043.tar.gz"
$out = "v1043.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "02d3d7f955a6f4c049634d076a1a14c275d4f7daae10a2323c2569b7e2a7840e") { throw "sha256 mismatch" }
download via yggdrasil mesh
curl -fL -o v1043.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1043.zip
printf '%s %s\n' '4ec2f61e16365e180cc67aa2fb1863e2d9558a86192f03aac96c11de4d584fc9' 'v1043.zip' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1043.zip"
$out = "v1043.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "4ec2f61e16365e180cc67aa2fb1863e2d9558a86192f03aac96c11de4d584fc9") { throw "sha256 mismatch" }
curl -fL -o v1043.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1043.tar.gz
printf '%s %s\n' '02d3d7f955a6f4c049634d076a1a14c275d4f7daae10a2323c2569b7e2a7840e' 'v1043.tar.gz' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1043.tar.gz"
$out = "v1043.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "02d3d7f955a6f4c049634d076a1a14c275d4f7daae10a2323c2569b7e2a7840e") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v1043.zip | zip | 55.2 MiB |
blake3-24 b67b253444e0254f298bc3585fe542a457ee696cd42532f2
sha256 4ec2f61e16365e180cc67aa2fb1863e2d9558a86192f03aac96c11de4d584fc9
sha1 2553716bd3b1f910266b01bbe8d796e892f8eb91
|
| v1043.tar.gz | tar.gz | 53.8 MiB |
blake3-24 558421b881858e6f565f0d7a9a8d7f8ab7b5818dab1a39a9
sha256 02d3d7f955a6f4c049634d076a1a14c275d4f7daae10a2323c2569b7e2a7840e
sha1 aaedce4abdcbc77b23db4cb90bb378bf67aa93c7
|
install
http_archive(
name = "ruview",
urls = ["https://ratatoskr.space/pkg/ruview/v1043.tar.gz"],
integrity = "sha256-AtPX+VWm9MBJY00HahoUwnXU99quEKIyPCVpt+KnhA4=",
strip_prefix = "ruview-v1043",
)
.url = "https://ratatoskr.space/pkg/ruview/v1043.tar.gz",
install via yggdrasil mesh
http_archive(
name = "ruview",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1043.tar.gz"],
integrity = "sha256-AtPX+VWm9MBJY00HahoUwnXU99quEKIyPCVpt+KnhA4=",
strip_prefix = "ruview-v1043",
)
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1043.tar.gz",