{"record":{"id":"4ea6f68f8a57e405","repo":"affaan-m/ECC","slug":"candidate-configuration-exceeds-1-mib","errorCode":null,"errorMessage":"candidate configuration exceeds 1 MiB","messagePattern":"candidate configuration exceeds 1 MiB","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"ecc2/src/harness_eval.rs","lineNumber":198,"sourceCode":"use serde_json::Value;\nuse sha2::{Digest, Sha256};\nuse std::collections::{BTreeMap, BTreeSet};\n\n#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]\npub struct CandidateSpec {\n    pub id: String,\n    pub canonical_config: String,\n    pub trace_refs: Vec<String>,\n    pub evidence_refs: Vec<String>,\n}\n\nimpl CandidateSpec {\n    pub fn new(config: Value, trace_refs: Vec<String>, evidence_refs: Vec<String>) -> Result<Self> {\n        let trace_refs = normalize_refs(\"trace\", trace_refs)?;\n        let evidence_refs = normalize_refs(\"evidence\", evidence_refs)?;\n        let canonical_config = serde_json::to_string(&canonicalize(config))?;\n        if canonical_config.len() > 1024 * 1024 {\n            bail!(\"candidate configuration exceeds 1 MiB\");\n        }\n        let artifact = serde_json::to_string(&CanonicalCandidateArtifact {\n            config: serde_json::from_str(&canonical_config)?,\n            trace_refs: &trace_refs,\n            evidence_refs: &evidence_refs,\n        })?;\n        let id = sha256_hex(artifact.as_bytes());\n        Ok(Self {\n            id,\n            canonical_config,\n            trace_refs,\n            evidence_refs,\n        })\n    }\n\n    pub fn verify_integrity(&self) -> Result<()> {\n        self.verify_persisted_id(&self.id)?;\n        if self.id != self.id_for_v2()? {","sourceCodeStart":180,"sourceCodeEnd":216,"githubUrl":"https://github.com/affaan-m/ECC/blob/06c5e118c4d3e6c3b7f9445f973a2194c82de193/ecc2/src/harness_eval.rs#L180-L216","documentation":"CandidateSpec::new rejects candidate configurations whose canonical JSON serialization exceeds 1 MiB. This is a bounded-input guard so a single candidate config cannot bloat the evidence store; it fires on oversized `config` values passed to the constructor.","triggerScenarios":"Thrown at ecc2/src/harness_eval.rs:198 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Reduce the candidate configuration below 1 MiB by removing embedded blobs or trimming redundant entries.","Move large payloads out of the configuration and reference them by address instead."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"06c5e118c4d3e6c3b7f9445f973a2194c82de193","analyzedAt":"2026-08-18T11:27:13.915Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}