Repository navigation
feat: experimental native joint EV and home battery planning - #5498
arturonaredo wants to merge 6 commits into
Conversation
Source: joint-planner PR springfall2008#5498, commit 5653cc0. Shadow-only; no control activation.
Combined local shadow trial — initial evidence, not the final-duration reportThe three independent draft PRs are #5486 (import diagnostics), #5497 (local DEYE)
What the live trial has found so far:
As of 00:55 UTC, this is roughly 22 minutes of combined-trial evidence, |
Add limited-discharge actions, future-floor reachability, native segmented replay and a bounded forecast-envelope retry. Keep stale-SOC scenarios explicitly conditional and non-executing.
Sources: PR springfall2008#5498 at 091716c and PR springfall2008#5497 at 68682c7. Conditional stale-SOC scenarios retain their freshness blocker. All controls remain shadow-only in the local rollout.
Shadow trial update — corrected planner and command replay installedThe integration branch now runs signed revision Corrections supported by a real-data replay:
Validation: the complete local test runner, with the native kernel required, Live findings and preserved boundaries:
SK and the existing EV executor still control the installation. There is no joint |
|
Observed PR source: The live shadow did not demonstrate that the EV departure target was met. A successful earlier offline candidate does not change that evidential limit; staged apply development is outside this observation evidence. Final bounded shadow-observation checkpoint — not an activation approvalThe scheduled eight-hour checkpoint closed at 2026-10-12 07:37:44 UTC.
Combined-installation elapsed time: 7h 4m 48s. Observed outcome and limits
Reproducible software checksThe installed combined source previously passed the complete local native-kernel All three published PR heads also passed a read-only GitHub Actions matrix on Maintainer request: please approve the pending upstream DecisionNot ready to activate. The observed installation is still off/shadow-only. |
Default-off apply implementation and separate shadow rolloutThe gated native execution path is now published at signed/GitHub-verified Software evidence
New shadow installation, not an apply trialInstalled the combined head at 2026-10-12T08:37:26.431229Z, with a scoped Joint state is The earlier final observation comment remains unchanged and applies only to its Still not ready to activateOrdered physical ToU, commissioned hold/topology/current sharing, fresh EV-field The original bounded audit retains its original end and unchanged source/timer Maintainer action remains required: please approve upstream fork workflows. |
Session-end correction validated; remains shadow-only on hardwareFollow-up to the preceding implementation note: the household-continuation gap After a dated EV session ends, explicit apply can calculate a new house-only Verified software
Separate shadow installationCombined head Read-back at 09:14:29Z and 09:15:10Z verified installed/protected hashes, Hardware commissioning, fresh field-specific EV evidence, the proposed external Upstream workflows still require maintainer approval. Fork-head CI does not |
Local three-PR validation and review status#5486, #5498 and the replacement #5505 are now Ready for review. This updates the earlier draft-status wording, not the hardware/commissioning claims or the revisions covered by the earlier deployment evidence. Fresh complete local suites, with a freshly built native kernel and
No quick-mode exclusions; golden debug cases and the slow suites ran. Source hashes matched before/after. The only merge conflict was the test registry: both sets of imports, isolated runners and registrations were retained. All pre-commit hooks pass; MkDocs builds with only the pre-existing unrelated warnings. No PR head was changed. Important: suite success is not joint-apply compatibilityAn additional cross-PR probe constructed the real
The probe also retained a bounded-search limitation: in a synthetic 48-hour, zero-PV/1 kW household case with a 25 kWh EV starting at 13%, charging at 6.77 kW and due at 07:30, the default beam width 128 returned No live HA/inverter/EV configuration, limits, controller ownership or deployment changed during these tests. The wider-beam result is a model-only finding, not evidence that #5505 can execute its hold/limited-discharge actions. Upstream CI/maintainer review and physical commissioning remain separate gates. |
|
Published the joint-planner integration/search fixes in signed commit
Fresh required-kernel full suites passed: 348 groups standalone (including missing-core rejection; real-template scenarios explicitly unavailable) and 354 groups with #5486 + #5505, the latter with the real template required and zero optional skips. Pre-commit and MkDocs also passed; source/index hashes remained unchanged during both suites. The combined 48-hour fixed-power EV scenario passes nominal/PV10 native replay under the grid cap and dated departure target. This is software/test evidence, not physical commissioning, deployment or upstream CI approval. HA read-back remains observed, never hardware-confirmed; live hardware activation is still gated. No running Home Assistant installation, inverter or EV executor was changed. This PR remains Ready for review, not a claim of production readiness. Upstream |
|
Real-site follow-up for published repair An isolated replay of cached real household/heating history, rates and PV forecasts reproduced the original native baseline (576 SOC points, zero error). With the actual shared custom The installed update is healthy over two fresh normal native plan cycles. Hash-verified backup and guarded, code-only rollback are available; they do not restore old configuration/automations over later user edits. Existing EV sole executor, tariffs, forecasts/history, manual domestic targets, 59 A / 160 A, shutdown 5%, 15% / 25% hysteresis and 600 s OFF delay were preserved. Live joint apply was not enabled. The installed controller remains SK/shadow; the shared profile is staged as an inactive example, not an active migration. EV SOC is stale, field-specific fresh connection/SOC evidence and commissioning of persistent inverter control / independent EV lease expiry remain outstanding. The old dated live session was not renewed as execution authority. Real-data calculation works conditionally; live hardware behaviour and departure success are unverified. Upstream workflow approval remains separate from these local results. |
Summary
Experimental native joint planning for #5490: a fixed-rate EV and domestic battery
are scheduled together against house demand, PV, tariffs, import/power limits,
losses, curtailment, manual domestic minimum targets and terminal value.
Default off. Shadow remains isolated. Apply is a separate, explicitly gated path;
it has not been activated on hardware. This draft is not a production recommendation.
replenishment over the complete forecast horizon, not just a cheap-price label.
domestic reserve and timed manual minimum targets. Unsupported overrides block.
Predictionin nominal andPV10 cases. Conditional stale-SOC hypotheses are shadow-only and retain blockers.
sessions expire without next-day renewal.
with EV OFF, including replenishment and future manual floors. New nominal/PV10
replays and every existing evidence/connection/permission gate remain required;
this is not a stale-data recovery fallback or proof of the EV departure target.
mode: applystages only a successful candidate, then revalidates the currentcommand inside
execute_plan, dispatching through the realInverter.adjust_charge_immediateentry point. Legacy window merging cannoterase the joint hold/charge transition or execute another plan on top.
six-row table, commissioned hold, unchanged limits, fresh field-specific SOC and
connection timestamps, an explicit permission entity and actual relay state.
The existing external EV executor remains the sole switch-service writer. EV OFF
must be observed before the joint executor withdraws battery support.
calibration, manual ceiling, Octopus Intelligent and native-plan followers are
unsupported/gated in apply. Legacy plan broadcasts are suppressed in apply.
Independent PRs and control boundary
This branch starts from upstream
main; it does not include #5486's importdiagnostic or #5497's local-DEYE adapter. It is independently testable in off/shadow;
apply deliberately fails closed without the optional DEYE implementation. The
three PRs are combined only in a separate personal integration branch.
The separate
apply_verifiedandev_executor_lease_verifiedconfiguration flagsdefault false. A matching external EV executor must reject expired/malformed leases
independently of further Predbat updates. This PR neither installs that automation
nor creates another EV executor. Installation-specific expiry latency is a gate.
HA read-back means observed, not hardware confirmation. Reports retain
ready_to_activate: falseandhardware_confirmed: false. Standing current limits,ToU times, work mode, reserve and shutdown settings are not raised or rewritten.
Blocked apply does not perform speculative inverter recovery writes: the last
accepted ToU controls can persist and must be covered by commissioning/recovery.
Ordinary best-plan graphs remain the independent baseline, not the applied joint
trajectory. Session expiry is explicit and does not automatically authorise a new EV session.
Validation
At signed/verified head
affe7766d707d2d6701ef017f94ddcaf1914a412:PREDBAT_KERNEL_REQUIRED=1: PASS, no exclusions(116.51 seconds; combined head also passed the full runner in 116.75 seconds).
cases, 59 apply contract cases and 17 native entry-point/guard cases.
combined fixture over 48 hours (576 staged commands): household replenishment
dispatch (18 simulated services), wait for observed EV OFF (zero services),
and rejection of a later injected EV ON command (zero services).
Zero physical services in every case; these are synthetic transport tests.
passed all three exact PR heads and combined head
2966374e454d7b5e9d230d618d78c88cf2d3949f. Downloaded artifacts verify SHA,pre-commit, required-kernel quick tests and original x86_64 parity (450 random
configurations per head). Local full runs also include all four slow suites.
real schema/template/script engines on an isolated in-memory instance:
33 checks pass, zero live services, not installed.
warnings remain. GitNexus refreshed and affected scope reviewed (high risk at
native entry points); no claim that unit tests establish electrical safety.
The prior eight-hour checkpoint and its per-revision durations remain documented
in the final observation comment. That observation concerns the earlier shadow
revision, not this apply implementation. It did not demonstrate a fresh EV SOC
at departure or achievement of the departure target.
Upstream workflow execution still requires a maintainer's fork-run approval.
Independent read-only fork CI does not substitute for that approval or a merge-ref run.