gam_inference/certificate_impls.rs
1//! [`Certificate`] implementations for the existing certificate zoo (task #16).
2//!
3//! The `impl Certificate for …` blocks that once lived here were relocated into
4//! their types' home crates to satisfy the coherence orphan rule (task #1521):
5//! the [`Certificate`](crate::certificates::Certificate) trait now
6//! lives in the neutral `gam-problem` crate, so each impl must be defined where
7//! the implemented type is owned. The gam-solve-owned certificates
8//! (`CriterionCertificate`, `CoresetCertificate`, `LogdetEnclosure`,
9//! `CollapseEvent`) carry their impls in
10//! [`gam_solve::inference::certificate_impls`]; the gam-sae-owned certificates
11//! (`EncodeResult`, `ResidualGaugeReport`, `CertificateInputs`) carry theirs in
12//! `gam_sae::certificate_impls`. The bodies moved byte-identically, so there
13//! remains exactly one source of truth for each verdict.
14//!
15//! The two margin-resolution helpers (`coreset_race_verdict`,
16//! `enclosure_margin_verdict`) descended into `gam-solve` alongside the
17//! gam-solve impls; they are re-exported here so existing
18//! `crate::certificate_impls::*` paths resolve unchanged.
19
20pub use gam_solve::inference::certificate_impls::{coreset_race_verdict, enclosure_margin_verdict};