pub struct StartupOutcome {
pub data_dir: PathBuf,
pub db_path: PathBuf,
pub config: SoloConfig,
pub schema_version: u32,
pub hnsw: Arc<dyn VectorIndex + Send + Sync>,
pub embedder_id: i64,
pub replay: ReplayReport,
pub drift: DriftReport,
pub used_bak_snapshot: bool,
pub started_fresh: bool,
pub rebuild: RebuildReport,
}Expand description
What the startup chain hands back to the daemon main. Mostly opaque because the daemon doesn’t need to inspect any of this — it just feeds the writer actor + reader pool.
Fields§
§data_dir: PathBuf§db_path: PathBuf§config: SoloConfig§schema_version: u32Schema version after migrations. May equal pre-startup version if nothing was pending.
hnsw: Arc<dyn VectorIndex + Send + Sync>The HNSW. Wrapped in Arc<dyn VectorIndex> so it can be shared with
the read pool per ADR-0003 §O2.
embedder_id: i64Resolved embedders.embedder_id for the persisted config’s
embedder identity. Lazy-inserted on first daemon start; cached
in the WriterActor for every subsequent INSERT INTO embeddings.
replay: ReplayReportPending-index replay statistics.
drift: DriftReportDrift between SQL episodes WHERE tier='hot' and HNSW length, after
replay. Daemon decides what to do (warn / refuse / rebuild) — startup
itself only reports.
used_bak_snapshot: boolTrue if we fell back to the .bak snapshot.
started_fresh: boolTrue if no usable snapshot was found and we started with a fresh index.
(Independent of rebuild below — started_fresh && rebuild.rows_added > 0
means the snapshot was missing but the index was rebuilt from the
embeddings table.)
rebuild: RebuildReportStats from rebuild_hnsw_from_sql after a missing-snapshot
fallback. All zeros in the steady state (snapshot loaded fine) and
after solo init (no rows yet). Non-zero only after solo reembed
has wiped the snapshots. rows_skipped > 0 means the rebuild
degraded around corrupt rows — recall coverage will be incomplete
for those rowids until the user investigates and re-runs reembed.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for StartupOutcome
impl !RefUnwindSafe for StartupOutcome
impl Send for StartupOutcome
impl Sync for StartupOutcome
impl Unpin for StartupOutcome
impl UnsafeUnpin for StartupOutcome
impl !UnwindSafe for StartupOutcome
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 more