Skip to main content

Config

Struct Config 

Source
pub struct Config {
    pub thresholds: ThresholdsConfig,
    pub detection: DetectionConfig,
    pub green: GreenConfig,
    pub daemon: DaemonConfig,
    pub reporting: ReportingConfig,
}
Expand description

Top-level configuration for perf-sentinel.

Mirrors the four .perf-sentinel.toml sections ([thresholds], [detection], [green], [daemon]) into typed sub-structs so a consumer that touches only thresholds does not pull a daemon-shaped import surface. The 0.5.x flat layout was unfolded in 0.6.0; see docs/CONFIGURATION.md for the rename matrix.

Fields§

§thresholds: ThresholdsConfig

Quality-gate thresholds enforced by analyze --ci.

§detection: DetectionConfig

Per-detector knobs that drive detect::detect.

§green: GreenConfig

GreenOps / SCI-v1.0 scoring config.

§daemon: DaemonConfig

Daemon (perf-sentinel watch) runtime config: listeners, ack store, TLS, CORS, cross-trace correlation.

§reporting: ReportingConfig

Periodic disclosure report config (intent, org-config path, output destination). Drives daemon startup validation when intent = "official" and is consumed by perf-sentinel disclose.

Implementations§

Source§

impl Config

Source

pub fn validate(&self) -> Result<(), String>

Validate that config values are within acceptable bounds.

§Errors

Returns a String description of the first invalid value found. The caller (load_from_str) wraps this in ConfigError::Validation.

Source

pub fn warn_listen_addr_if_non_loopback(&self)

Emit the non-loopback security advisory if applicable.

The default is 127.0.0.1 (loopback). Advanced users may override to 0.0.0.0 for container deployments behind a reverse proxy. We warn loudly rather than rejecting, because the user’s intent is explicit (they changed the config) and a hard reject would force workarounds (e.g., iptables) that are harder to audit.

Kept separate from validate() because it is the only check that depends on CLI overrides (--listen-address), so the daemon entrypoint calls it a second time after applying the overrides. The other advisory warnings inside validate() are config-only and must be emitted exactly once, at load time, to avoid making an operator believe the daemon validates the same config twice.

Source§

impl Config

Source

pub const fn confidence(&self) -> Confidence

Map the daemon environment to a Confidence value.

Used by daemon::run to stamp findings after detection. analyze batch mode does not call this; it picks CiBatch or LocalBatch from the host CI environment in pipeline::analyze_with_traces instead (see pipeline::ci_environment_detected).

Source

pub fn carbon_context(&self) -> CarbonContext

Build a [CarbonContext] from the green config fields.

Returns a context with energy_snapshot: None. The daemon clones this and patches in the measured energy snapshot per tick; the batch pipeline uses it as-is (no scrapers in batch mode).

Trait Implementations§

Source§

impl Clone for Config

Source§

fn clone(&self) -> Config

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Config

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Config

Source§

fn default() -> Config

Returns the “default value” for a type. Read more
Source§

impl From<&Config> for DetectConfig

Source§

fn from(config: &Config) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more