diff --git a/v2/crates/wifi-densepose-pointcloud/src/camera.rs b/v2/crates/wifi-densepose-pointcloud/src/camera.rs
index 1ee83fac..ff150772 100644
--- a/v2/crates/wifi-densepose-pointcloud/src/camera.rs
+++ b/v2/crates/wifi-densepose-pointcloud/src/camera.rs
@@ -188,6 +188,8 @@ Thread.sleep(forTimeInterval: 3)"#,
bail!("macOS camera capture requires GUI session with camera permission")
}
+// Used only by the macOS capture path above; dead on other targets.
+#[allow(dead_code)]
fn decode_jpeg_to_rgb(path: &PathBuf, _width: u32, _height: u32) -> Result {
let data = std::fs::read(path)?;
let _ = std::fs::remove_file(path);
diff --git a/v2/crates/wifi-densepose-ruvector/src/viewpoint/coherence.rs b/v2/crates/wifi-densepose-ruvector/src/viewpoint/coherence.rs
index 1c05bdbf..3543ed78 100644
--- a/v2/crates/wifi-densepose-ruvector/src/viewpoint/coherence.rs
+++ b/v2/crates/wifi-densepose-ruvector/src/viewpoint/coherence.rs
@@ -261,9 +261,15 @@ pub enum ClockGateDecision {
/// Both terms pass: node admitted at full weight.
Admit,
/// Phase OK but clock degraded: evidence-only, NO environment/model update.
- MonitorOnly { clock_quality: f32 },
+ MonitorOnly {
+ /// Combined clock-quality score in [0, 1] (dispersion × age terms).
+ clock_quality: f32,
+ },
/// Either term fails hard: node excluded this cycle.
- Reject { reason: ClockRejectReason },
+ Reject {
+ /// Which hard term failed (phase, dispersion, or age).
+ reason: ClockRejectReason,
+ },
}
/// Clock-quality gate: combines the phase [`CoherenceGate`] with clock
diff --git a/v2/crates/wifi-densepose-sensing-server/src/matter/clusters.rs b/v2/crates/wifi-densepose-sensing-server/src/matter/clusters.rs
index f5153871..51331b45 100644
--- a/v2/crates/wifi-densepose-sensing-server/src/matter/clusters.rs
+++ b/v2/crates/wifi-densepose-sensing-server/src/matter/clusters.rs
@@ -145,6 +145,8 @@ pub fn matter_mapping(entity: EntityKind) -> Option {
}
/// True iff the entity has a Matter exposure on a current spec cluster.
+// P2 Matter-publisher API surface; real Matter exposure is deferred (ADR-159 §A5).
+#[allow(dead_code)]
pub fn entity_on_matter(entity: EntityKind) -> bool {
matter_mapping(entity).is_some()
}
@@ -152,6 +154,8 @@ pub fn entity_on_matter(entity: EntityKind) -> bool {
/// Compute the next available endpoint ID for a node-scoped entity,
/// given a starting offset (the bridge's first child endpoint). Used
/// by the publisher to assign per-primitive endpoints deterministically.
+// P2 Matter-publisher API surface; real Matter exposure is deferred (ADR-159 §A5).
+#[allow(dead_code)]
pub fn next_endpoint(base: u16, primitive_index: u16) -> u16 {
base.saturating_add(primitive_index)
}