This website requires JavaScript.
Explore
Help
Register
Sign In
admin
/
goodwe-addon
Watch
1
Star
0
Fork
0
Code
Issues
Pull Requests
Actions
Packages
Projects
Releases
Wiki
Activity
Files
safety-90-peak-guard-gap
goodwe-addon
/
goodwe_controller
T
Add File
New File
Upload File
Apply Patch
Copy Permalink
Download directory as ZIP
Download directory as TAR.GZ
Delete Directory
History
Claude (SAFETY-90 review)
24dbbd18ad
checks / unit (pull_request)
Successful in 31m12s
Details
infra-pin / fresh (pull_request)
Successful in 1s
Details
SAFETY-90 review: test that a second gap does not price the first one down
...
Co-Authored-By: Claude Opus 5.5 <
noreply@anthropic.com
>
2026-10-05 12:39:28 +02:00
..
app
SAFETY-90 review: count the start-up seconds like a gap
2026-10-05 12:24:33 +02:00
DECISIONS
SAFETY-90 review: count the start-up seconds like a gap
2026-10-05 12:24:33 +02:00
scenarios
OPT-11 P4: solar forecast and day plan
2026-09-29 19:29:32 +02:00
tools
SAFETY-97: "gives nothing" is graded against each battery's idle reading
2026-10-04 12:21:24 +02:00
translations
OPT-11 P4: solar forecast and day plan
2026-09-29 19:29:32 +02:00
build.yaml
Packaged as a Home Assistant add-on, with a field guide
2026-08-23 01:15:25 +02:00
CHANGELOG.md
Release 0.15.0: correct the SAFETY-94/97 row, add the ±170 W known issue
2026-10-05 01:23:03 +02:00
config.yaml
Release 0.15.0: bump version and close the CHANGELOG section
2026-10-05 00:48:04 +02:00
Dockerfile
Six silent failures found by installing this on a live system
2026-08-23 02:25:58 +02:00
DOCS.md
SAFETY-90 review: count the start-up seconds like a gap
2026-10-05 12:24:33 +02:00
MUTATION.md
TEL-12: several PV inverters, and one absent member is an absent TOTAL
2026-09-24 22:13:25 +02:00
named_absence.py
TEST-26: a missing value in a check is a named FAIL, not a traceback
2026-09-25 00:06:58 +02:00
requirements.txt
Six silent failures found by installing this on a live system
2026-08-23 02:25:58 +02:00
run.sh
Six silent failures found by installing this on a live system
2026-08-23 02:25:58 +02:00
test_alloc.py
OPT-11 P1: per-battery mode limits, on/off, solar order
2026-09-28 18:51:29 +02:00
test_arbiter.py
SAFETY-86 review: hold the site at the peak floor while a HOLD gives
2026-10-01 02:00:20 +02:00
test_arbitrage.py
SAFETY-79: peak guard keeps a margin below the limit
2026-09-28 23:09:39 +02:00
test_batteries_screen.py
Merge release/1.0 (SAFETY-78,
#154
) into opt11-p4-solar-forecast
2026-09-29 22:37:09 +02:00
test_bytecode.py
TEST-15: purge the bytecode cache before a mutation run, not after
2026-09-01 02:07:09 +02:00
test_ci_gate.py
TOOL-9: pin checks print their FAIL line under pipefail; job tokens via header
2026-09-25 19:07:34 +02:00
test_clamp.py
SAFETY-94: a healthy battery that lags or reverses is not flagged as frozen or refusing
2026-10-04 00:15:42 +02:00
test_control_task.py
UX-08 2d: plain log lines, the rest of the status page, and DOCS
2026-09-27 08:01:16 +02:00
test_control.py
OPT-11 P1 review: a mode never beats the peak floor; SAFETY-03 kept at the rail
2026-09-28 19:41:36 +02:00
test_defaults_pin.py
TARIFF-15: your own tariff card, as two coefficients the card itself grades
2026-09-13 03:49:08 +02:00
test_delivery.py
SAFETY-73 review: a refusal needs 22 s of evidence, and the cut-out warning is for giving only
2026-09-28 02:16:24 +02:00
test_docs.py
DOC-1: operator docs name the real P1 entity and a roster that starts
2026-09-24 23:24:50 +02:00
test_freeze.py
UX-08 phase 2b: short, plain status rows and page banners
2026-09-27 02:12:10 +02:00
test_freshness.py
SAFETY-94: a healthy battery that lags or reverses is not flagged as frozen or refusing
2026-10-04 00:15:42 +02:00
test_haentities.py
UX-13 P2: the Installer settings view
2026-09-28 02:49:58 +02:00
test_home.py
UX-13 P5: Dutch text, STYLE check, DOCS screenshots, period editor
2026-09-28 16:33:32 +02:00
test_inverter.py
UX-08 2d: plain log lines, the rest of the status page, and DOCS
2026-09-27 08:01:16 +02:00
test_loop.py
SAFETY-39: slew_w is a ratio to the rail, and gain is what is still wrong
2026-09-06 01:10:15 +02:00
test_maintenance.py
SAFETY-78: maintenance drain at N=2 no longer stalls
2026-09-29 19:52:51 +02:00
test_messages.py
Merge release/1.0 (
7337b79
, OPT-11 P2) into safety-79-peak-margin
2026-09-29 00:23:14 +02:00
test_modes_p3.py
OPT-11 P3, owner option A: selling off, Leftover solar takes solar only
2026-09-29 10:42:58 +02:00
test_modes_p4.py
OPT-11 P4 review: records and text
2026-09-29 22:29:00 +02:00
test_modes.py
SAFETY-94: a healthy battery that lags or reverses is not flagged as frozen or refusing
2026-10-04 00:15:42 +02:00
test_mqtt.py
OPT-11 P3: price runs per battery
2026-09-29 02:37:44 +02:00
test_named_absence.py
TEST-26: a missing value in a check is a named FAIL, not a traceback
2026-09-25 00:06:58 +02:00
test_p1.py
UX-08 phase 2b: short, plain status rows and page banners
2026-09-27 02:12:10 +02:00
test_packshare.py
TEST-26: a missing value in a check is a named FAIL, not a traceback
2026-09-25 00:06:58 +02:00
test_peak_margin.py
SAFETY-85: no false 'not keeping up' while maintenance or the peak guard sets the battery
2026-10-01 19:05:27 +02:00
test_peakguard.py
SAFETY-91: a held battery is drawn only after the others are full
2026-10-02 14:03:54 +02:00
test_price_forecast.py
UX-10: the last plain-language leftovers: log lines, two table rows, 'Why: Other', red at 0 s
2026-09-27 10:58:43 +02:00
test_price_history.py
UX-10: the last plain-language leftovers: log lines, two table rows, 'Why: Other', red at 0 s
2026-09-27 10:58:43 +02:00
test_price.py
test_price: grade the Why row of the same render, not a second read of why_words
2026-09-27 17:04:55 +02:00
test_pv.py
UX-13 P1: page shell and Home screen on a structured /status
2026-09-28 00:45:01 +02:00
test_refusal_units.py
SAFETY-73 review: a refusal needs 22 s of evidence, and the cut-out warning is for giving only
2026-09-28 02:16:24 +02:00
test_refusal.py
SAFETY-52 review: a refusal is under 100 W, and any delivery ends it
2026-09-27 18:11:42 +02:00
test_rehearse.py
SAFETY-60/62: operator tools refuse input they cannot read
2026-09-24 23:27:50 +02:00
test_safety78.py
SAFETY-85: no false 'not keeping up' while maintenance or the peak guard sets the battery
2026-10-01 19:05:27 +02:00
test_safety81.py
SAFETY-81 review: 10 s hold, ERROR line per episode, more scenarios
2026-09-29 20:58:37 +02:00
test_safety83.py
SAFETY-86: peak guard outranks the maintenance hold
2026-10-01 00:56:34 +02:00
test_safety84.py
SAFETY-85: no false 'not keeping up' while maintenance or the peak guard sets the battery
2026-10-01 19:05:27 +02:00
test_safety85.py
SAFETY-85 review: grade discharge only, over the plant's settle time
2026-10-01 20:25:41 +02:00
test_safety86.py
SAFETY-85: no false 'not keeping up' while maintenance or the peak guard sets the battery
2026-10-01 19:05:27 +02:00
test_safety87.py
SAFETY-91: a held battery is drawn only after the others are full
2026-10-02 14:03:54 +02:00
test_safety90.py
SAFETY-90 review: test that a second gap does not price the first one down
2026-10-05 12:39:28 +02:00
test_safety91.py
SAFETY-91 review: a held-back battery is released 1 point above its reserve
2026-10-02 14:54:20 +02:00
test_safety93.py
SAFETY-93 review: a charge that ends by a stale link or a refusal hands back smoothly too
2026-10-03 00:10:21 +02:00
test_safety94.py
SAFETY-97: "gives nothing" is graded against each battery's idle reading
2026-10-04 12:21:24 +02:00
test_safety97.py
SAFETY-97: centre the band on the idle reading clamped to 75 W
2026-10-04 16:57:16 +02:00
test_selfconfig.py
UX-13 P0: layout table, page<->options derivation, warning tier, entity list
2026-09-27 23:11:31 +02:00
test_settings.py
UX-13 P4: the setup wizard for installers
2026-09-28 05:31:18 +02:00
test_setup_only.py
UX-15: mutations fail named checks, not crashes
2026-09-28 08:54:26 +02:00
test_setup.py
OPT-11 P3 option A review: wizard no longer says modes come later
2026-09-29 11:21:32 +02:00
test_static_tariff.py
UX-08 2d: plain log lines, the rest of the status page, and DOCS
2026-09-27 08:01:16 +02:00
test_tariff.py
UX-10: the last plain-language leftovers: log lines, two table rows, 'Why: Other', red at 0 s
2026-09-27 10:58:43 +02:00
test_telemetry.py
SAFETY-48: what the lead cap actually does to a frozen integrator, and what the peak figure depends on
2026-09-19 02:37:01 +02:00
test_tool_inputs.py
UX-08 2c: short refusals, error texts and option texts
2026-09-27 05:55:45 +02:00
test_translations.py
UX-08 2c: short refusals, error texts and option texts
2026-09-27 05:55:45 +02:00
test_ui_text.py
UX-13 P5 review: every STYLE rule has a mutation check, fuller jargon lists, Dutch wording, overlap partner test
2026-09-28 16:54:45 +02:00
test_uilayout.py
UX-13 P2: the Installer settings view
2026-09-28 02:49:58 +02:00
test_uimodel.py
UX-13 P5 review: every STYLE rule has a mutation check, fuller jargon lists, Dutch wording, overlap partner test
2026-09-28 16:54:45 +02:00
test_validate.py
UX-13 P0: layout table, page<->options derivation, warning tier, entity list
2026-09-27 23:11:31 +02:00
test_version_gate.py
UX-08 2c: short refusals, error texts and option texts
2026-09-27 05:55:45 +02:00
test_watchdog.py
SAFETY-91: a held battery is drawn only after the others are full
2026-10-02 14:03:54 +02:00
ux08_allowlist.txt
UX-08 2d: plain log lines, the rest of the status page, and DOCS
2026-09-27 08:01:16 +02:00