Skip to content

docs(debug-journal): fold the 2026-10-25..28 queue slice (14 of 15 candidates); correct #5281/#5699/#5643/#5640 entries - #5830

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

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

Conversation

@springfall2008

Copy link
Copy Markdown
Owner

Automated journal flush — /journal-update, 2026-10-29. Every claim below was re-verified against origin/main 83a4adad before it went in; this PR is the review gate.

Folds in 14 of the first 15 queued candidates (slice 4186→5765, filename order); 1 dropped. 43 candidates remain queued (from 5766 onward) for the next slices.

Folded in

  • 4186 (stacked-PR squash) — new trap bullet in "Traps when investigating" next to the base-staleness bullet: a stacked PR's squash lands on the review target's head branch (Add optional plan_at to plan_once() to plan at a caller-chosen instant #5811 → Split update_pred into plan_once()/execute_once() entry points #4186's branch), git rev-parse HEAD == headRefOid proves nothing, check the tip commit's message for a (#M) suffix with M ≠ N, and a squash on a PR head branch exists only on refs/pull/<n>/head. The merge-base staleness part was already the adjacent bullet, so it is referenced, not repeated.
  • 4319 (plugin discovery) — new compact "Plugins (plugin_system.py)" row in the per-integration notes, re-verified on main: load_plugin()'s name-sorted getmembers() first match lets the imported base PredBatPlugin win (Initialising plugin class (name-based)), the _plugin.py single-level scan, the probe trap (a class sorting before the base passes with and without the fix), and — marked open-at-writing — PR fix(plugins): discovery must not instantiate an imported base class #4319's __module__ guards with the two review-flagged consequences (re-export break, strategy-2 double-init).
  • 5699 (gateway EVC) — this candidate also drove a correction: the Gateway row's paragraph describing PR fix(gateway): EV start/stop reach the hub and are confirmed from telemetry #5699's confirm/retry/latch controller as "the first place to look ... once it merges" now says the PR is still open but superseded by the merged fix(gateway): reconcile EV control and honour read-only overrides #5739 (bot flagged 2026-10-28) and its symbols are PR-branch-only, and records what main does instead: gateway_evc_control's stateless reconcile (SetChargingProfile + RemoteStart in-window, RemoteStop out-of-window, _EV_COMMAND_ATTEMPTS 3 / _EV_COMMAND_RETRY_SECONDS 120s, only _ev_control_cp_id driven, read-only double-check) — all symbols re-grepped on main.
  • 5748 (Teslemetry TBC) — folded in three pieces: (a) row 119's control-monitor sentence now names the HA sensor predbat.control_failures (publish_control_failures(), predbat.py) and its event schema (epoch slot_start/slot_end, requested/measured watts) with the "check it first + counts are the chronicity tell" guidance; (b) the Teslemetry row's GH#5748 passage adds that the plan-display HoldChrg there is the predicted fill-then-hold, not what was executed; (c) the replay section gains the third loader-crash cause — a dump whose captured args carry !secret tags (no constructor registered) and the sed-to-dummy workaround. The row's existing signal-tariff material was left alone, and the replay !secret row explicitly distinguishes itself from the apps.yaml boot-parsing !secret row.
  • 5749 (DST render offset) — sharpened the existing clock-change-day plan-table row with the Charge window written before a clock change ends an hour late (autumn) / early (spring) #5749-verified specifics: the render-direction cases (instant after the change rendered before it → one hour late (autumn)), the astimezone(self.local_tz) fix shape, "a fresh decode after the change self-corrects" as the discriminator between re-rendering and re-deriving, the change-night execute test gap, and the persistence route kept explicitly suspected (it stayed marked that way, not upgraded).
  • 5750 (Octopus partial errors) — the main fix's row already carried the merged shapes; folded the follow-up only: still exposed after fix(octopus): keep known data through partial GraphQL errors (devices list, saving sessions #5745) #5750, a nulled events/joinedEvents on the saving-session query flows through get_saving_session_data() unguarded (.get("events", []) → None → TypeError) — kept explicitly "unverified whether Octopus actually nulls these two"; re-verified the still-live code shape on main 2026-10-29. Dropped the candidate's Kraken provider-deprecation bullet: already fixed on main (f7358455, GH#5754, 2026-10-25) — nothing for an older-log reader, so it came out.
  • 5755 (binary_sensor.predbat_running) — new trap bullet ("Docs entity names that live in HA core, not this repo"): the hassio Supervisor per-add-on Running sensor, disabled by default, absent on Container/Core, docs/install.md tells users to enable it while the Error Monitor section doesn't, and the general "don't grep apps/predbat for docs entity names" rule. Verified against main's docs and the PR/issue's HA-core source read.
  • 5757 (Sigenergy MQTT statisticsTime) — folded into the Sigenergy row as merged content (ef1432b, 2026-10-25; then fix(sigenergy): widen MQTT freshness window to 450s so cadence jitter doesn't trigger REST polls #5790 widened the arrival window while SIGENERGY_MQTT_STALE_SECONDS stays 300 — verified): the lag gate in _mqtt_listener_loop(), the merge-onto-mqtt_period_raw invariant, and the do-not-reorder trap (last_mqtt_update stays arrival-based because it is inverter_time and freezes turn laggy-but-healthy feeds into clock-skew restarts).
  • 5758 (recorder include-globs with literal ids) — one sharpening sentence in the Compare row's GH#5507 passage (literal ids flip identically — the selector is presence-based — and open PR docs: restructure the development guide around the branch, test and PR workflow #5758 fixes compare.md but its own revised faq.md example reintroduces the key; main's faq.md still carries it). Dropped the candidate's second half as duplicate: its entityfilter case analysis is the same entityfilter read the row already gained from the GH#5683 review round, which is more complete (it covers the include.entities-alone default-deny case the candidate's framing misses).
  • 5759 (gh api / daemon facts) — new trap bullet: gh api flag order before-vs-after the endpoint decides permission (flags after), issue events oldest-first (tail = latest), exact-phrase PR search understates vs bare-token (search #<n> in:body too), and a BOT_PR event can be authored by the bot's own credential. feat(triage-daemon): label bot PRs and assign them to whoever added BOT_PR #5759 itself merged (7e42019).
  • 5760 (DST history lookups) — new symptom row next to the plan-table DST row: the minutes_back = minutes_now + 1 lookup family in calculate_yesterday() (cost_yesterday, carbon_yesterday, the History arrays, cost_yesterday_car, yesterday_adjustment_pct) reads the wrong day's value on a change day — cross-referenced against the rate_replicate variant in the row above; totals self-correct; and the do-not-fix-minutes_now trap with both probe traps (localize the wall midnight; nothing covers a change day).
  • 5762 (dynamic-load baseline keeps car energy after a trimmed dispatch) — folded into the Octopus row next to GH#5702 as an in-family entry: dynamic_load()'s car subtraction reads in_car_slot() over car_charging_slots rebuilt from the trimmed dispatches, so the trimmed start covers 1–2 of the 5 lookback minutes and the ended-dispatch drop leaves nothing subtracted (Dynamic load adjust is setting load minimum is the symptom line, bounded impact, test gap recorded, Octopus API: the trimmed tail of a long running dispatch is treated as a short dispatch (#5657) #5702/IOG Car charging energy not being recognised in history and being added to house load. #5602 cross-referenced as sibling mechanisms).
  • 5764 (Solis grid-tied detection) — this one also drove a correction: the Solis row's fix(solis): treat a battery-less string inverter as PV-only and leave its registers alone #5281 recount now includes the batteryNum == 0 / batteryJump.batteryCount == 0 corroborators (an omission the candidate proved against _reports_no_battery()'s docstring and code on main), plus the '0'/'0.0' alternate-poll instability and PR fix(solis): stop enrolling a grid-tied string inverter as a battery inverter #5764's SOLIS_GRID_TIED_MACHINE_PATTERN (merged 9985960, 2026-10-26) with its no-pack-count-corroboration rule and the machine field's log visibility.
  • 5765 (service-hook payload timing) — folded into the low-power/service-template row's GH#5182 passage: the ready-made {device_id} hook placeholder (verified get_arg("device_id", index=self.id, default="") on main) and the window-entry worst case of the {power} trail (immediate calls run inside the per-inverter loop before the apply_rate_intent() rate writes → first dispatch runs at the idle max, ~0.8 kWh off-plan at 10 kW, not template-fixable).

Dropped

  • 5505 (Deye/Solarman verify: service sequences) — everything it pins is PR-branch-only (call_service_sequence/prepare_service_sequence are absent from main, verified by grep) and PR Add shared Deye/Solarman template with observed service sequences #5505 is unmerged; the one durable generalisation it carried (a custom inverter_type needs no code change — GE-def synthesis) is already in the review-conventions trap bullet. Its remaining content is forward-looking PR narrative that goes stale like PR-branch text has twice before ("unmerged at writing" Gateway items), so it stays out until the PR lands.

Existing entries corrected (re-check against merges since 2026-10-15)

Branch bot/debug-journal-2026-10-29.

…ndidates); correct #5281/#5699/#5643/#5640 entries

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