pub struct InferenceBudget {
pub extract_latency_budget_ms: u32,
pub max_inference_ms_per_commit: u32,
pub max_phrases_embedded: u32,
pub max_types: u32,
pub author_rate_limit_per_commit: u32,
}Expand description
Shared primitive: wall-clock and volume caps for the inference stage of a single commit.
All fields are floor-c tunables (solution.md R6 §Constant classification table) or corpus-derived. No magic numbers.
Fields§
§extract_latency_budget_ms: u32Rolling wall-clock budget for the extract-and-embed phase of
inference, derived from 3 * rolling.p50_ingest_phrase_embed_ms
(fallback 500ms). Class a (rolling telemetry).
max_inference_ms_per_commit: u32Hard wall-clock ceiling per commit. Class c (reference
standard): 250ms = 50% of max_cooccurrence_ms = 500.
max_phrases_embedded: u32Hard ceiling on bridging-phrase embeddings per commit. Class
a (corpus-derived): min(50_000, sqrt(N_phrases) * 100).
max_types: u32Max inferred relation types emitted per commit. Class a
(corpus-derived): ceil(log2(corpus_size)).
Per-author bridging-phrase cap per commit. Class a
(corpus-derived): max(200, 0.01 * mean_phrases_per_author).
Implementations§
Source§impl InferenceBudget
impl InferenceBudget
Sourcepub const MAX_INFERENCE_MS_PER_COMMIT: u32 = 250
pub const MAX_INFERENCE_MS_PER_COMMIT: u32 = 250
Floor-c reference standard for the per-commit hard wall.
250ms. See solution.md R6 §Floor-c apparatus.
Sourcepub const FALLBACK_EXTRACT_LATENCY_MS: u32 = 500
pub const FALLBACK_EXTRACT_LATENCY_MS: u32 = 500
Fallback for extract_latency_budget_ms when rolling p50
telemetry is unavailable. See
shared/inference-budget.md §API sketch.
Sourcepub const fn conservative() -> Self
pub const fn conservative() -> Self
Conservative defaults for CI / proptest / initial runs.
Real deployments derive via a stats-aware constructor in the
ingest crate; this keeps mnem-extract free of clock or
telemetry dependencies.
Sourcepub const fn effective_ms(&self) -> u32
pub const fn effective_ms(&self) -> u32
Effective runtime budget = min(extract_latency_budget_ms, max_inference_ms_per_commit).
The hard wall is always the ceiling, even when rolling telemetry computes a higher extract budget.
Sourcepub fn effective_ms_gauge(&self) -> (&'static str, f64)
pub fn effective_ms_gauge(&self) -> (&'static str, f64)
Sample for gauge mnem_inference_budget_effective_ms.
Caller is responsible for emission; this module does not link
a metrics backend. Returning (name, value) lets the caller
use either metrics::gauge! or a custom registry.
Sourcepub fn validate(&self) -> Result<(), &'static str>
pub fn validate(&self) -> Result<(), &'static str>
Validate that the budget is internally consistent.
Returns Err with a static reason when:
max_inference_ms_per_commitis zero.extract_latency_budget_msis zero.max_phrases_embeddedis zero.
Zero-valued caps are always a programming error: they would make the entire inference pass a no-op and silently hide bugs.
Trait Implementations§
Source§impl Clone for InferenceBudget
impl Clone for InferenceBudget
Source§fn clone(&self) -> InferenceBudget
fn clone(&self) -> InferenceBudget
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 InferenceBudget
impl Debug for InferenceBudget
Source§impl Default for InferenceBudget
impl Default for InferenceBudget
Source§impl<'de> Deserialize<'de> for InferenceBudget
impl<'de> Deserialize<'de> for InferenceBudget
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 InferenceBudget
impl PartialEq for InferenceBudget
Source§fn eq(&self, other: &InferenceBudget) -> bool
fn eq(&self, other: &InferenceBudget) -> bool
self and other values to be equal, and is used by ==.