Repository navigation
v0.1.3
Fixed
- Deep-RCA whole-codebase debug audit: 21 confirmed bugs across 24 files (#49, #50). Highlights:
wrapper.py/strategies/stratified_ls.py: a DOF-correction truthiness bug understated reduced-chi2/quality_flagwhen theanti_degeneracyconfig section is absent but averaged/individual scaling is still active.heterodyne_core.py: the CMA-ES warm-start auto-skip compared raw (non noise-normalized) SSR/dof against a threshold meant for noise-normalized reduced chi2, silently defeating the global escape on genuinely poor basins; added a missing weights/data shape guard in_fit_cmaes.jax_backend.py:validate_backend()'s self-test usedjax.gradon a matrix-output function, sogradient_supportwas alwaysFalseeven on a working JAX install; fixed to usejacobian, resolving the downstream always-ImportErrorfallout inmodel_mixins.py.anti_degeneracy_controller.py: Layer 2 (HierarchicalOptimizer) was constructed mode-blind, reporting active even inaveraged/constantmode where its hard-coded individual-mode layout is unusable; construction is now gated on the resolved per-angle mode.hierarchical.py: outer-loop convergence was gated on absolute parameter change instead of the already-computed relative change, making convergence unreachable for parameters spanning 6+ orders of magnitude.adaptive_regularization.py: the CV-safe-divide fix sanitized the numerator as well as the denominator, silently changing the near-zero-mean fallback value and killing the L3 regularization penalty exactly where it is needed; corrected to sanitize only the denominator (applied to all three CV sites).strategies/sequential.py:combine_angle_resultsused a scalar per-angle weight forcombined_paramswhilecombined_covused an unmasked per-parameter inverse-variance weight, an internally inconsistent pairing; both now share the same masked/floored weight matrix.data/performance_engine.py:MultiLevelCachedisk writes were not serialized per key (unsynchronized"wb"opens race); fixed via atomic temp-file +os.replace.data/memory_manager.py:cleanup_virtual_memory()deleted files by a shared filename-prefix scan instead of tracking self-created files, risking deletion of another live instance's mmap-backed file.config.py:NLSQConfig.from_dict()crashed (instead of degrading to default) on an explicit YAMLnullfor non-Optional numeric fields.- GUI:
project_panel.py/result_presenter.pyrendered a NaN parameter with the same "—" sentinel as "run has no such parameter," silently defeating the comparison-view diff marker; both now render"NaN"distinctly. - Smaller fixes: an unguarded
end_frameKeyErrorinHeterodyneModel.from_config, an unboundedlscpusubprocess call (hang risk) indevice/cpu.py, an uncommented emptyexcept FileNotFoundErrorflagged by CodeQL, and unloggedfast_chi2_modesubsampling inout_of_core.py. - Verification: ruff clean, mypy clean (0 issues, 198 files), full suite green (2628 passed, +6 new regression tests, 0 failures).
Full Changelog: v0.1.2...v0.1.3