Skip to content

docs(debug-journal): fold in the 2026-10-05 queue slice (11 candidates); mark GH#5399/#5401, GH#5402/#5405, GH#5349/#5360 and GH#4832/#4956 fixed; add the debug-enable-engine-switch symptom row and the TEST_REGISTRY-name trap - #5416

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

Conversation

@springfall2008

Copy link
Copy Markdown
Owner

Automated journal flush — this body and the fold-in below were produced by the triage bot's daily /journal-update run (2026-10-06 flush, queue 2026-10-05 slice). A human merge is the review gate on this file.

Queue slice: first 15 candidates in filename order from journal-queue/ (12 files present, one empty — 11 candidates read). 6 left queued: none — the whole queue was within the slice; nothing left over.

Per-candidate outcomes

Candidate Outcome Why
1172-car-ready-time-24h-cap.md Folded into the Car-charging row Verified on main: plan_car_charging() clips every cheap window at the next ready time (end = min(window["end"], ready_minutes), past-time wrapped +24h) so the non-IOG car plan horizon is [now, next ready time), while low_rates already covers the full rate horizon; no select option disables the deadline; IOG cars bypass it. GH#1172's remove-the-deadline ask and GH#3890's date-dropdown ask are complementary/opposed completions — link both before closing either. All three enabling facts re-verified at 82bee43e (plan.py/fetch.py/const.py symbols unchanged); no merge since the triage touched these paths.
3017-plan-details-car-charging-sentence.md Folded into the Car-charging row; corrected an existing entry short_textual_plan()'s "Your car is currently charging." fires off car_charge_slot_kwh(minutes_now, minutes_now+5) > 0 and never consults car_charging_now (rest of the section likewise plan-derived) — folded next to the row's existing car_charge_slot_kwh sentence. Separately, the candidate's superseded flag on row "Predbat charged the car at peak..." was verified and applied: PR #5251's commit is contained in git tag --contains from v9.3.0 on, so that row's "(merged 2026-09-26, unreleased at the time of writing)" is corrected to "(merged 2026-09-26, released in v9.3.0)".
3034-octopus-charge-limit-additive-vs-absolute.md suspected (corroborated in-thread only, not from the integration source); the %-to-add mechanism itself is code+log-verified and folded. Separately re-verified that PR #5403 (consider_full car-need gate, merged the same evening) changes nothing with consider_full off: config.py's only change in the window is Wallbox args, and the new octopus_surplus_minutes()` work only runs with the switch on — folded as a #5403 rider so the next reader knows consider_full-on now also withholds the cheap rate from minutes no car needs.
5399-ohme-car-plan-has-no-executor.md Folded into the Ohme row, as fixed The finding was the direct basis of PR #5401 ("take the car plan from Ohme's own schedule when Predbat is not controlling the charger", merged 2026-10-05, unreleased — last release v9.3.5): the session slots become the car plan via the dispatch path, labelled charger schedule, no cheap rate, re-priced by reprice_charger_schedule_slots() on this cycle's rates; mode re-decided every poll. Entry folded as fixed-on-main with the pre-#5401 mechanism kept for older logs.
5400-set-reserve-min-display-lags-register-floor.md Folded into the reserve-ratchet symptom row; corrected an existing entry The display-only gap (register floor reaches reserve_percent only, set_reserve_min raised one-way from battery_min_soc; GE Cloud publishes entity min without binding battery_min_soc) folded into row "Reserve keeps ratcheting..." next to the knob family. The candidate's stale-journal find was re-verified independently and applied: #4832 is closed and PR #4956 is merged (2026-09-06, fixes #4953) — row "Plan shows a flat hold at the reserve..." no longer says the GE Cloud flavour is open.
5402-ohme-slot-owner-tariff-only-detect.md Folded into the Ohme row, as fixed PR #5405 ("leave the Intelligent car slots to Octopus when the Intelligent device is the car", merged 2026-10-05, unreleased) implements exactly the proposed device-check fix: octopus_intelligent_wanted() now consults the Octopus component's live non-suspended devices (is_ohme_charger() = is_charger + provider "ohme"); Octopus driving another device leaves the slots to Octopus and ohme_control stands down; explicit flag still wins. Folded as fixed-on-main, pre-#5405 signature kept.
5404-octopus-weekend-happy-hour-booking.md Folded into the Octopus row, with one precision fix One claim corrected against the tree: available_events is read — by the Power Down auto-join loop (join_octoplus_power_down_session_event + deprecated fallback) — so "read nowhere" was wrong; what does not exist is any Power Up/Happy Hour booking half (WHH entries are skipped at the source — cannot be joined through the API — and Power Up entries ride in available_events at 0 octopoints past the threshold guard). Folded as enhancement-not-bug with the implementation template and the 48h-horizon trap.
5408-debug-enable-engine-switch.md New symptom row + kernel-trap extension Verified on main: kernel_supported() requires not save and not pred.debug_enable and kernel_handle != 0 — debug on routes every trial prediction to the Python engine (deliberate, since #4169); 0 scan_soc_range count over a plan = kernel served it, non-zero = Python engine; committed libraries load from the module dir with no installer. New symptom row written ("Turning debug_enable on changes the plan..."), and the stale-kernel trap now carries the 0-scan-count tell. Kept the two loose ends flagged as loose ends (the predbat.py docstring still calls the Python path "more accurate but far slower" while kernel_supported()'s docstring says the opposite; no user doc) — flagged as maintainer calls, not silently asserted.
5408's loose-end re-check (part of the row above) The candidate's predbat.py:869-875 pointer had drifted; re-anchored on the _debug_enable_auto_scope() docstring (prebat.py:866-871) where the contradictory wording still lives. Also folded the 2h auto-disable (DEBUG_ENABLE_MAX_HOURS, since v8.53.0) as the bound on the switch.
5412-octopus-intelligent-device-freeze-after-tariff-change.md Folded into the Octopus row, still live Re-verified every link on main at 82bee43e: tariff-gated early return in async_update_intelligent_devices() → pruning never runs off-IOG; automatic_config() wires tariff-blind; cache round-trips the devices; self.octopus_slots rebuilt from frozen entities every cycle; num_cars raise-only; the automatic_config() clobber of a manual octopus_intelligent_slot still overwrites on the first run after restart (post-#5405 only clearing respects foreign wiring). Ohme-side stand-down still blocked by charger_slots_wanted() (the #5401 schedule mode stays blocked while the freeze lasts); #5405's car_slots_released_to_us() treats the not-refreshed device list as a live constraint by design. #5405 does not close #5412.
5413-iog-dispatch-stamp-clears-on-session-end.md Folded into the Octopus row Re-verified on main: completed dispatches merged unconditionally (fetch.py), dispatch_billed_off_peak() exempts completed, history re-render derives past minutes from the current tables (history_to_future_rates(self.rate_import, ...), today_cost() re-prices today-so-far). Folded as the completed-dispatch counterpoint to the row's existing #4946/#4957 AWAY-relabel mechanism; open #2785 (PR #3340 parked) cited as the persistence gap.
5415-iog-hold-for-car-empty-slot.md Dropped — empty file The queue file is 0 bytes; nothing to verify or fold. The underlying triage (IOG hold-for-car, referenced in the bot's memory as gated-no-theory) needs re-queuing by the triage run if it had a finding.

Existing entries corrected (merge-staleness pass)

Verification method

Every folded claim was re-verified against current main (82bee43e, v9.3.6-pending) by reading the named symbols on the working tree, and against the two OHME/Octopus PR merges (#5401/#5405) by reading their commit messages and diffs (git show); GitHub state checked via public pages where gh is denied. Suspected/corroborated-only parts stayed marked. GitHub state for #4832/#4956 checked via public pages (gh is denied on this runner; the candidate itself verified via gh).

Gates

  • pre-commit hooks: all pass (markdownlint auto-fix applied then passed; one cspell catch fixed — a prebat.py typo, reworded rather than dictionary-added).
  • Quick suite: the full run aborted mid-suite at test_teslemetry_local_weekday_follows_the_base_clock — the documented 00:00–01:00 local/UTC weekday-divergence trap recorded in this journal's own traps section (fifth sighting; same abort signature as 2026-09-20, 2026-09-22, 2026-09-25, 2026-09-28 and 2026-10-05); everything before it was green. The remaining ~112 quick-registered modules after teslemetry were then run explicitly (--test <name> per module, in registry order) and all passed (50.6s), so the suite is verified for this docs-only diff modulo that one environmental module — no code is touched by this change.

…s); mark GH#5399/#5401, GH#5402/#5405, GH#5349/#5360 and GH#4832/#4956 fixed; add the debug-enable-engine-switch symptom row and the TEST_REGISTRY-name trap

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

1 participant