diff --git a/goodwe_controller/DOCS.md b/goodwe_controller/DOCS.md index c16476e..c8a54f1 100644 --- a/goodwe_controller/DOCS.md +++ b/goodwe_controller/DOCS.md @@ -2820,8 +2820,8 @@ a **copy** of the state file and reports the difference. --live-entities /w/live-entities.txt \ --reverse --round-trip' -Exit `0` clean · `1` at least one finding · `2` could not run. ⚠️ **`2` is not a -pass.** +Exit `0` clean · `1` at least one finding · `2` could not run · `3` clean but +degraded (`--no-live-entities`). ⚠️ **`2` and `3` are not a pass.** ### The owner steps, because this session could not take them diff --git a/goodwe_controller/test_tool_inputs.py b/goodwe_controller/test_tool_inputs.py index 2ab834d..9a8628d 100644 --- a/goodwe_controller/test_tool_inputs.py +++ b/goodwe_controller/test_tool_inputs.py @@ -154,6 +154,13 @@ for label, (path, words) in cases.items(): code == RR.EXIT_COULD_NOT_RUN and words in out and "NO FINDINGS" not in out) +try: + _auto = RR.load_state(dump("s-auto.json", {"auto": True})) +except RR.Refused as err: + _auto = str(err) +check("a state holding only the Automatic toggle (`auto`, app/main.py) is " + "recognised as a store", _auto == {"auto": True}) + flat = RR.load_options(str(FIX / "flat.yaml")) roster = RR.load_options(str(FIX / "roster.yaml")) for side, kw in (("--before", {"before": dump("b.json", ha_apps_info(flat))}), diff --git a/goodwe_controller/tools/rehearse_roster.py b/goodwe_controller/tools/rehearse_roster.py index f37cb28..ebe8452 100644 --- a/goodwe_controller/tools/rehearse_roster.py +++ b/goodwe_controller/tools/rehearse_roster.py @@ -197,7 +197,8 @@ def load_options(path: str) -> dict: _UNIT_PREFIX = unit_key("\0", "").split("\0")[0] -_STORE_KEYS = {*DEFAULTS, *MAINT_UNIT_KEYS, SCHEMA_KEY, MAINT_SCHEMA_KEY} +# "auto" is the Automatic toggle, written by app/main.py outside DEFAULTS. +_STORE_KEYS = {*DEFAULTS, *MAINT_UNIT_KEYS, SCHEMA_KEY, MAINT_SCHEMA_KEY, "auto"} def load_state(path: str) -> dict: