Repository navigation
docs(debug-journal): fold in the 2026-10-08 queue slice (8 candidates); mark GH#4925 fixed in PR #4938; note the PR #4738 time-entity escape hatch - #5453
Merged
Conversation
…); mark GH#4925 fixed in PR #4938; note the PR #4738 time-entity escape hatch Folds (each verified against main c073c36 before landing): - GH#5437 -> "Too many API errors" symptom row: one HA outage walks both mechanisms (REST counter + #5134's init failure); bare ValueError => empty str(e); fatal_error init-once, never cleared; full-log discriminator (Startup banners vs none); wrapper lives in predbat_addon (out of reach). - GH#5438 -> Octopus row: vehicle-catalogue name matching keeps the last match; device attrs override configured rate/battery size outright (fetch.py "Take the max"); coordinator string-drop warning as marker. - GH#5442 -> curve row: id == 0 caller gate in execute.py (both branches, lineage #683); find_charge_curve is per-inverter ("Inverter N Looking for" discriminator); one fleet-wide curve, not per-inverter suffixable; auto-mode re-run signature; debug-yaml double-args trap. - GH#5444 -> Ohme row: no-active-session 404 class vs #4719 route withdrawal; unguarded control_charge() => 60s pause retry storm + health degrade; /config/ohme.py path trap; FINISHED excluded from CONNECTED_STATUSES gates the car plan (link marked unverified). - GH#5445 -> new Excluded-load row: car_charging_energy is the generic excluded-load list; car_energy_reported_load is the inside-clamp flag (four consumer sites); no heat-pump key/diagram node; predheat row cross-ref. - GH#5446 -> HA write/verify row: flag-vs-wiring contradiction (capability flag false silently discards apps.yaml wiring; user_configured_entity() protects only the four time entities); Wrote-X-successfully on a sensor.* placeholder is a self-echo, control_ledger ties log line to it. - GH#5450 -> Savings row: restore/accumulate block, no plausibility guard, recorder-history fallback covers attribute reads; start_date = first #2844-run day, not a reset; recovery via state edit + re-stating start_date; #1114/#3108 archaeology ruled out as inflators. - GH#5452 -> Compare row: standing charge excluded from compare (enable_standing_charge omits "compare" since #1952); compare config: blocks only override CONFIG_ITEMS; cost10 save-flip breaks plan HTML; Actual-vs-projection standing-charge gap; stale annual.py comments. Re-check vs merged main: - GH#4925 fixed in PR #4938 (merged 2026-10-08): entry updated, mechanism kept for older logs. - PR #4738 (merged 2026-10-08) added user_configured_entity(): #5214 entry updated (time entities only) and GH#5446 extension added. - Savings row's drifted line cites re-anchored on symbols. 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 — bot branch
bot/debug-journal-2026-10-09, built by the daily/journal-updaterun. All 8 queued candidates (2026-10-08) were verified against current mainc073c369before landing; 0 left queued (queue limit was 15).Folded in — 8 of 8, none dropped
Too many API errors) followed by Failed HAInterface init blocks startup for 10 minutes in wait_api_started, so an HA restart costs ~12.5 min downtime #5134's init failure (Cannot initialise Home Assistant Interface, the constructor's bareraise ValueErrormakingstr(e)empty, hence the trailing comma;HAHistory: No HAInterface availableon the 60-s-doubling component backoff;wait_api_started()10-min give-up;HA interface not found). Added:fatal_erroris initialised once and never cleared in-process; the full-log discriminator (repeatedPredbat: Startupbanners = restart loop alive but not converging, no banner = stopped-but-running); the restart wrapper lives in the separatespringfall2008/predbat_addonrepo (out of reach from triage sessions — read the banner pattern, not repo access).intelligent_dispatchentity,automatic_config()wiresoctopus_intelligent_slotto it, andfetch_sensor_data_car_planning()consumes them — battery size replaced outright when truthy (recalculating the car SoC), rate viamax(rate, configured)(the "Take the max as Octopus over reports" line predates the catalogue) — so a too-high catalogue figure makes both unreachable from apps.yaml while the component runs. Symptom tell:Car 0 rate from Octopus is 22.0kW and configured rate 7.4repeating. The coordinator'svalue does not fit the container's type - droppedwarning (catalogue sends strings;_clean_number()refuses them) is a cosmetic marker for this path. Fix direction (fallback-to-config on ambiguity) proposed in triage, unreviewed.if id == 0 and ...in both the charge and discharge branches ofexecute.py; lineage Charge curve averaging and auto mode #683/Improve charge curve, and add discharge curve calculations #690, Feb 2024 — design, not a regression).find_charge_curve()is itself per-inverter, so the log discriminator is:Inverter 1 Looking for ...lines present ⇒ the gate is not the problem; absent for inverter 1 while present for inverter 0 ⇒ the gate. Only inverter 0's history is searched. The learned curve is a single fleet-wide value (config read once viaself.args.get, cannot be configured per inverter; consumed at combined fleet SoC% in the single-combined-battery simulation), so per-inverter curves are a plan-model rework, not a flag. RepeatingCannot find ... curveevery 5 min is the normal auto-mode signature; the debug-yaml double-argstrap noted./v1/chargeSessions/...are now separated — ohme_control returns HTTP 404 when attempting to start charging #4719 route-withdrawal (No static resource ...) vs the new no-active-session class (stop route live but keyed on the device serial; server keeps no active-session row once finished/unplugged ⇒ pause 404s forever). Predbat-side amplifier:control_charge()awaits max-charge/pause with no exception guard, so theApiExceptionescapes beforeself.control_charging = should_chargerecords the transition — the same pause is retried everyCONTROL_INTERVAL_SECONDS(60 s) andupdate_success_timestamp()is skipped, so a long storm degrades component health. The/config/ohme.pypath trap and the upstream-ohmepy VERSION drift-check note ride along. Same ticket: FINISHED is excluded fromCONNECTED_STATUSES, so an attached-but-idle car reads unplanned (no slots, Predbat-led pause; workaroundohme_control: false, feat(ohme): take the car plan from Ohme's own schedule when Predbat is not controlling the charger #5401) — the plugged-in-idle session-mode link is explicitly marked the unverified link, pending a reporter capture.car_charging_energyis the generic excluded-load list (subtracted inget_filtered_load_window()/today_cost()/load_today_comparison(), gated oncar_charging_hold, docs endorse heat-pump use; ML loads it with the same gating);car_energy_reported_loadis the inside/outside CT-clamp flag with four consumer sites (fetch disable, ML disable, output planned-slot subtraction, web power-flow diagram); no heat-pump key or diagram node exists — the real ask is naming clarity + node + flag symmetry;load_forecast: - predheat.heat_energy$externalcross-ref to the Predheat row; Use car_charging_energy as evidence for Octopus Intelligent dispatches, and warn when car_energy_reported_load looks wrong #5318 interaction noted.falsein theinverter:block silently discards the apps.yaml wiring (the dummy-creation block overwrites the[self.id]slot;user_configured_entity()protects only the four time entities); TESLA's def shipshas_target_soc/has_reserve_soctrue so the flags-off shape is a user override of the very flags that would write their entity. Forensic tie-back:Wrote X ... successfullyon asensor.*placeholder is the poll reading back its own echo — liveargsvsargs_from_apps_yamlplus thecontrol_ledger'sowned_value/confirmed_attie the quoted log line to the placeholder, so a reporter theory about the hardware interpreting that register cannot act through the write.update_pred()'sif self.calculate_savings:restores viaload_previous_value_from_ha()(state first, then the last recorder history entry — the fallback applies to attribute reads too), addssavings_today_predbatonce per date (gateminutes_now > 60, Fox Cloud retry backoff, savings calc update change to 1am #3108), no plausibility check anywhere,calculate_savingshard-wired True, no built-in reset exists (gateway.py reads only display-side);start_datedefaults to "today" when missing (Fixs to avoid high rate import, use timestamp for savings counter #2844) without touching the restored balance — a "start_date newer than retained data" report is the first Fixs to avoid high rate import, use timestamp for savings counter #2844-build day, not a data reset. Recovery (undocumented): state edit re-statingstart_date, since deleting the entity alone risks the recorder fallback resurrecting the stale balance. Fix pounds calculation for savings #1114/Fox Cloud retry backoff, savings calc update change to 1am #3108 archaeology ruled out as inflators; the original inflator remains unreconstructed (marked suspected).enable_standing_charge(prediction.py) omits"compare"from its gate list (never in it — Tariff comparison feature #1952's birth commit), whileenable_save_statsincludes it (why the plan HTML renders);select_bestranks on the blended metric so ranking inherits the gap. New generalisation: a compareconfig:block overrides only CONFIG_ITEMS (fetch_config→config_index, built solely from CONFIG_ITEMS;metric_standing_chargeis not one) — despite compare.md promising "any standard Predbat configuration setting". Fix traps named: flipping cost10 tosave="compare"repopulatespredict_*_best(plan HTML renders as PV10); the "Actual" line includes the standing charge, projections don't; two staleannual.pycomment sites claim "compare"/"yesterday" switch onenable_standing_charge— only "best"/"yesterday" are true.Existing entries corrected
user_configured_entity(), so a genuinely-wired real time entity wins over the dummy; every other arg (reserve/charge_limit/rates) still has no escape hatch, which the GH#5446 fold extends.predbat.py:1183/output.py:3380) re-anchored on symbols; the mechanism text was unchanged.Verification
c073c369by symbol greps + targeted reads:octopus.py(catalogue query + last-match loops + device-dict spread),fetch.py(attr consumers, curve-config read,calculate_savingshard-wired, standing-charge read),execute.py(bothid == 0curve gates),ohme.py(unguardedcontrol_charge,CONNECTED_STATUSES, 60-s dispatch loop),inverter.py(user_configured_entitysingle-caller, dummy-creation block),config.py(TESLA def,car_energy_reported_load),coordinator.py(_clean_numberstring refusal + drop warning),ha.py(REST counter, bareraise ValueError),component_base.py(backoff,wait_api_started),predbat.py(savings block,fatal_error,HA interface not found),hass.pylifecycle,output.py(savings publication sites),gateway.pytotals read,annual.pystale comments,git show 610db30afor Charge curve averaging and auto mode #683 lineage.pre-commit run --all-filespassed (the chained quick suite was killed at the 10-min Bash cap mid-run — the documented pre-existing surface; a docs-only diff cannot affect tests). Three ordinary-English coinages the cspell hook flagged (suffixable,cumulatives,inspectable) were reworded rather than added to the dictionary; no dictionary change, nothing re-staged.