ruview @ v1261
integrity
- size
- 59.8 MiB
- downloaded
- last checked
release notes
Automated release from CI pipeline
Changes: feat(adr-118/p1.3): Sink marker traits + PrivacyClass::try_from (17/17 GREEN)
Iter 3. Lands the structural enforcement of ADR-118 invariant I1 ("raw BFI never exits the node") and ADR-120 §2.2 ("Sink marker types").
Added:
- src/sink.rs:
- Sink trait with MIN_CLASS and KIND associated constants
- LocalSink (Raw OK), NetworkSink (Derived+ only), MatterSink (Anonymous+)
- Hierarchy: MatterSink: NetworkSink (every Matter sink is a NetworkSink)
- check_class(class) runtime gate, returns PrivacyViolation{reason:KIND}
- Zero-sized kind tags: LocalKind / NetworkKind / MatterKind
- PrivacyClass::as_u8() const helper
- TryFrom for PrivacyClass (0..=3 valid; 4..=255 → InvalidPrivacyClass)
- BfldError::InvalidPrivacyClass(u8) variant
tests/sink_enforcement.rs adds 8 tests: privacy_class_try_from_accepts_all_four_valid_bytes privacy_class_try_from_rejects_out_of_range_bytes privacy_class_byte_roundtrip_is_stable local_sink_accepts_all_classes network_sink_rejects_raw_frames network_sink_accepts_derived_anonymous_restricted matter_sink_rejects_raw_and_derived matter_sink_accepts_anonymous_and_restricted
Out of scope (next iter):
- BfldFrame (header + payload + section length-prefixes + CRC32 over payload)
— needs the
crccrate dependency. - PrivacyGate::demote(frame, target_class) transformer (ADR-120 §2.4).
- compile-fail test that proves a sink-trait bound rejects Raw at compile
time — needs
trybuildintegration; deferred to a separate iter.
cargo test -p wifi-densepose-bfld --no-default-features → 17 passed, 0 failed (3 frame_header_size + 6 header_roundtrip + 8 sink_enforcement)
Co-Authored-By: claude-flow ruv@ruv.net
Docker Image:
ghcr.io/ruvnet/RuView:eb996294fb14b336a716f8dc961acb8de73a91c7
download
curl -fL -o v1261.zip https://ratatoskr.space/pkg/ruview/v1261.zip
printf '%s %s\n' 'a66e1bd86fd50adf374ab717fc5e9334180f2a267713c5dc4f308dac7389e92b' 'v1261.zip' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v1261.zip"
$out = "v1261.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "a66e1bd86fd50adf374ab717fc5e9334180f2a267713c5dc4f308dac7389e92b") { throw "sha256 mismatch" }
curl -fL -o v1261.tar.gz https://ratatoskr.space/pkg/ruview/v1261.tar.gz
printf '%s %s\n' '1da055b4646265c3abea7856cfad5890d2362e96005c614786e9b46e7b1722c2' 'v1261.tar.gz' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v1261.tar.gz"
$out = "v1261.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "1da055b4646265c3abea7856cfad5890d2362e96005c614786e9b46e7b1722c2") { throw "sha256 mismatch" }
download via yggdrasil mesh
curl -fL -o v1261.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1261.zip
printf '%s %s\n' 'a66e1bd86fd50adf374ab717fc5e9334180f2a267713c5dc4f308dac7389e92b' 'v1261.zip' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1261.zip"
$out = "v1261.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "a66e1bd86fd50adf374ab717fc5e9334180f2a267713c5dc4f308dac7389e92b") { throw "sha256 mismatch" }
curl -fL -o v1261.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1261.tar.gz
printf '%s %s\n' '1da055b4646265c3abea7856cfad5890d2362e96005c614786e9b46e7b1722c2' 'v1261.tar.gz' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1261.tar.gz"
$out = "v1261.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "1da055b4646265c3abea7856cfad5890d2362e96005c614786e9b46e7b1722c2") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v1261.zip | zip | 59.8 MiB |
blake3-24 b84a8e968ee5f911256bf62394c15088b81ee8a01f49cf0c
sha256 a66e1bd86fd50adf374ab717fc5e9334180f2a267713c5dc4f308dac7389e92b
sha1 cc16202524d8311352924ff5e746aa51db18eadc
|
| v1261.tar.gz | tar.gz | 58.3 MiB |
blake3-24 f97aa7eb59e3eb8df3b7d019c51dcbd2b9a3b8bb12ef1a5c
sha256 1da055b4646265c3abea7856cfad5890d2362e96005c614786e9b46e7b1722c2
sha1 65037612de26c9e60d7d2ab0b53eacf14a67cb65
|
install
http_archive(
name = "ruview",
urls = ["https://ratatoskr.space/pkg/ruview/v1261.tar.gz"],
integrity = "sha256-HaBVtGRiZcOr6nhWz61YkNI2LpYAXGFHhum0bnsXIsI=",
strip_prefix = "ruview-v1261",
)
.url = "https://ratatoskr.space/pkg/ruview/v1261.tar.gz",
install via yggdrasil mesh
http_archive(
name = "ruview",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1261.tar.gz"],
integrity = "sha256-HaBVtGRiZcOr6nhWz61YkNI2LpYAXGFHhum0bnsXIsI=",
strip_prefix = "ruview-v1261",
)
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1261.tar.gz",