Skip to content

docs(debug-journal): fold in the 2026-10-11 queue slice (10 candidates); mark GH#5050 and the GH#5221 event-day instance fixed in PR #5163, GH#5461 fixed in PR #5462, and the Victron template gap fixed in PR #5332 - #5481

Draft
springfall2008 wants to merge 1 commit into
mainfrom
bot/debug-journal-2026-10-11

Conversation

@springfall2008

Copy link
Copy Markdown
Owner

Automated journal update — the /journal-update flow folding the 2026-10-11 queue slice. 10 candidates: 10 folded (one of them rewritten as fixed), 0 dropped, 0 left queued. Every claim was re-verified against origin/main d7d8c607 before folding. Heads-up: ./run_pre_commit, pre-commit run --all-files and the node linters are permission-denied for the triage runner, so the exact hooks could not be run — the applicable ones were replicated by hand (trailing whitespace, end-of-file newline, dictionary case-insensitive sort order, and a token scan of every newly introduced term against the workspace dictionary; one genuine new telemetry key, pac, was added). pre-commit.ci runs the real gate on this PR.

Merge sweep — existing entries corrected

Per-candidate

  1. 5454 (iBoost solar + iboost_smart combo) — folded into the iBoost row: the docs-vs-code contradiction (docs/customisation.md "only applies when iboost_solar and iboost battery are both Off" vs the fetch.py gate ((not iboost_solar) and (not iboost_charging)) or iboost_smart, both verified on main), the grid-first combination mechanism, the iboost_rate_threshold -10 floor, the PR iBoost: optional demand-forecast-driven smart planning (iboost_forecast) #4756/Consider solar export value when scheduling EV charging #5384 pointers and the flat-rate test trap.
  2. 5456 (HAHistory prune drops the state-in-force record → Predheat 20.0 °C) — folded into the Predheat row: the hourly EntityHistory.prune_history() cutoff drops the state-in-force record at the cutoff, so an unavailable/unknown blip as the oldest surviving record floors age to 0 and get_historical(default=20.0) subserves for 24 h; the blip-non-empty-store mechanism (the 2-minute incremental refresh only appends newer epochs); the shared-cache distinction (Predbat's own load path floors age use at 1 day); and the fix trap (the one-line retention fix fails two test_hahistory.py assertions encoding the current prune semantics). Still live.
  3. 5458 (Power Down reward assumed unconditional) — folded into the Octopus row, sharpening the existing GH#2090 sentence: Octopus pays the reward only on export above the user's baseline (typical export at that hour), so a plan that already exports in the event hour models a fictional session value; the three-way report split (inflated total = per-minute crediting Account for baseline calculations for Saving Sessions #2090, "I exported but got no reward" = baseline, low-value bookings = octopus_saving_session_min_octopoints_per_kwh Octopus Saving Session value overstated: incentive applied to whole export window, not marginal reduction vs baseline #4893); and the persistence gap (events re-read each cycle) plus the unprobed BottlecapDave Baselines attribute pointer.
  4. 5459 (Sigenergy docs entity-name split) — folded into the Sigenergy row: the docs' predbat_max_*_limit_action automations cite inverter-level names with the plant -ing suffix — matching neither the plant -ing pair nor the inverter non--ing pair — and the template binds battery_rate_max to the plant -ing name; fix in flight on PR docs(sigenergy): fix rate automation sensor names, re-apply mode on restart, stop zeroing import limit in freeze #5464 (verified unmerged against current main).
  5. 5460 (Sunsynk battery-first idle clipping, closed dup of PV clipping protection: proactively create battery headroom using PV forecast/PV90 #4865) — folded into the Sunsynk row: the planner-shaped-then-re-pointed + battery-first-idle-charge mechanism behind "planned export didn't happen / battery charged instead", the clipped-energy accounting sites (clipped_today, the inverter_can_charge_during_export + inverter_support_feedin_first branch — symbols verified on main), and the reusable log-archaeology traps (grid power = −pac, battery sign conventions, ~15-min poll vs 5-min publish stale cache, etoday counters ratchet, spot-sample balance reconciliation fails).
  6. 5461 (IOG low-load test) — rewritten as fixed: PR fix(car): low-load test needs live load power to be low too before cancelling an Intelligent dispatch #5462 merged 2026-10-09 (v9.3.7): the live load_power total must also be under the cut-off (no load_power → the 5-minute figure alone decides; not-low or no-reading → no evidence either way), and the cut-off factor dropped 0.9 → 0.85 (DYNAMIC_LOAD_CAR_LOW_FACTOR, verified on main). Durable mechanism kept: two-consecutive-low-window grace, ramp-window eligibility, confirm/cancel band asymmetry (0.85 vs the full threshold), the car_charging_energy-sensor strip skip; pre-fix(car): low-load test needs live load power to be low too before cancelling an Intelligent dispatch #5462 signature kept for older logs. The candidate's "byte-identical v9.3.5→main" claim is superseded by the fix.
  7. 5471 (GatewayMQTT auto-config drops an unreadable inverter until restart) — folded into the Gateway row: partial visibility proceeds with the readable subset while _configured_inverter_serials records all serials so _needs_reconfigure() never sees the dropped device as new; the fix trap (a serial-set-membership re-run thrashes every frame — gate on the device becoming usable); Gateway MQTT: defer initial auto-configuration while the hub reports more dongles than inverters #5227's deferral does not cover "listed but unusable"; the green gateway suite proves nothing for the partial-outage scenario; fix in flight on PR fix(gateway): keep configured inverters when the hub cannot read them (#5471) #5475 (discovery/auto-config side).
  8. 5478 (GatewayMQTT missing-field fallbacks fabricate 6000 W / unlimited export) — folded into the Gateway row: the or 6000 rate fallbacks, the proto-0 export-limit 99999 sentinel read back as 100.0 kW, literal-0 reserve_soc publishing, and _check_rate_caps() persisting the fabricated cap on the hub; or 6000 dates from the component's first commits (not a regression); fix precedent merge_non_null(); a green gateway suite proves nothing here (no missing-rating case).
  9. 5479 (docs yaml code fences unvalidated) — folded as a new "Traps when investigating" bullet: nothing validates the fenced yaml in docs/inverter-setup.md (check-yaml matches only .yaml/.yml; verified against .pre-commit-config.yaml), the two SolaX script blocks broken since Feb 2026 by a wide neighbouring re-indent (PR Docs: Improve LuxPower Freeze Charge Exit Automation: Fix Trigger/Condition Logic to Handle Predbat Restarts #3389), the two break shapes (hard parse error vs silently-parseable variables: null), and the git blame -L technique.
  10. In addition, one pre-existing malformed symptom-table row (the "Too many API errors" row missing its closing |) was repaired, and the merge-sweep also surfaced the "manual override partially ignored" class gaining a fixed instance (GH#5423, fixed by PR fix(plan): shrink, not grow, the source window in the export swap's partial combine (#5423) #5447) now noted in the web row.

…s); mark GH#5050 and the GH#5221 event-day instance fixed in PR #5163, GH#5461 fixed in PR #5462, and the Victron template gap fixed in PR #5332

Co-Authored-By: Claude Code <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant