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

scores must be finite and between 0 and 1

Error message

scores must be finite and between 0 and 1

What it means

compare validates every sample's candidate_score and baseline_score are finite and within [0,1]. It fires when any paired sample contains NaN, infinity, or an out-of-range score, preventing corrupt measurements from driving promotion decisions.

Source

Thrown at ecc2/src/harness_eval.rs:539

        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");
        }
        if samples.iter().any(|s| {
            !s.candidate_score.is_finite()
                || !s.baseline_score.is_finite()
                || !(0.0..=1.0).contains(&s.candidate_score)
                || !(0.0..=1.0).contains(&s.baseline_score)
        }) {
            bail!("scores must be finite and between 0 and 1");
        }
        let count = samples.len();
        let candidate_mean = samples.iter().map(|s| s.candidate_score).sum::<f64>() / count as f64;
        let baseline_mean = samples.iter().map(|s| s.baseline_score).sum::<f64>() / count as f64;
        let mean_delta = candidate_mean - baseline_mean;
        let win_rate = samples
            .iter()
            .filter(|s| s.candidate_score > s.baseline_score)
            .count() as f64
            / count as f64;
        let mut failures = Vec::new();
        if count < self.min_samples {
            failures.push(format!(
                "minimum sample count is {}, got {count}",
                self.min_samples
            ));
        }
        if mean_delta < self.min_mean_delta {

View on GitHub (pinned to 06c5e118c4)

Solutions

  1. Ensure every score is a finite number within [0, 1].
  2. Normalize or clamp scores at the producer and guard against NaN/Infinity.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at ecc2/src/harness_eval.rs:539 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/6a06a448f45097b2. Report an issue: GitHub.