ruview @ v1075
integrity
- size
- 55.6 MiB
- downloaded
- last checked
release notes
Automated release from CI pipeline
Changes: adr-106: differential privacy + biometric primitive isolation for federation (#718)
Direct extension of ADR-105. Closes both items deferred from ADR-105: (1) member-inference defence, (2) biometric primitive isolation enforcement.
Three-layer defence:
- PRIMITIVE ISOLATION (R15 binding) -- API-level tagging of on-device- only tensors. Compile-time error when ✅ tagged tensors are passed to submit_delta().
- GRADIENT CLIPPING (Abadi 2016) -- per-sample L2 norm <= C (default C=1.0) before delta computation.
- GAUSSIAN NOISE (DP-SGD) -- N(0, sigma^2C^2I) added to aggregated LoRA delta before transmission.
Privacy budget via Moments Accountant (delta=1e-5):
- Conservative (medical-grade): sigma=1.5, 50 rounds, epsilon=2.0
- Standard (typical RuView): sigma=1.0, 100 rounds, epsilon=5.0
- Lenient: sigma=0.5, 100 rounds, epsilon=8.0
On-device-only primitive list (R15-binding):
- Raw CSI window
- Gait stride frequency
- Breathing rate (per-subject)
- HRV rate signature
- RCS frequency response curve
- Limb timing vector
- Per-subject embedding centroid
Implementation budget: +300 LOC on top of ADR-105's 500 LOC = total ~800 LOC ruview-fed crate. 3-week effort estimate.
Composes:
- R3: Layer 1 blocks per-subject embedding centroid transmission
- R7: mincut compatible with DP-noised deltas (operates on noised graph)
- R12/R13 negative results: informed the noise-vs-structure-detection design choice (treat adversarial deltas as outliers from noisy distribution, not structural-detection problem)
- R14: privacy framework now has formal (epsilon, delta) backing
- R15: requirements basis = on-device-only primitive list made executable
- ADR-105: DP-SGD slots into step 4 of federation protocol
Closes the privacy story: R3 + R14 + R15 + ADR-105 + ADR-106 = complete chain from physics (R6) -> embeddings (R3) -> personalised features (R14) -> trained how (ADR-105) -> defended how (R7) -> privacy-bounded how (ADR-106).
Honest scope:
- sigma values are recommendations, not measurements (per-cog tuning needed)
- (epsilon, delta)-DP is worst-case bound; auxiliary info changes practical leakage
- Moments Accountant is conservative
- Subject-level DP not formalised (household of 4 = K=4 subjects)
- Side-channel timing leaks out of scope (future ADR)
Explicitly deferred:
- ADR-107: cross-installation federation w/ secure aggregation
Coordination: ticks/tick-15.md, no PROGRESS.md edit.
Docker Image:
ghcr.io/ruvnet/RuView:28d97e8f6a2fe787d66503d2d0d680f1b252a122
download
curl -fL -o v1075.zip https://ratatoskr.space/pkg/ruview/v1075.zip
printf '%s %s\n' '35cefd1cd2d6a2f5789c878ee5f39a1cd557fd8ff50255cced1bbb6c6065d3e1' 'v1075.zip' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v1075.zip"
$out = "v1075.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "35cefd1cd2d6a2f5789c878ee5f39a1cd557fd8ff50255cced1bbb6c6065d3e1") { throw "sha256 mismatch" }
curl -fL -o v1075.tar.gz https://ratatoskr.space/pkg/ruview/v1075.tar.gz
printf '%s %s\n' '036a606bcf49515b1fc0d74d07949c3360319ef560aaa308d37edc5816595a4b' 'v1075.tar.gz' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v1075.tar.gz"
$out = "v1075.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "036a606bcf49515b1fc0d74d07949c3360319ef560aaa308d37edc5816595a4b") { throw "sha256 mismatch" }
download via yggdrasil mesh
curl -fL -o v1075.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1075.zip
printf '%s %s\n' '35cefd1cd2d6a2f5789c878ee5f39a1cd557fd8ff50255cced1bbb6c6065d3e1' 'v1075.zip' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1075.zip"
$out = "v1075.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "35cefd1cd2d6a2f5789c878ee5f39a1cd557fd8ff50255cced1bbb6c6065d3e1") { throw "sha256 mismatch" }
curl -fL -o v1075.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1075.tar.gz
printf '%s %s\n' '036a606bcf49515b1fc0d74d07949c3360319ef560aaa308d37edc5816595a4b' 'v1075.tar.gz' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1075.tar.gz"
$out = "v1075.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "036a606bcf49515b1fc0d74d07949c3360319ef560aaa308d37edc5816595a4b") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v1075.zip | zip | 55.5 MiB |
blake3-24 fc34a16e76f7e74597b7be249a36f58c302ef6c413ce61cc
sha256 35cefd1cd2d6a2f5789c878ee5f39a1cd557fd8ff50255cced1bbb6c6065d3e1
sha1 0d6755a773c81c22e3cc78614b96c0eb261b702d
|
| v1075.tar.gz | tar.gz | 54.1 MiB |
blake3-24 9a09e46d9b1165ce4acac310b9545240f234ef72e0a3a2e5
sha256 036a606bcf49515b1fc0d74d07949c3360319ef560aaa308d37edc5816595a4b
sha1 5fa0bd0744214bde0e758ad75e96fd53fae3c7d0
|
install
http_archive(
name = "ruview",
urls = ["https://ratatoskr.space/pkg/ruview/v1075.tar.gz"],
integrity = "sha256-A2pga89JUVsfwNdNB5ScM2AxnvVgqqMI037cWBZZWks=",
strip_prefix = "ruview-v1075",
)
.url = "https://ratatoskr.space/pkg/ruview/v1075.tar.gz",
install via yggdrasil mesh
http_archive(
name = "ruview",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1075.tar.gz"],
integrity = "sha256-A2pga89JUVsfwNdNB5ScM2AxnvVgqqMI037cWBZZWks=",
strip_prefix = "ruview-v1075",
)
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1075.tar.gz",