affaan-m/ECC · error · anyhow::Error

minimum win rate must be between 0 and 1

Error message

minimum win rate must be between 0 and 1

What it means

PromotionPolicy::validate requires min_win_rate to be finite and within [0,1] (a probability). It fires on thresholds outside the valid range or non-finite values, keeping promotion decisions well-defined.

Source

Thrown at ecc2/src/harness_eval.rs:514

    pub passed: bool,
    pub sample_count: usize,
    pub candidate_mean: f64,
    pub baseline_mean: f64,
    pub mean_delta: f64,
    pub win_rate: f64,
    pub failures: Vec<String>,
}

impl PromotionPolicy {
    pub fn validate(self) -> Result<()> {
        if self.min_samples == 0 {
            bail!("minimum samples must be positive");
        }
        if !self.min_mean_delta.is_finite() {
            bail!("minimum mean delta must be finite");
        }
        if !self.min_win_rate.is_finite() || !(0.0..=1.0).contains(&self.min_win_rate) {
            bail!("minimum win rate must be between 0 and 1");
        }
        Ok(())
    }

    pub fn compare(self, samples: &[PairedSample]) -> Result<Comparison> {
        self.validate()?;
        if samples.is_empty() {
            bail!("samples cannot be empty");
        }
        if samples
            .iter()
            .map(|sample| sample.seed)
            .collect::<BTreeSet<_>>()
            .len()
            != samples.len()
        {
            bail!("sample seeds must be unique");
        }

View on GitHub (pinned to 06c5e118c4)

Solutions

  1. Set minimum win rate to a value between 0 and 1 inclusive.
  2. Convert a percentage (e.g. 75) to a fraction (0.75) before use.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at ecc2/src/harness_eval.rs:514 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of affaan-m/ECC@06c5e118c4 (2026-08-18). Data as JSON: /api/errors/7649881b0433c2e3. Report an issue: GitHub.