Skip to content

docs(ADR-262): RuField↔RuView integration design — bridge crate, live adapter, privacy/provenance reconciliation (Proposed)#1069

Merged
ruvnet merged 1 commit into
mainfrom
docs/adr-262-rufield-integration
Jun 14, 2026
Merged

docs(ADR-262): RuField↔RuView integration design — bridge crate, live adapter, privacy/provenance reconciliation (Proposed)#1069
ruvnet merged 1 commit into
mainfrom
docs/adr-262-rufield-integration

Conversation

@ruvnet

@ruvnet ruvnet commented Jun 14, 2026

Copy link
Copy Markdown
Owner

Summary

ADR-262 (Proposed) — researched design for integrating RuField MFS into RuView, grounded in real file:line evidence on both sides. Answers "how do we wire RuField into RuView better?" Docs-only (no code change); the implementation lands in phases per the plan.

Recommended architecture

  • Thin wifi-densepose-rufield bridge crate (anti-corruption layer) path-deps on the vendor/rufield submodule — the vendor/rvcsi pattern, since rufield crates are unpublished. RuField stays standalone; the bridge is the only coupling point.
  • Live SensingServerAdapter (not the file-based CsiReplayAdapter) on the hot path — taps the real SensingUpdate emit site joined with TrustedOutput trust state, emits one signed FieldEvent per cycle. CsiReplayAdapter stays for offline .csi.jsonl replay.
  • Vertical fusion composition — ruvsense fuses within WiFi (multi-link) → one wifi_csi FieldEvent; rufield-fusion sits above as the cross-modality graph. They compose, not conflict.
  • One signer — reuse RuView's existing cog-ha-matter SHA-256+Ed25519 chain (already RuField's exact crypto) for the ProvenanceReceipt; keep BLAKE3 engine witness as an internal hashed field.

The crux — privacy/provenance reconciliation

One canonical model + a documented lossy mapping (not two parallel schemes). RuView's effective_class (live governed cycle) is source-of-truth → mapped to RuField P0–P5 at egress.

Honest finding that drives the design: RuView has two privacy enums (PrivacyClass ×4, PrivacyMode ×5) and three witness mechanisms across two hash algorithms (BLAKE3 engine-cycle live, BLAKE3 BFLD dormant, SHA-256+Ed25519 cog-ha-matter standalone) — none mapping 1:1 onto P0–P5. The trap (with a dedicated test gate): RuView's Derived privacy byte is 1, numerically below Anonymous=2, yet it carries identity embeddings — so a naive byte-mapping would leak identity as low-privacy P1. The bridge must map by information content (Derived → P4/P5), never by byte value.

Phased plan (each independently shippable + gated)

  • P1SensingServerAdapter → signed FieldEvents (gate: round-trip + is_fusable + ingest accept)
  • P2 — privacy/provenance bridge (gates: Derived→P4/P5 never P1, privacy monotonicity, ed25519 verify)
  • P3 — surface on /ws/field + add an ingest route to rufield-viewer
  • P4 — second modality (rvcsi/mmWave) → cross-modal fusion above ruvsense

Honest scope

This is plumbing architecture, not accuracy. RuField v0.1 is synthetic by its own admission; RuView's only real-CSI rufield path is unlabeled replay + single-link field_localize that can't resolve true room position. The ADR claims only architecture (testable by round-trip / monotonicity / signature gates) and explicitly disclaims accuracy.

Status: Proposed — opens the integration; implementation is the phased follow-up.

🤖 Generated with claude-flow

Researched integration ADR: thin wifi-densepose-rufield bridge crate
(rvcsi pattern), live SensingServerAdapter emitting signed FieldEvents,
vertical fusion composition (ruvsense within-WiFi → rufield cross-modal),
and ONE canonical privacy/provenance model (RuView effective_class →
RuField P0-P5 at egress; reuse cog-ha-matter SHA-256+Ed25519 receipt).
Key finding: RuView has 2 privacy enums + 3 witness mechanisms; the
Derived(byte=1)<Anonymous(byte=2)-but-carries-identity trap means the
bridge must map by information content, not byte value. Plumbing
architecture, not accuracy (real-CSI is unlabeled replay today).

Co-Authored-By: claude-flow <ruv@ruv.net>
@ruvnet ruvnet merged commit faca053 into main Jun 14, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant