pub struct GeometryDiagnostics {
pub schema_version: u32,
pub total_csg_failures: u64,
pub products_with_failures: u64,
pub hosts_with_openings: u64,
pub classification: ClassificationSummary,
pub failures_by_reason: Vec<ReasonCount>,
pub silent_no_ops: u64,
pub rect_fast: RectFastSummary,
pub worst_hosts: Vec<WorstHost>,
}Expand description
Aggregate CSG / opening diagnostics for one geometry pass — the public
diagnostics contract. Built by aggregate_diagnostics from drained router
data and serialized to the @ifc-lite/geometry complete event, and reused
verbatim by the native ProcessingStats path
(rust/processing/src/processor/mod.rs populates geometry_diagnostics).
wasm-free (serde only).
Fields§
§schema_version: u32Contract version (GEOMETRY_DIAGNOSTICS_SCHEMA_VERSION); serialized
unconditionally so consumers can gate on it. Deserializes to 0 when the
producer predates versioning.
total_csg_failures: u64Total CSG boolean failures (un-cut openings, emptied hosts, fallbacks).
products_with_failures: u64Distinct products (host elements) with at least one failure.
hosts_with_openings: u64Hosts that had openings processed.
classification: ClassificationSummaryOpening-classifier outcome counts.
failures_by_reason: Vec<ReasonCount>Failure counts by stable reason label, sorted desc by count.
silent_no_ops: u64Hosts where rectangular cutters ran but the triangle count was unchanged (cut attempted, geometry not modified) — the highest-signal “looks wrong but did not error” indicator.
rect_fast: RectFastSummaryrect_fast fast-path engagement.
worst_hosts: Vec<WorstHost>Bounded top-N worst-failing hosts (opt-in per-product detail).
Implementations§
Source§impl GeometryDiagnostics
impl GeometryDiagnostics
Sourcepub fn has_issues(&self) -> bool
pub fn has_issues(&self) -> bool
Whether any CSG failure or silent no-op was recorded — a cheap gate for “should this be surfaced to the user”.
Trait Implementations§
Source§impl Clone for GeometryDiagnostics
impl Clone for GeometryDiagnostics
Source§fn clone(&self) -> GeometryDiagnostics
fn clone(&self) -> GeometryDiagnostics
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for GeometryDiagnostics
impl Debug for GeometryDiagnostics
Source§impl Default for GeometryDiagnostics
impl Default for GeometryDiagnostics
Source§impl<'de> Deserialize<'de> for GeometryDiagnostics
impl<'de> Deserialize<'de> for GeometryDiagnostics
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for GeometryDiagnostics
impl RefUnwindSafe for GeometryDiagnostics
impl Send for GeometryDiagnostics
impl Sync for GeometryDiagnostics
impl Unpin for GeometryDiagnostics
impl UnsafeUnpin for GeometryDiagnostics
impl UnwindSafe for GeometryDiagnostics
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.