Repository navigation
docs(debug-journal): fold in the 2026-09-30 queue slice (2 candidates); mark GH#4940 fixed by PR #5308, GH#5294 by PR #5295, add the PR #5297 write-retry policy - #5312
Merged
Conversation
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 PR prepared by the triage bot's
/journal-updateflow; a human merge is the review gate on this file.Queue slice: 2 candidates taken (limit 15), 0 left queued — the queue held only today's pair. Every claim was re-verified against
origin/mainate652b2b1(v9.3.3) before folding, and the journal was re-checked against what merged since the 2026-09-29 fold (PR #5296): PRs #5295, #5297 and #5308 overtake three existing entries, all corrected below.Candidates processed
Folded in — GH#5300, Tesla reserve reset races a service hook on the reserve register (
journal-queue/5300-tesla-reserve-race.md) → appended to the HA write/verify row. Verified on main: the reset block (if self.set_reserve_enable and resetReserve: inverter.adjust_reserve(0)) has no isCharging guard — one sharpening of the candidate:resetReservestarts True only whenset_charge_window or set_export_window, not unconditionally; the clear branches are the freeze / hold-charging / car / iBoost holds;adjust_reserve()floors atreserve_percentand writes throughwrite_and_poll_value(); the shipped-template immunity was confirmed intemplates/tesla_powerwall.yaml(has_reserve_soc: False, theNote: Inverter does not support reservedisable infetch_inverter_data()) and the dummy-arg path (create_missing_arg/create_entity); the "Current Reserve is X%" / "Wrote X to reserve" discriminator kept as the real-vs-dummy wiring check, plus the dump-config tells (expert-mode-hidden switch readsvalue: nullyet resolves True; unknownargs:keys ⇒ hand-built config). The candidate's line cites had drifted on main (inverter.py:3237 / :2006-2011 / :717-719) and were replaced with symbols.Folded in — GH#5303,
reset_inverter()writes a 100% target on target-SoC-only inverters (journal-queue/5303-reset-inverter-100-target.md) → new row in the symptom table. Verified on main: the 100% "safe mode" write with noinv_has_charge_enable_timeconsult inreset_inverter()/adjust_battery_target(); the 13"reset_inverter": TrueCONFIG items (re-counted: 13, plus 2reset_inverter_forceitems for mode select /set_read_only), None→value at startup counting as a change (userinterface.py); mode gating infetch.py, where the startup reset-100 fires in the charge-controlling modes and the SoC-only modes only via the forced paths; the same-cycle corrections (plan target near a window, and the steady-state 0 write forhas_charge_enable_time: Falseinverters outside a window); standing cases (entering Read-Only via the force gate, or Predbat stopping right after); the other 100% writes (calibration branch;self_test()under theINVERTER_TESTdev constant); the identically namedreset_inverter(my_predbat)fixture helper (tests/test_infra.py:629); and thetemplates/victron.yaml404 (re-confirmed 404 against the raw URL; no such file intemplates/). Drifted line cites in the candidate were replaced with symbols (e.g.const.py:103→110,inverter.py:1884→1897,inverter.py:1884-1885→1897-1898).Existing entries corrected (with the merge that invalidated each)
battery_rate_max→max_charge_power,max_discharge_powerbound to nothing) as "still live". The merge publishes abattery_rate_maxsensor holding the larger of the two per-direction limits and bindsinverter_limit_charge/inverter_limit_dischargewithoverwrite=False; mechanism kept for pre-fix(solis): plan charge and discharge at the inverter's own separate limits #5308 logs. The companion GH#5187 sentence in the same row and the "charge or discharge rate pinned far below the hardware's" symptom row were updated with it.refresh_devices()re-reads the device list hourly (DEVICE_REFRESH_SECONDS) andselect_poll_devices()/apply_devices()rebuild what is polled and drop removed devices' stores. Therefresh_discovery()-is-not-device-re-discovery naming trap and the 5-daylast_updatedskip survive the fix and stay as caveats.INVERTER_DEF[type]["write_max_retry"]/["write_backoff"](onlyGWMQTTdeviates: 3 attempts, 10s apart, and a 2-failures → one write per 5 min degraded state until it verifies; all other types unchanged), and the "hundreds of identicaldidn't complete" symptom row gained the GWMQTT-only exception to its "indefinitely" reading.Dropped
None — both candidates survived verification, and neither duplicated coverage (the #5300 entry is placed beside its #5094/#4165/#4641 sibling but the reserve race itself was not in the journal; #5303 is a new symptom mapping).
Quality gate
All 14 pre-commit hooks pass on the change (cspell and markdownlint-fix included; no dictionary additions needed). The
run_all --quickhalf of./run_pre_commitcannot pass locally during the 00:00–01:00 BST hour:test_teslemetry_local_weekday_follows_the_base_clockasserts the host'sdatetime.now().weekday()against a UTC-based fallback — the crash documented in this journal's 2026-09-22 note. Reproduced bare at 00:12 BST (AssertionErrorattests/test_teslemetry.py:2789) and confirmed unrelated to this docs-only change: underTZ=UTC ./run_all --quickthe whole quick suite is green — "All tests passed (4 slow tests skipped, total time: 73.65s)".🤖 Generated with Claude Code