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

at least one non-empty {kind} reference is required

Error message

at least one non-empty {kind} reference is required

What it means

normalize_refs rejects trace/evidence reference lists that are empty or contain blank (whitespace-only) entries. It is a shared validation guard for CandidateSpec::new; it fires whenever a candidate is created without at least one meaningful `{kind}` reference string.

Source

Thrown at ecc2/src/harness_eval.rs:261

        Ok(Self::new(
            serde_json::from_str(&self.canonical_config)?,
            self.trace_refs.clone(),
            self.evidence_refs.clone(),
        )?
        .id)
    }
}

#[derive(Serialize)]
struct CanonicalCandidateArtifact<'a> {
    config: Value,
    trace_refs: &'a [String],
    evidence_refs: &'a [String],
}

fn normalize_refs(kind: &str, refs: Vec<String>) -> Result<Vec<String>> {
    if refs.is_empty() || refs.iter().any(|reference| reference.trim().is_empty()) {
        bail!("at least one non-empty {kind} reference is required");
    }
    if refs.len() > 100 || refs.iter().any(|reference| reference.len() > 4096) {
        bail!("{kind} references exceed bounded limits");
    }
    let mut normalized = refs
        .into_iter()
        .map(|reference| reference.trim().to_string())
        .collect::<Vec<_>>();
    normalized.sort();
    normalized.dedup();
    Ok(normalized)
}

fn sha256_hex(bytes: &[u8]) -> String {
    Sha256::digest(bytes)
        .iter()
        .map(|byte| format!("{byte:02x}"))
        .collect()

View on GitHub (pinned to 06c5e118c4)

Solutions

  1. Provide at least one non-empty reference of the required kind in the evidence payload.
  2. Check for whitespace-only or empty-string references that are being rejected.
Defensive patterns

Strategy: validation

When it happens

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