MAINT-25: the Home plan shows no cycle during the 7-day back-off
checks / unit (pull_request) Successful in 27m21s
infra-pin / fresh (pull_request) Successful in 1s

homeview.maintenance_runs() ignored backoff_until(); it drew a cycle every
night of the wait. Now no run and a plain line (EN, NL). test_maint25.py.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
glenn schrooyen
2026-11-12 09:57:56 +01:00
co-authored by Claude
parent b80cfa969f
commit de0790e62d
5 changed files with 223 additions and 1 deletions
@@ -1,6 +1,6 @@
# MAINT-24 - a started maintenance charge gets the cheap night
**Status: for review.** Tests: `test_maint24.py` (`test_opt20.py`'s `ch_ch_maint` digest moved with it). No option added; the MAINT-13
**Status: for review.** Also fixes MAINT-25 (last section). Tests: `test_maint24.py` (`test_opt20.py`'s `ch_ch_maint` digest moved with it). No option added; the MAINT-13
timeout numbers are unchanged. Folds in SAFETY-80. SAFETY-111 stays on its card (section 3).
**What happened (live 0.21.0, A, 2026-11-08..11).** A sat in its maintenance
@@ -68,3 +68,14 @@ gives.
The MAINT-13 timeout, the peak aim itself, the month peak, `P_MAINT_SHAPE` and
`P_ARBITRAGE`. The Home card for B does not say "the other battery is cycling"
for a CHARGE phase (`other_cycle` reads "emptying"); that is a wording card.
## MAINT-25: the Home plan honours the 7-day back-off
After a failed cycle `wants_start()` waits 7 days (MAINT-13, `backoff_until()`),
but `homeview.maintenance_runs()` only asked `due()`, so the plan drew a cycle at
the start hour every night of the wait. During the back-off it now draws no run
for that battery and shows one line instead: "Battery A: the monthly cycle waits
until 19 November." (Dutch: "... wacht tot 19 november."). A cycle completed
after the failure ends it, as in `backoff_until()`. The other battery is planned
as before. Tests: `test_maint25.py` (N=1 and N=2, 1 day, 7 days, completion
before and after the failure, Dutch).