Files
symclaw/IMPROVEMENT_SCAN.md
T

2.6 KiB
Raw Blame History

Improvement Scan -- 2026-05-05

Branch

research/scan-2026-05-05-symclaw-1

Summary

Eliminated 39 latent clippy::redundant_clone warnings across 19 files in 5 crates, plus a follow-up redundant_field_names, plus one partial_cmp / unwrap_or(Equal) fall-back that should have been total_cmp from the start.

Changes

1. Eliminate clippy::redundant_clone (37 sites, 19 files)

cargo clippy --fix --workspace --no-deps was applied for redundant_clone across the workspace. The lint flagged values that were dropped without further use (or never mutated), so removing the .clone() is a behaviour-preserving optimisation that also clarifies ownership.

  • crates/symclaw-core/src/codegen.rs (3): name.to_string() etc.
  • crates/symclaw-core/src/ode/mod.rs (6): expression-tree clones in Bernoulli / linear-1st-order ODE construction.
  • crates/symclaw-core/src/solve/mod.rs (6): Cramer-rule and quadratic formula intermediates, plus int_coeffs.clone() in rational-roots search.
  • crates/symclaw-core/src/transforms/mod.rs (2), crates/symclaw-core/src/poly/{mod.rs,rational.rs} (3), crates/symclaw-core/src/proof.rs (2), crates/symclaw-core/src/precision.rs (2), crates/symclaw-core/src/integrate_advanced/{mod.rs,rational.rs} (2), crates/symclaw-core/src/{partial_fraction,summation,units,analyze, compiled_eval,eval}.rs (1 each).
  • crates/symclaw-cli/src/commands.rs, crates/symclaw-python/src/lib.rs, crates/symclaw-skill/src/handlers_advanced.rs, crates/symclaw-wasm/src/lib.rs (1 each).

2. Fix clippy::redundant_field_names introduced by step 1 -- crates/symclaw-core/src/proof.rs:341

After dropping the redundant .clone() on from, the struct literal became from: from, which is now collapsed to the field-shorthand from.

3. Replace partial_cmp(...).unwrap_or(Ordering::Equal) with total_cmp -- crates/symclaw-core/src/discover.rs:172

min_by over penalized_fitness(...) (a f64) was using partial_cmp(...).unwrap_or(Equal) as a NaN fall-back. Symbolic-regression fitness is exactly the kind of expression that can produce NaN under bad candidates, and silently mapping NaN to Equal lets a NaN-fitness candidate masquerade as the best-so-far. f64::total_cmp orders NaN deterministically at the high end, so a NaN is never picked as min. Net: NaN-safe ordering with one fewer fallible call.

Verification

  • cargo clippy --workspace -- -D warnings -- clean (0 warnings, 0 errors)
  • cargo test -p symclaw-core -- 1279 passed (lib) + 56 passed (integration); 0 failed across the suite.

Files changed

21 files, +38 / 39.