Auditamos 10 repositorios Rust abrangendo inferencia AI, agent runtimes, autenticacao, busca, servicos governamentais, aprendizado etico e emulacao — 365 arquivos fonte com 1,025+ testes. Cada .unwrap() e .expect() em producao foi classificado manualmente: 140 no total, todos invariantes algoritmicos ou padrao CLI-startup. Encontramos e corrigimos 8 problemas acionaveis: 5 riscos de panic por NaN, 1 crash na verificacao de hash-chain, 1 propagacao de erro nao controlada, e 1 unwrap ambiguo. Resultado final: 0 riscos P0, 0 unwraps acionaveis restantes.
Cada achado foi detectado, classificado, corrigido e verificado com testes.
partial_cmp().unwrap() em valores f32 gera panic quando um operando e NaN. Encontrado em sampling de tokens LLM e scoring de confianca.llm-sampler/src/lib.rs (192, 204, 225), llm-models/src/llama.rs (880), b3-core/detectors.rs (330)// Antes: .max_by(|(_, a), (_, b)| a.partial_cmp(b).unwrap()) // Depois: .max_by(|(_, a), (_, b)| a.total_cmp(b))
partial_cmp().unwrap() → total_cmp(). 88 + 88 testes passam.serde_json::from_str(&line).unwrap() em verify(). Uma linha malformada causaria panic em vez de retornar falha.logstore/src/lib.rs — linha 158// Antes: let v: serde_json::Value = serde_json::from_str(&line).unwrap(); // Depois: let v: serde_json::Value = match serde_json::from_str(&line) { Ok(v) => v, Err(_) => return Ok(false), };
Ok(false). 41 testes passam.submit(request).unwrap() em rota de execucao. Canal fechado causaria panic.runtime.rs — linha 243submit(request).unwrap(); // → submit(request)?;
.unwrap() → ? com InterventionError. 179 testes passam.llm-quant/ (5), tensor.rs (3), GGUF (2)let ptr = bytes.as_ptr() as *const f16; unsafe { std::slice::from_raw_parts(ptr, count) }; // → bytemuck::try_cast_slice(bytes)?;
bytemuck. 9 unsafe restantes documentados (Metal FFI, Send/Sync, mmap).Scanner de analise estatica proprio. 4 bugs encontrados em si mesmo.
collect_test_module_paths().count_real_unsafe() com stripping.Parser::expect() colisao de nomes. +16 falsos positivos. Fix: exigir string literal.strip_doc_comments().panic!/todo!/unimplemented! em producao nos 10 repos.partial_cmp em floats e ponto cego sistemico. 3/10 repos. total_cmp deveria ser padrao.| Padrao | Repos | Qtd | Estado |
|---|---|---|---|
partial_cmp().unwrap() | 3/10 | 5 | CORRIGIDO |
CLI .expect() em main | 3/10 | 44 | SEGURO |
RwLock poison | 1/10 | 30 | INVARIANTE |
Regex::new em Lazy | 2/10 | 21 | INVARIANTE |
unreachable!() documentado | 3/10 | 11 | DOCUMENTADO |
unsafe com SAFETY | 1/10 | 9 | DOCUMENTADO |
panic!/todo! em prod | 0/10 | 0 | PASS |
Cada unwrap classificado. Cada unsafe documentado. Cada fix verificado com testes.
Pagamento antecipado via Stripe. Sem achados acionaveis? Reembolso completo.
Pagamento antecipado. Sem achados acionaveis, reembolso completo.