{"record":{"id":"9e9d9b1b985b8842","repo":"zed-industries/zed","slug":"min-dist-should-not-be-empty-when-selected-len","errorCode":null,"errorMessage":"min_dist should not be empty when selected.len() < k","messagePattern":"min_dist should not be empty when selected\\.len\\(\\) < k","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/edit_prediction_cli/src/main.rs","lineNumber":769,"sourceCode":"\nfn greedy_max_min_diverse(members: &[usize], signatures: &[Vec<u32>], k: usize) -> Vec<usize> {\n    if members.len() <= k {\n        return members.to_vec();\n    }\n\n    let mut selected = vec![members[0]];\n    let mut min_dist: HashMap<usize, f64> = HashMap::default();\n    for &member in &members[1..] {\n        let dist = 1.0 - compute_minhash_similarity(&signatures[selected[0]], &signatures[member]);\n        min_dist.insert(member, dist);\n    }\n\n    while selected.len() < k {\n        let &best = min_dist\n            .iter()\n            .max_by(|(_, a), (_, b)| a.partial_cmp(b).unwrap_or(std::cmp::Ordering::Equal))\n            .map(|(id, _)| id)\n            .expect(\"min_dist should not be empty when selected.len() < k\");\n        selected.push(best);\n        min_dist.remove(&best);\n\n        let best_sig = &signatures[best];\n        for (member, current_min) in min_dist.iter_mut() {\n            let dist = 1.0 - compute_minhash_similarity(best_sig, &signatures[*member]);\n            if dist < *current_min {\n                *current_min = dist;\n            }\n        }\n    }\n\n    selected\n}\n\nfn code_token_ngrams(code: &str, ngram_size: usize) -> Vec<String> {\n    let tokens: Vec<&str> = word_diff::tokenize(code)\n        .into_iter()","sourceCodeStart":751,"sourceCodeEnd":787,"githubUrl":"https://github.com/zed-industries/zed/blob/f4178619acd0d47ea1f76a2025c42962c6d6638c/crates/edit_prediction_cli/src/main.rs#L751-L787","documentation":"Internal assertion in greedy_max_min_diverse (edit prediction CLI sampling): when fewer than k members are selected, the min_dist candidate map must be non-empty, otherwise the greedy diverse-sampling loop cannot pick the next member. Firing indicates an empty input slice or an indexing bug.","triggerScenarios":"Thrown at crates/edit_prediction_cli/src/main.rs:769 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the input member list has more than k elements before calling","Check that signatures are computed for all members before sampling","File a bug with the dataset size that triggered it"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"f4178619acd0d47ea1f76a2025c42962c6d6638c","analyzedAt":"2026-08-20T19:29:52.058Z","contentChangedAt":"2026-08-20T19:29:52.058Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}