pub struct TriplesConfig {
pub trigger_interval_secs: u64,
pub trigger_episode_count: u32,
pub consolidate_interval_secs: u64,
pub cluster_timeout_secs: u64,
}Expand description
Cadence + batch knobs for v0.9.0’s background triple-extraction
pipeline. Persisted under [triples] in solo.config.toml.
Note: the v0.9.0 plan §6 sketched this as [llm.triples]. P1 lifted
the block to top-level [triples] because nesting under [llm]
would have required reshaping the v0.9.0 P0b LlmSettings enum
(currently #[serde(tag = "mode")]) into a flatten-style struct,
which would have churned every existing P0b serde test. Lifting
preserves the P0b scaffold unchanged while still exposing the
configuration knobs the plan intended.
Defaults match the plan’s MINOR 1 + MINOR 3 revision corrections:
trigger_interval_secs = 3600 (was 300 pre-MINOR 1, aligned with
consolidate_interval_secs); trigger_episode_count = 50.
The actual writer.rs block_on(steward.abstract_cluster) removal +
daemon-driven Steward batch dispatch is plan §4 P4, gated on P2’s
SamplingLlmClient. This struct lands the cadence knobs in P1 so
the P4 dispatcher reads its config from the right place when it
arrives.
Fields§
§trigger_interval_secs: u64Time (seconds) between background triple-extraction batches.
Aligned with consolidate_interval_secs per plan MINOR 1
correction (3600s = hourly).
trigger_episode_count: u32Number of new episodes (since last batch) above which the extraction batch fires immediately, regardless of the timer. Whichever cadence fires first wins.
consolidate_interval_secs: u64v0.9.0 P1 (plan NEW finding #7): TOML-level default for the
SWS-equivalent clustering / consolidate cadence. The CLI’s
--consolidate-interval-secs flag default is still 0
(explicit “I want this off”), but when the operator omits the
flag entirely, the daemon falls back to this value. Defaults
to 3600s (hourly), matching MINOR 1’s trigger_interval_secs
for consistent user-facing cadence semantics across the two
timers.
cluster_timeout_secs: u64v0.10.1 (P4 audit m5): per-cluster timeout (seconds) applied
to each Steward::abstract_cluster call inside
Steward::extract_triples_batch. A hung LLM backend on one
cluster no longer blocks subsequent clusters in the same
batch tick — the timeout fires, the cluster is marked as
“deferred” (skipped, will retry on the next tick), and the
next cluster proceeds.
Default 60 (matches SamplingLlmClient::with_timeout’s
recommended ceiling for LLM completions; a coalesced
per-cluster sampling call inside the writer-actor’s batch
tick should complete well within this).
A value of 0 disables the timeout — every per-cluster call
runs to natural completion. Useful for operators running on
very slow local backends (large Ollama models on CPU) who
would rather wait than defer the cluster. NOT recommended in
production: a single hung peer can stall the batch
indefinitely.
Trait Implementations§
Source§impl Clone for TriplesConfig
impl Clone for TriplesConfig
Source§fn clone(&self) -> TriplesConfig
fn clone(&self) -> TriplesConfig
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 TriplesConfig
impl Debug for TriplesConfig
Source§impl Default for TriplesConfig
impl Default for TriplesConfig
Source§impl<'de> Deserialize<'de> for TriplesConfig
impl<'de> Deserialize<'de> for TriplesConfig
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>,
Source§impl PartialEq for TriplesConfig
impl PartialEq for TriplesConfig
Source§fn eq(&self, other: &TriplesConfig) -> bool
fn eq(&self, other: &TriplesConfig) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for TriplesConfig
impl Serialize for TriplesConfig
impl Eq for TriplesConfig
impl StructuralPartialEq for TriplesConfig
Auto Trait Implementations§
impl Freeze for TriplesConfig
impl RefUnwindSafe for TriplesConfig
impl Send for TriplesConfig
impl Sync for TriplesConfig
impl Unpin for TriplesConfig
impl UnsafeUnpin for TriplesConfig
impl UnwindSafe for TriplesConfig
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,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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