Deploy hotfix 0.19.1 (hotfix-0.19.1 at 7e77c72, PR #212) to master.
Owner go 2026-10-28 ("Release now"). Contents: TARIFF-24 + AUDIT-02 F1: battery modes get prices from a day/night tariff without a price feed; with a solar forecast a mode needs a gap of the cycle cost instead of 1.5x; a started run keeps its gap when the forecast drops. See CHANGELOG ## 0.19.1. Router T113 r3 PASS, Opus review approved, rig TEST-23 5/5.
Deploy hotfix 0.19.1 (hotfix-0.19.1 at 7e77c72, PR #212) to master.
Owner go 2026-10-28 ("Release now"). Contents: TARIFF-24 + AUDIT-02 F1: battery modes get prices from a day/night tariff without a price feed; with a solar forecast a mode needs a gap of the cycle cost instead of 1.5x; a started run keeps its gap when the forecast drops. See CHANGELOG ## 0.19.1. Router T113 r3 PASS, Opus review approved, rig TEST-23 5/5.
Merge by the owner.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01Bdqr7PiaHcBnzPituu2yTC
With battery modes on, a day/night or fixed static_profile, no price feed and
arbitrage off, tariff_refresh_wanted() was false: no tariff task, no
tariff_plan, mode_runs None, so Leftover solar / Cheap hours never charged from
the grid and the Batteries screen said "No prices". packmode.enabled(opts) is
now a third term of the gate. With price_provider off the task is pure
arithmetic on static_profile, so no HTTPS call is added.
Also: version 0.19.1, CHANGELOG entry, DECISIONS note, test_tariff24.py, and a
shorter tariff_refresh_wanted() docstring (history stays in DECISIONS).
Co-Authored-By: Claude <noreply@anthropic.com>
With battery modes on, the price gap a mode needs was always widened x1.5 by
Uncertainty.NO_WEATHER, even with a solar forecast read, so a 0.08 day/night
gap never traded at the shipped cycle cost. The doubt is now added only when
no usable forecast is read (solar_fc is None, the day plan's own test), in the
run plan (_price_runs), the charge gate (_mode_roles) and Home's mirror
(homeview.trade_verdict). The rule is one helper, arbitrage.weather_uncertainty();
the modes-off trade path (main.py cycle) keeps its literal NO_WEATHER.
DOCS "Battery modes" sentence, CHANGELOG 0.19.1 line and the DECISIONS note
follow. Tests: test_tariff24_weather.py.
Co-Authored-By: Claude <noreply@anthropic.com>
With a forecast read the gap needed is the cycle cost (0.20), not 1.5 x (0.30),
so a midday 0.21 gap now plans a grid top-up that four scenarios (sunny, Cheap
hours partly, forecast too high, refusal) are not about. They ask for cost 0.30
with the forecast; the no-forecast leg keeps 0.20 (= 0.30 widened).
Co-Authored-By: Claude <noreply@anthropic.com>
Losing the solar forecast mid-run used to widen the gap at once and stop a
grid charge (and a sensor that went unavailable for a minute stopped and
restarted it). A run under way when the forecast is lost now keeps the gap it
was planned with until it ends (Controller.weather_held(), recorded by
_wx_track() each cycle a forecast is read); the wider gap applies from the next
run. The plan key holds the hold state so the plan rebuilds when it ends. Home's
mirror (homeview.trade_verdict) asks the same weather_held(now).
Tests: test_tariff24_weather.py part 4 (going: the charge continues to the run's
end, the next run is not_worth; flap of one and two reads: no stop, no restart;
Home agrees) and a test_modes_p4.py scenario that runs a forecast day at a gap
between 1x and 1.5x the cycle cost. DECISIONS wording follows.
Co-Authored-By: Claude <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Deploy hotfix 0.19.1 (hotfix-0.19.1 at
7e77c72, PR #212) to master.Owner go 2026-10-28 ("Release now"). Contents: TARIFF-24 + AUDIT-02 F1: battery modes get prices from a day/night tariff without a price feed; with a solar forecast a mode needs a gap of the cycle cost instead of 1.5x; a started run keeps its gap when the forecast drops. See CHANGELOG ## 0.19.1. Router T113 r3 PASS, Opus review approved, rig TEST-23 5/5.
Merge by the owner.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Bdqr7PiaHcBnzPituu2yTC