github ruvnet/RuView v1261
Release v1261

3 hours ago

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 crc crate 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 trybuild integration; 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

Don't miss a new RuView release

NewReleases is sending notifications on new releases.