Skip to content

Prepare 0.3.3 workflow and bug-fix release#54

Merged
Str4vinci merged 8 commits into
developfrom
codex/0.3.3-workflow-hardening
Jul 2, 2026
Merged

Prepare 0.3.3 workflow and bug-fix release#54
Str4vinci merged 8 commits into
developfrom
codex/0.3.3-workflow-hardening

Conversation

@Str4vinci

Copy link
Copy Markdown
Owner

Summary

  • add the serial breos sweep CLI workflow, example config, docs, and release-smoke coverage
  • expose resolved PVWatts losses in config inspection and make native battery chemistry behavior explicit
  • fix PV module gamma overrides, standalone AC clipping, sell-price inflation plumbing, the invalid NOMT module entry, and EOL default alignment
  • update roadmap priorities around model accuracy and validation

Verification

  • uv run pytest -q (254 passed)
  • uv run ruff check breos tests
  • uv run ruff format --check breos tests
  • uv run sphinx-build -W -b html docs docs/_build/html

Str4vinci added 8 commits July 1, 2026 23:11
__post_init__ unconditionally overwrote gamma_pmp with T_Pmax_pct, so the
constructor argument was silently ignored. Only default when gamma_pmp is
None, matching the alpha_sc_abs/beta_voc_abs override pattern.
pvlib.inverter.pvwatts takes pdc0 as the DC-input limit, with the AC
nameplate at eta_inv_nom * pdc0. dc_to_ac passed the intended AC nameplate
(pv_peak / loading ratio) as pdc0, so output clipped ~4% below the rating
used by InverterConfig.size_from_pv, the App energy balance, economics
CAPEX sizing, and the CLI's ac_rating_kw. Derive pdc0 = nameplate / eta so
all paths share one nameplate definition. App results are unchanged (its
DC->AC conversion goes through simulate_energy_balance).
CostParams.sell_price_inflation and the cost_analysis_projection parameter
existed, but there was no config key and neither the App runner nor the
Monte Carlo runner passed it, so the public paths always projected export
revenue with 0.0. Add the config key (default 0.0, bit-for-bit compatible),
validate it, thread it through both projection call sites, expose a
--sell-price-inflation CLI flag, and surface it in the dry-run summary.
Its datasheet points were NMOT ratings (800 W/m2, Mpp=415), but the CEC
single-diode fit in breos.cec_fit interprets Vmp/Imp/Voc/Isc as STC values,
so the entry produced silently wrong model parameters. Configs referencing
it now hit the standard "not found. Available: ..." catalog error;
Suntech_STP550S_STC is the same physical module rated at STC.
BatteryConfig defaulted to 0.80, the optimizer battery-spec fallback to 0.8,
and the App config default to 0.70 — three surfaces, two values. Align on
0.70 (the documented App default). App and CLI behavior is unchanged since
they always pass the config value explicitly; direct BatteryConfig users
relying on the implicit 0.80 now get replacement at 70% SOH and can pass
eol_percentage=0.8 to keep the old threshold.
@Str4vinci

Copy link
Copy Markdown
Owner Author

Additional update included in this PR:

@Str4vinci Str4vinci merged commit cf4aafd into develop Jul 2, 2026
4 checks passed
@Str4vinci Str4vinci deleted the codex/0.3.3-workflow-hardening branch July 2, 2026 12:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant