pub struct OpenReport {
pub schema_version_before: u32,
pub schema_version_after: u32,
pub migration_steps: Vec<MigrationStepReport>,
pub embedder_warmup_ms: u64,
pub query_backend: &'static str,
pub default_embedder: EmbedderIdentity,
pub embedder_download_ms: Option<u64>,
pub embedder_events: Vec<EmbedderEvent>,
pub embedder_mean_centering_required: bool,
pub embedder_mean_vec_pinned: bool,
pub dense_disabled: bool,
pub dense_disabled_reason: Option<String>,
}Fields§
§schema_version_before: u32§schema_version_after: u32§migration_steps: Vec<MigrationStepReport>§embedder_warmup_ms: u64§query_backend: &'static str§default_embedder: EmbedderIdentity§embedder_download_ms: Option<u64>Total wall time the loader spent materializing default-embedder weights — covers HF GETs, sha256 verification, atomic rename, parent-dir fsync (POSIX), and cache directory writes. This is the “engine open paid by the embedder” envelope, useful for SLA budgeting; it is intentionally wider than just the bytes-flowing time so callers see the full first-use cost.
Some(ms) when network bytes flowed (bytes_downloaded > 0);
None for caller-supplied embedders (loader bypassed) and on
full cache hits (no bytes flowed). For pure per-file network
analysis, use the DefaultEmbedderDownload events on
embedder_events — each event carries
the file’s bytes + sha256 + cache path.
embedder_events: Vec<EmbedderEvent>Structured loader events (dev/design/embedder.md §7). Empty for
caller-supplied embedders; populated from LoadedWeights.events
for the Default path.
embedder_mean_centering_required: boolStatic identity capability (dev/design/embedder.md §0.6). True
iff the live embedder identity is the bge-small default, which is
the only identity that ships with the EU-5a2 mean-centering apply
paths. false for fathomdb-noop and for any other
caller-supplied identity. EU-5b’s identity flip makes the Default
path return true here.
embedder_mean_vec_pinned: boolDynamic workspace state (dev/design/embedder.md §0.6). True iff
_fathomdb_embedder_profiles.mean_vec IS NOT NULL for the default
profile. EU-5a2 reads from the schema column added in migration
step 10; the value is dimension-validated (§0.2) at open time
and fails closed via EmbedderIdentityMismatch on drift.
dense_disabled: bool0.8.18 Slice 5 (#5 vector-equivalence probe, R-VEQ-6) — degraded-open
observability. true iff the open-time #5 self-check re-embedded the 45
committed probes and found a divergence beyond the frozen D4 floor (a
Phase-1 mean-centered embedding_bin sign flip OR a Phase-2 un-centered
L2 over VECTOR_EQUIVALENCE_L2_EPSILON). When true, Engine::open
SUCCEEDED but every vector-dependent arm refuses at query time with
EngineError::VectorEquivalenceMismatch; the text-only/FTS-only path stays
serviceable. The state is RE-DERIVED at every open (the probe re-runs), so
a reopen with a still-divergent backend stays degraded (never silently
re-enables dense) and a reopen with a matching backend clears it.
dense_disabled_reason: Option<String>R-VEQ-6 — human-readable reason for dense_disabled (which representation
tripped: P1 flip count or P2 L2). None when dense_disabled == false.
Trait Implementations§
Source§impl Clone for OpenReport
impl Clone for OpenReport
Source§fn clone(&self) -> OpenReport
fn clone(&self) -> OpenReport
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more