Purpose
0.5.1 prepares BREOS for the 0.6.0 cleanup without removing compatibility yet. It also tightens configuration validation, consolidates internal configuration metadata, and aligns a public battery-degradation helper with the simulation path.
Highlights
A clear 0.6.0 deprecation window. The unused breos.numba_kernels module and breos[fast] extra, the article-scoped Wöhler/Miner comparison subsystem, and six undocumented orphaned helpers now emit targeted DeprecationWarnings when used. They keep their 0.5.x signatures and behaviour and are scheduled for removal in 0.6.0; the migration guide contains the complete inventory.
Configuration consistency. App configuration metadata now lives in one declarative registry that derives defaults, accepted keys, CLI options, and CLI override handling. Historical ordering, aliases, precedence, validation messages, and simulation results are preserved.
Sweep validation fixed. validate-config now accepts the documented [sweep] section, rejects empty or malformed sweep grids, and regression-tests every shipped example configuration.
Battery helper consistency. resistance_to_efficiency() now uses the same mapping as the live resistance-fade simulation path, preserving configured charge/discharge asymmetry. Simulation results are unchanged because the runtime path already used this mapping.
Compatibility and provenance
The article lifetime comparison remains available throughout 0.5.x, but its wording now accurately describes it as a documentation-derived BREOS approximation rather than Polysun output or source code. Generated plot legends use “documentation-derived baseline.”
Python 3.14 was already in the CI matrix and has run successfully since June; this release also makes that job a required branch-protection check alongside Python 3.11–3.13.
Validation
The full suite passed with 799 tests, plus both slow validation tests. Ruff, formatting, strict Sphinx documentation, release artifact verification, and the Python 3.11–3.14 CI matrix all passed. The validation baseline changed only in its version and date stamps; all numerical outputs are identical.
What's Changed
- Sync 0.5.0 release back to develop by @Str4vinci in #109
- Accept the documented
[sweep]config section by @Str4vinci in #110 - Verify releases with uv instead of pip in the checklist by @Str4vinci in #111
- Plan economic scenario and sensitivity analysis by @Str4vinci in #112
- Record the 0.5.x dead code and bloat cleanup plan by @Str4vinci in #113
- Consolidate resistance-fade efficiency mapping by @Str4vinci in #114
- Centralize App configuration metadata by @Str4vinci in #115
- Deprecate cleanup candidates for 0.6.0 by @Str4vinci in #116
- Prepare 0.5.1 release by @Str4vinci in #117
Full Changelog: v0.5.0...v0.5.1