Repository navigation
docs(debug-journal): fold in the 2026-10-03 queue slice (8 candidates); mark GH#5316 fixed by PR #5319; add the sigenergy inert-power-lever, GEC unused-slot-midnight, reserve-max-validator, plugin-nav, SOH-warning, Octoplus-entity-pair, car-rate-list and update-entity rows - #5378
Merged
Merged
Conversation
…); mark GH#5316 fixed by PR #5319; add the sigenergy inert-power-lever, GEC unused-slot-midnight, reserve-max-validator, plugin-nav, SOH-warning, Octoplus-entity-pair, car-rate-list and update-entity rows Co-Authored-By: Claude Code <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Copilot wasn't able to review any files in this pull request. Check if the Files changed in this pull request are included in default exclusions.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 Automated journal flush: 8 candidates from the 2026-10-03 triage queue. All 8 were re-verified against current main (
990faba1, tag v9.3.4 — the same commit the candidates were written against) before folding in. 0 were left queued.Quality gate:
./run_pre_commitpasses cspell/markdownlint on this docs-only change. The quick suite aborts attest_teslemetry_local_weekday_follows_the_base_clock— the known 00:00–01:00 local midnight-window failure documented in this journal (also seen 2026-09-22 at 00:09 BST) — and everything up to the abort passed, including ge_cloud 138/138.Corrected existing entry
dynamic_load_car_strip_from()symbol on main). The row is now fixed-form: the strip paths (rate_add_io_slots(),dynamic_load_car_strip_feed_rates()) start fromdynamic_load_car_strip_from()(plan.py) — the end of the half hour the car was last seen charging in, which Octopus bills off-peak in full — with the review-round refinements noted (confirm only from 2 minutes in; grace clock not kept across a restart). Kept the pre-fix(octopus): keep a started IOG dispatch's half hour cheap after the car stops #5319 signature for old logs.Folded in (8)
car_charging_rateis read by suffixed name (float(get_arg("car_charging_rate" + postfix)),fetch.py), not index-sliced likecar_charging_limit/car_charging_battery_size. An apps.yaml list is unsupported: a fresh item seeds it as an unvalidated default andfloat(list)raises every main-loop cycle. Workaround: per-car keys. The comma-string value stays marked suspected; the two probe traps are in the row.on_web_startfires inWebInterface.start()before the registered-endpoint loop (re-readweb.pythis flush). Butget_header_html()(web_helper.py) hardcodes the nav, so a plugin page is reachable only by typing its URL. Symptom pointer ("page loads but I can't reach it" = nav gap, not endpoint failure) + fix shape (opt-in plugin nav API).solis_automaticbindsbattery_scalingto the_battery_sohsensors, which publishbatteryHealthSoh/100 as-is including 0 (the [Solis Cloud] batteryHealthSoh of 0 from the API silently zeroes soc_max and causes unbounded grid charging #4494 decision). The PR fix(solis): guard battery_scaling against a documented 0% SOH API response #4500 guard retains the last valid value, so the plan is unaffected; the complaint is the every-cycle repeat, an enhancement. apps.yamlbattery_scalingis not a workaround;battery_scaling_autois a different knob. Re-verified ininverter.py/solis.pythis flush.Validation ... is not a list, but requires N entries based on num_inverters+Return bad int value [<whole list>]= a per-inverter arg read withoutindex=. Instanceinverter_reserve_max(readerinverter.py:504predates the schema; fixindex=self.idlikeinverter_battery_rate_min). Probe results summarised in the row.attribute="events"/"joined_events", re-verified inoctopus.pythis flush); the integration exposes Octoplus sessions as calendar+event pairs where only the event entity carries the attributes; both ship disabled by default. "Documented sensor does not exist" + "switch to the calendar" = the disabled-default trap, not a rename._events-suffix mistranslation trap; old names go in January 2027.enable_default_options()writes unused AC-charge/DC-discharge slots 2-10 times to00:00to disable them; on GIV-3HY the00:00-00:00window is live for one minute past midnight, so with force charge on at that minute the unused slots fire at full rate toward the 100% upper limit (discharge mirror: toward the 4% lower floor). It also overwrites user-set spare-slot times. Fix direction: the limits carry the disable; the generic limit branches must special-case slots 2-10. Verified by readinggecloud.py/inverter.py; the one-minute-live semantics is the reporter's field observation.update.predbat_versionis state-machine-only (AppDaemonset_stateinexpose_config(), re-verifieduserinterface.py:600-624) with no device/registry entry; the HA update surface that names grouped entities by device falls back to "unknown". Predbat publishes every naming attribute it can. The exact screen/HA version printing "unknown" was never pinned — the row says to ask the reporter. Not fixable from Predbat.send_battery_command()sends the six optional power/priority fields (chargingPower,pvPower,maxSellPower,maxPurchasePower,chargePriorityType,dischargePriorityType) at the top level of the payload while the required fields sit insidecommands[0](sincecba12cc3, first released v8.36.11; re-verifiedsigenergy.py:1137-1157this flush). Hardware evidence: the reporter's live MQTT log and flat full-rate charging in the issue. The sigenergy tests assert the top-level shape, so suite-green was meaningless for this surface; a fixed test must assert inside[0]and top-level absence. Open PR fix(sigenergy): send the optional command fields inside commands[] #5377. Suspect-not-verified: Sigenergy Cloud: Freeze Export commands self-consumption mode without capping charge power, battery charges from solar instead of holding SoC #4761's freeze-export reasoning andfreeze_export_holdhave never acted with real effect until a hardware re-test after PR fix(sigenergy): send the optional command fields inside commands[] #5377 merges.Diff shape
8 insertions across 6 existing rows (Solis, Sigenergy, GE Cloud, Octopus, Car charging, Web) plus 2 new symptom-table rows. No candidate dropped; no cspell dictionary additions needed.
🤖 Generated with Claude Code