Files
ruvnet--RuView/v2/crates/wifi-densepose-worldgraph/src/lib.rs
T
ruv 521a012d84 feat(worldgraph): ADR-139 WorldGraph environmental digital twin (#843)
New crate wifi-densepose-worldgraph:
- model.rs: WorldNode (10 kinds) + WorldEdge (7 relations) as serde enums (no
  trait objects → deterministic RVF persistence); WorldId, EnuPoint,
  ZoneBoundsEnu (with point-in-bounds), SemanticProvenance (house-rule tuple)
- graph.rs: WorldGraph over petgraph StableDiGraph; upsert/add_edge/neighbors,
  room_for_area (HomeCore area_id linkage), observed_by/contents_of queries,
  add_semantic_state (append-with-provenance DerivedFrom), add_contradiction
  (both beliefs retained), apply_privacy_mode → PrivacyRollup, JSON persistence
- 7 tests (upsert/replace, linkage, unknown-endpoint, location, provenance+
  contradiction, privacy rollup, deterministic JSON round-trip)
- workspace 0 errors

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-05-28 23:14:29 -04:00

31 lines
1.3 KiB
Rust

//! # WiFi-DensePose WorldGraph (ADR-139)
//!
//! The environmental digital twin for the RuView streaming engine: a typed
//! [`petgraph`] `StableDiGraph` of rooms, zones, walls, doorways, sensors, RF
//! links, person tracks, object anchors, events, and semantic-state beliefs,
//! connected by typed relations (observes / located_in / adjacent_to /
//! supports / contradicts / derived_from / privacy_limited_by).
//!
//! It sits downstream of fusion (ADR-137) — storing fused *beliefs*, not raw
//! frames — and upstream of the semantic/agent layer (ADR-140) and evaluation
//! harness (ADR-145). Every [`model::WorldNode::SemanticState`] carries
//! mandatory [`model::SemanticProvenance`] (signal evidence + model +
//! calibration + privacy decision), honouring the house rule structurally.
//!
//! Persistence is via [`graph::WorldGraph::to_json`] /
//! [`graph::WorldGraph::from_json`] (the RVF payload); the serde-enum node/edge
//! model guarantees a deterministic, schema-versioned wire layout.
#![forbid(unsafe_code)]
pub mod error;
pub mod graph;
pub mod model;
pub use error::WorldGraphError;
pub use graph::{PrivacyRollup, WorldGraph, WorldGraphSnapshot, SCHEMA_VERSION};
pub use model::{
AnchorKind, EnuPoint, SemanticProvenance, SensorModality, WorldEdge, WorldId, WorldNode,
ZoneBoundsEnu,
};