v0.1.1 — Hardening Sprints 1–5
What's Changed
16 commits of hardening since v0.1.0, across 5 focused sprints:
Changed
- Migrate remaining
try/except ImportErrorprobe-imports toimportlib.util.find_specwith lazy imports - Remove dead
_HAS_RUSTassignments and unused imports - Add
#[must_use]to all pure public Rust functions; enablemust_use_candidate = "warn"workspace lint - Add crate-level
//!doc comments to all 4 library crates - Refactor physical.rs Pass 1 from index loop to
iter_mut().zip()iterators - Make
LockSignature,LayerState,UPDEStatefrozen dataclasses
Fixed
- Kuramoto coupling correctness in Rust UPDE stepper
- Regime hysteresis banding (Rust + Python)
- FFI safety:
forbid(undocumented_unsafe_blocks) - CI: MSRV check, security job pins, module-linkage guard
- clippy:
eq_op,needless_range_loop, doc lints
Improved
- CI: pip + cargo caching,
rustsec/audit-checkaction, path-triggered docs workflow - Supply chain: Dependabot, publish.yml preflight gate + twine check
- Coverage: 94% → 98%, fail_under raised to 90%
- Tests: 188 Python + 124 Rust (312 total)
- Add
DocumentationandChangelogURLs to PyPI sidebar
Full Changelog: v0.1.0...v0.1.1