Exclude encoding::Decodable from mutation testing
What changed, and why it matters
This commit only changes the mutation-testing configuration file. It tells the mutation-testing tool to skip testing certain code patterns because the tool's generated fake failures would be meaningless, not because of any real bug or security issue. There is no change to the actual Bitcoin library code that users run.
No security action needed. This is a test-configuration-only change. Reviewers can treat it as routine CI maintenance.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff adds one line to .cargo/mutants.toml under exclude_re: ‘impl encoding::Decodable’. The commit message explains that cargo-mutants was replacing Default::default() calls inside Decodable impls with a default decoder, which happens to be semantically equivalent to the intended new() decoder, producing false-positive mutants. This is a CI/test-harness tuning change only; no source code, API, or cryptographic behavior is modified.
Changed components
.cargo/mutants.tomlInspect captured patch +1 / −0
diff --git a/.cargo/mutants.toml b/.cargo/mutants.toml
index 5334b2e1..c2de2f15 100644
--- a/.cargo/mutants.toml
+++ b/.cargo/mutants.toml
@@ -11,6 +11,7 @@ exclude_re = [
"deserialize", # Skip serde mutation tests
"serde_details::<impl de::Visitor<'_>", # Skip serde mutation tests
"Iterator", # Mutating operations in an iterator can result in an infinite loop
+ "impl encoding::Decodable", # Mutant replacing Default::default() is equivalent to returning new()
# ----------------------------------Crate-specific exclusions----------------------------------
# Units
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.