Skip to content

feat: experimental native joint EV and home battery planning - #5498

Open
arturonaredo wants to merge 11 commits into
springfall2008:mainfrom
arturonaredo:feat/joint-site-shadow
Open

arturonaredo wants to merge 11 commits into
springfall2008:mainfrom
arturonaredo:feat/joint-site-shadow

Conversation

@arturonaredo

@arturonaredo arturonaredo commented Oct 12, 2026 •

Copy link
Copy Markdown

Summary

Latest display follow-up — 2d4de3cbd5cd02d07cb6d025d06d09910d7012a0: show Car kWh with exactly two decimal places in native, shadow and applied Plan rows, including totals and cancelled-slot values. Display rounding preserves the underlying JSON/calculation values and cancellation markers.

This signed fast-forward commit changes two presentation modules and updates the existing cancelled-slot HTML assertions. Repository pre-commit hooks and the quick suite passed, together with five focused presentation/dynamic-load groups on both the standalone and combined trees. The actually served JavaScript was also executed against a captured 97-row plan in six combinations (native/shadow/applied, Show Debug off/on): for example 0.564 displays as 0.56, raw data stays 0.564, and other row cells/styles compare identically.

The combined display tree is 91d69e4b932713c0a64ef2c8b46b8ae2aff77745. It was installed and read back at 2026-10-14 22:16 UTC with v9.4.0, a fresh applied cost plan, no runtime error and protected settings verified. The full-suite counts below belong to the priority implementation parent; this small display follow-up has the focused/quick validation described here.

Priority implementation (parent commit): signed head 3d2be7a83781b9c52003360c26c152940e8e192e adds distinct now, asap, cost and solar policies on the existing v9.4.0 base (9bbe3f75b8275781dd7418237444fb9ab6154b18). The eight-file delta is limited to this PR's planner, dispatch guards, tests and documentation. Its combination with the separately owned diagnostics/template contributions reproduces the exact tested and installed tree 4e9fa51fa2638d2253a0c624c923c65646af5181.

The latest home software readback at 2026-10-14 21:03 UTC reported a fresh applied cost plan, no runtime error, preserved protected controls and v9.4.0 in HA and the web UI. The four-option helper was also verified in persisted HA configuration. This is software/deployment evidence; daylight SOLAR delivery, sustained EV delivery, physical deadline completion and realised savings remain unverified.

Current-head CI: run 38646601211: completed / action_required. Upstream execution awaits maintainer approval; local checks are not an upstream CI pass.

Experimental native joint planning for #5490: schedule a fixed-rate EV and a domestic battery together against house/heating demand, PV, tariffs, import/conversion limits, losses, reserve and manual domestic minimum targets.

Default off. Shadow is isolated; apply is separately gated. Code from this PR, #5486 and #5505 is installed at my home and household control is operating. Sustained physical EV delivery and deadline completion remain unverified. See the consolidated home report and use cases for observed evidence and its limits. This is not a general production recommendation.

Implemented

  • Explicitly opted-in standing daily EV policy with durable sensor-derived sessions, native ready-by time/target, genuine meter intervals, continuity checks and safe handling of corrupt stored authority.

  • Model-only arrival forecasts can contribute hypothetical future demand while the EV is absent; they do not grant execution permission or fabricate observed SOC. Household routing checks availability first.

  • ev_charging_priority accepts literals or a cached HA input_select/select with cost / asap / now / solar. A watched change invalidates the plan and execution receipt; changing it during calculation rejects the old-priority candidate.

    • NOW: require EV ON in the current control interval, including every bounded retry and authorised partial alternative. Supported grid/battery assistance may be used; a failed immediate start is reported instead of silently deferred.
    • ASAP: first try conservative solar within 30 minutes, then the next cheaper tariff band, then an earlier deadline-preserving path. Once a discount arrives it can be used immediately, rather than repeatedly deferring to an even cheaper later band. This deliberately replaces the former earliest-start meaning.
    • COST: compare complete coupled economic outcomes, including an unrestricted envelope schedule so a cheaper valid split plan can beat continuity. Cycle cost and terminal energy remain included; bounded search does not prove a global optimum.
    • SOLAR: reserve conservative household PV surplus at full fixed EV power, require Demand/no battery depletion in EV-ON replay steps, and separately check fresh local PV/load/EV meter evidence before dispatch and renewal. Solar leases are capped at 60 seconds and by observation freshness. Lost surplus or stale/invalid data revokes authority without a direct relay write. Partial delivery remains separately authorised, with the requested target and shortfall visible; there is no grid/battery EV fallback. Native household conversion losses/imports remain visible, so this is not a whole-site zero-import or instantaneous-clamp claim.
  • Bounded joint search across the forecast horizon, with independent full-horizon native nominal/PV10 replay. A search miss is not proof of infeasibility or global optimality.

  • Fixed EV power, pause/restart hysteresis, elapsed-OFF cooldown, domestic reserve and timed manual minima are preserved. Unsupported overrides block execution.

  • Optional shared-template grid-charge modelling gives house/EV load priority, uses available grid/PV charging headroom and bounds battery support by real rate, reserve and conversion inputs. Unsupported demand remains a violation, never a clipped trace.

  • Mode-specific bounded scheduling with separately authorised partial delivery. Partial plans require new paired-safe replay and exact evidence binding; requested and planning targets stay separate.

  • Availability-first household routing: absent/disconnected/unpermitted/expired EV sessions are excluded before EV SOC/meter reads. Withdraw EV authority first; return to the native household executor only after observed relay OFF. ON/unknown retains existing support without another writer.

  • Explicit single-session confirmation can support retained push telemetry plus a dedicated cumulative meter, without inventing freshness. Contradictions persist through Storage; later home/connection transitions require renewed explicit confirmation. In this legacy confirmation mode, departure/session authority never renew automatically; the separately opted-in standing policy above is distinct.

  • Gated dispatch inside the real native execute_plan / Inverter.adjust_charge_immediate entry points. Successful observation can grant a bounded EV-slot lease; the existing external EV executor remains the sole automatic switch writer. Cache-only revalidation cannot start a new intent or indefinitely extend an old plan.

  • One existing Plan table, using the candidate's native-replay trajectory. Preserve columns, colours, totals and calculation precision; hide technical detail in Show Debug. Applied status requires a valid observed-current-command receipt; future rows remain forecasts. Stale/failed evidence cannot retain an old active candidate.

Independent ownership and control boundary

This PR does not incorporate #5486's import diagnostics or #5505's generic service-sequence core/template. It remains independently importable/testable; unavailable apply backends fail closed. Shared-template compatibility is implemented here; #5505 replaces the superseded #5497 proposal. Combined validation is local, not a published installation branch.

apply_verified and ev_executor_lease_verified default false. The narrowly scoped confirmed shared-support path also supports an explicit execution_authorised request; that is not physical commissioning. A separately commissioned external executor must reject expired/malformed leases without further Predbat updates. This PR does not install that automation.

HA read-back is observed, not hardware-confirmed; ready_to_activate and hardware_confirmed remain false. Standing current limits, physical ToU times, work mode, reserve/shutdown and BMS protections are not raised or rewritten. Persistent inverter settings can survive a stopped planner: site-specific recovery commissioning remains required. Ordinary native best-plan graphs are not relabelled as the applied joint trajectory.

Retained EV control boundary — review dated 13 October

The post-rebase review checked the published fcf54648 tree, not main without this PR's changes. Joint publication/execution guards, plugin-hook suppression, lease refresh, HA last_updated, replay physics/kernel exclusion and Plan rendering were retained; upstream's per-car plan isolation is also present. The eight joint runtime modules are unchanged by the rebase. Diagnostics remain optional to replay; the shared-template backend remains a separate, fail-closed dependency for that apply mode.

Do not co-enable the native charger controller with joint apply. The joint publisher uses numeric minutes in planned plus the separate versioned valid_from/valid_until lease. Upstream CarChargerControl reads textual planned windows, not the joint lease contract. An offline reproduction with the real publisher/parser/mixin and a fake charger produced an empty native window list and an OFF command from a valid joint ON publication. No physical command was sent. Merely converting the window timestamps would not add the required lease, permission, hysteresis or cooldown checks.

Joint apply continues to require the sole separately commissioned external EV executor. GECloud EVC, myenergi Zappi and Ohme native plan-driven control must remain absent/inactive for this mode; Ohme's auto setting must not be mistaken for disabled. The joint preflight rejects Octopus scheduling and registered plan hooks, but does not automatically detect every component-based competing writer. Concurrent native control is unsupported, not an automatically prevented or validated combination. No new controller or live configuration change was made.

Seven focused groups passed again in the local combined tree with the template required and no skips: native joint replay, real entrypoints, joint apply, grid-support physics, smart-car scheduling, native charger control and joint sessions. An additional isolated publication probe revoked an expired receipt. These supplement, rather than replace, the exact-tree full-suite results below; they do not establish physical EV commissioning or complete the unresolved dynamic-call graph analysis.

Priority implementation validation

  • Exact standalone head 3d2be7a83781b9c52003360c26c152940e8e192e, tree 5621a34b228606892f74b11641a7aad70bf21279: 368/368 registered test groups passed, including slow suites and a freshly built/loaded native kernel. Eight optional-backend groups test safe rejection and explicitly omit real-template scenarios without Add shared Deye/Solarman template with observed service sequences #5505.
  • Exact local combined tree 4e9fa51fa2638d2253a0c624c923c65646af5181: 371/371 groups passed, no skips, with PREDBAT_JOINT_TEMPLATE_REQUIRED=1. Replacing the eight owned files in the previous validated combination reproduces this tree exactly.
  • The same combined tree passed 12 isolated Linux groups and kernel parity in the installed image, without production mounts or network access. Deployment/recovery regression tests and source/protected-setting readbacks passed.
  • Repository coverage/run_pre_commit passed, including all pre-commit hooks and the quick suite. The focused joint_site_priority runner also passed. Tracked source and tree identities were stable during validation.
  • New regressions distinguish all four modes on one tariff/PV snapshot, preserve deadline fallback, reject nominal-only solar, verify supported immediate grid assistance, compare cheaper split schedules, retain explicit partial shortfalls, and revoke solar authority on stale power or lost surplus. A calculation-latency regression checks that fresh solar evidence can renew without a spurious cooldown while old evidence cannot.
  • GitNexus staged and main-relative change analyses completed. The staged delta is eight files/61 symbols; the full PR remains critical impact across planning/execution flows. Dynamic-call gaps mean a low staged process count is not an all-clear.
  • Before publication there were no maintainer reviews, inline comments or review threads to address; the sole top-level comment was the author's consolidated report. It is updated in place.
  • Software tests and observed home plans are not physical EV commissioning. Daylight solar delivery, sustained charging and actual departure SOC remain unverified.

No private household/vehicle captures, configuration, credentials or installation branch are included.

arturonaredo added a commit to arturonaredo/batpred that referenced this pull request Oct 12, 2026
Source: joint-planner PR springfall2008#5498, commit 5653cc0. Shadow-only; no control activation.
arturonaredo added a commit to arturonaredo/batpred that referenced this pull request Oct 12, 2026
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.
@arturonaredo arturonaredo changed the title feat: add shadow-only joint EV and home-battery planning feat: experimental native joint EV and home battery planning Oct 12, 2026
@arturonaredo
arturonaredo marked this pull request as ready for review October 12, 2026 11:47
@arturonaredo

arturonaredo commented Oct 13, 2026 •

Copy link
Copy Markdown
Author

Automated publication update on behalf of the PR author.

Car kWh display follow-up

Latest display follow-up — 2d4de3cbd5cd02d07cb6d025d06d09910d7012a0: show Car kWh with exactly two decimal places in native, shadow and applied Plan rows, including totals and cancelled-slot values. Display rounding preserves the underlying JSON/calculation values and cancellation markers.

This signed fast-forward commit changes two presentation modules and updates the existing cancelled-slot HTML assertions. Repository pre-commit hooks and the quick suite passed, together with five focused presentation/dynamic-load groups on both the standalone and combined trees. The actually served JavaScript was also executed against a captured 97-row plan in six combinations (native/shadow/applied, Show Debug off/on): for example 0.564 displays as 0.56, raw data stays 0.564, and other row cells/styles compare identically.

The combined display tree is 91d69e4b932713c0a64ef2c8b46b8ae2aff77745. It was installed and read back at 2026-10-14 22:16 UTC with v9.4.0, a fresh applied cost plan, no runtime error and protected settings verified. The full-suite counts below belong to the priority implementation parent; this small display follow-up has the focused/quick validation described here.

Current-head CI: run 38646601211: completed / action_required. Upstream execution awaits maintainer approval; local checks are not an upstream CI pass.

The four EV priorities are included in this head. No maintainer reviews or inline comments were present at the latest review check. Daylight solar delivery, sustained charging and physical departure SOC remain unverified.

Priority implementation and earlier reports — dated evidence

Automated publication update on behalf of the PR author.

Four distinct EV priorities

EV priorities update: signed, fast-forward head 3d2be7a83781b9c52003360c26c152940e8e192e adds distinct now, asap, cost and solar policies on the existing v9.4.0 base (9bbe3f75b8275781dd7418237444fb9ab6154b18). The eight-file delta is limited to this PR's planner, dispatch guards, tests and documentation. Its combination with the separately owned diagnostics/template contributions reproduces the exact tested and installed tree 4e9fa51fa2638d2253a0c624c923c65646af5181.

The latest home software readback at 2026-10-14 21:03 UTC reported a fresh applied cost plan, no runtime error, preserved protected controls and v9.4.0 in HA and the web UI. The four-option helper was also verified in persisted HA configuration. This is software/deployment evidence; daylight SOLAR delivery, sustained EV delivery, physical deadline completion and realised savings remain unverified.

Current-head CI: run 38645116638: completed / action_required. Upstream execution awaits maintainer approval; local validation is not an upstream CI pass.

  • ev_charging_priority accepts literals or a cached HA input_select/select with cost / asap / now / solar. A watched change invalidates the plan and execution receipt; changing it during calculation rejects the old-priority candidate.
    • NOW: require EV ON in the current control interval, including every bounded retry and authorised partial alternative. Supported grid/battery assistance may be used; a failed immediate start is reported instead of silently deferred.
    • ASAP: first try conservative solar within 30 minutes, then the next cheaper tariff band, then an earlier deadline-preserving path. Once a discount arrives it can be used immediately, rather than repeatedly deferring to an even cheaper later band. This deliberately replaces the former earliest-start meaning.
    • COST: compare complete coupled economic outcomes, including an unrestricted envelope schedule so a cheaper valid split plan can beat continuity. Cycle cost and terminal energy remain included; bounded search does not prove a global optimum.
    • SOLAR: reserve conservative household PV surplus at full fixed EV power, require Demand/no battery depletion in EV-ON replay steps, and separately check fresh local PV/load/EV meter evidence before dispatch and renewal. Solar leases are capped at 60 seconds and by observation freshness. Lost surplus or stale/invalid data revokes authority without a direct relay write. Partial delivery remains separately authorised, with the requested target and shortfall visible; there is no grid/battery EV fallback. Native household conversion losses/imports remain visible, so this is not a whole-site zero-import or instantaneous-clamp claim.

Current priority-update validation

  • Exact standalone head 3d2be7a83781b9c52003360c26c152940e8e192e, tree 5621a34b228606892f74b11641a7aad70bf21279: 368/368 registered test groups passed, including slow suites and a freshly built/loaded native kernel. Eight optional-backend groups test safe rejection and explicitly omit real-template scenarios without Add shared Deye/Solarman template with observed service sequences #5505.
  • Exact local combined tree 4e9fa51fa2638d2253a0c624c923c65646af5181: 371/371 groups passed, no skips, with PREDBAT_JOINT_TEMPLATE_REQUIRED=1. Replacing the eight owned files in the previous validated combination reproduces this tree exactly.
  • The same combined tree passed 12 isolated Linux groups and kernel parity in the installed image, without production mounts or network access. Deployment/recovery regression tests and source/protected-setting readbacks passed.
  • Repository coverage/run_pre_commit passed, including all pre-commit hooks and the quick suite. The focused joint_site_priority runner also passed. Tracked source and tree identities were stable during validation.
  • New regressions distinguish all four modes on one tariff/PV snapshot, preserve deadline fallback, reject nominal-only solar, verify supported immediate grid assistance, compare cheaper split schedules, retain explicit partial shortfalls, and revoke solar authority on stale power or lost surplus. A calculation-latency regression checks that fresh solar evidence can renew without a spurious cooldown while old evidence cannot.
  • GitNexus staged and main-relative change analyses completed. The staged delta is eight files/61 symbols; the full PR remains critical impact across planning/execution flows. Dynamic-call gaps mean a low staged process count is not an all-clear.
  • Before publication there were no maintainer reviews, inline comments or review threads to address; the sole top-level comment was the author's consolidated report. It is updated in place.
  • Software tests and observed home plans are not physical EV commissioning. Daylight solar delivery, sustained charging and actual departure SOC remain unverified.

No private household/vehicle captures, configuration, credentials or installation branch are included.

Previous dated reports — historical evidence and superseded status

v9.4.0 publication — 14 October 2026

v9.4.0 update — 14 October 2026: this branch now includes the official release 9bbe3f75b8275781dd7418237444fb9ab6154b18 through a fast-forward branch update with a merge commit; existing published history is preserved. Current head: 87ec795f57eaa25d29b43c7bdaa3cf73dce6b98c. The three PRs remain independently owned. Their combined production code matches the v9.4.0 integration installed and verified at home at 15:30 UTC; the publication additionally corrects two optional-backend test runners. HA and the Predbat web UI reported v9.4.0, a fresh plan was generated without a runtime error, and protected settings were retained. Sustained physical EV delivery, deadline completion and real-tariff midnight savings remain unverified.

  • Exact standalone head 87ec795f57eaa25d29b43c7bdaa3cf73dce6b98c: 368/368 registered test groups passed, including slow suites and a freshly built/loaded native kernel. 8 optional-backend groups explicitly test safe rejection and skip real-template scenarios without Add shared Deye/Solarman template with observed service sequences #5505.
  • Final local combination: 371/371 groups, no skips, with PREDBAT_JOINT_TEMPLATE_REQUIRED=1 and a fresh native kernel; tree efe99e7dc749a91d346dd68c9cd2a9637bf03d09. The shared-file resolutions preserve the independent contributions.
  • Repository pre-commit hooks pass. Indexed source and Git trees were unchanged across each validation run.
  • The installed production code also passed 25 isolated Linux groups plus kernel parity. The final publication differs from that deployment only in the two test runners, not runtime code.
  • GitNexus impact and staged/release-relative change analyses were run. Broad planner paths remain high/critical impact; dynamic test-registry calls are not fully resolved by the graph.
  • Source ownership was checked by subtracting the diagnostics and template contributions from the installed integration and recovering the joint-planning tree, with explicit shared-hunk resolutions.
  • Local software checks and the home version/plan observation are not physical EV charging acceptance.

Current-head CI: run 38594153731: completed / action_required. Upstream execution awaits maintainer approval. Local validation is not an upstream CI pass.

This update publishes the standing daily policy, metering/continuity recovery, model-only arrival forecasting and the asap/cost HA selector. The independent test run first exposed two missing optional-template guards; those were corrected and both standalone and required-template runs completed.

The latest code is in the existing PR branches; no installation branch or private configuration is published.

Previous dated report — historical evidence, superseded status

Consolidated update — working at home, with EV commissioning still pending

Current-main rebase update: all three PRs now include upstream main at 1faff2288982fd3cd159822c99c2658697c48f52 (v9.3.8 plus the five subsequent upstream commits). Heads: #5486 6db22f4e, #5498 fcf54648, #5505 4546443f. The publish_car_plan conflict is resolved: the joint EV publication guard remains before native publication, and upstream keeps a separate plan list for each car. This rebase was validated locally and did not deploy or change the home installation. The dated home observations below describe the earlier installed revision, not a deployment or physical EV commissioning of these rebased heads. The EV compatibility review is complete on the published trees: the existing joint guards are preserved. Compatibility limit: upstream CarChargerControl is not a joint-lease executor and must not be enabled alongside the sole external EV executor. This is a software/source review, not physical EV commissioning. The reproduced boundary and remaining limitations are described in the joint-planning report.

Current-head CI: run 38375559848 for fcf54648 reports action_required and awaits maintainer approval; local tests are not an upstream CI pass.

I have the code from #5486, #5498 and #5505 installed together at home, and the household battery plan is operating through Predbat's native control loop — not merely displaying a simulation. At the read-only check on 13 October 2026, 07:51 UTC, the latest ordinary cycle was 07:50 UTC: Demand, read-only off, no error. The car was away; its relay and charging-slot signal were off, with no active EV receipt or staged EV candidate. Installed/protected file hashes and standing settings matched the deployment records.

The household-routing update was installed at 06:08 UTC; a display-only follow-up at 06:37 UTC removed the routine absence banner while retaining its reason in Show Debug. These are verified snapshots, not a claim of uninterrupted endurance testing. Earlier overnight shadow observations concerned older revisions, not hours of this apply revision.

What each PR owns

All three branches have now been rebased onto current upstream main. The PRs remain independently reviewable; no private installation branch, configuration, identifiers or captured household/vehicle data is published.

Added use cases and corrections

Predbat already plans EV charging. These changes extend the joint fixed-rate-EV/domestic-battery case rather than claiming EV planning itself is new:

  1. Keep the house running when the car is unavailable. Away, disconnected, unpermitted or expired EV sessions are excluded before reading EV SOC or its energy counter. A car plugged in or charging elsewhere is not a household load. EV authority is withdrawn first; native household execution resumes only after observed relay OFF. ON/unknown retains existing support without a competing writer.
  2. Share grid/PV headroom with house and heating loads. The opt-in model distinguishes a battery charge request from physical flow: load has priority, spare headroom may charge the battery, and available battery energy may support a deficit. It respects conversion, charge/discharge and reserve limits; an unsupported deficit stays visible rather than becoming an invented grid clamp. Nominal and PV10 native replays independently validate candidates.
  3. Prefer one continuous fixed-power charging block, or an ASAP departure. Cost-ranked search remains bounded to twelve starts; explicit ASAP searches the finite departure horizon in five-minute order for the first paired-safe block found. This fixes the earlier cutoff that could miss a later continuous start. Neither mode proves global optimality or earliest physical feasibility.
  4. Deliver an explicitly authorised partial target when a full-target search fails. A new schedule must pass both native replays. Requested and planning targets remain separate; shortfall is visible, commands/evidence are bound, and changed EV or domestic SOC is rechecked before dispatch. The request is not silently reduced, and the result is not claimed to be the maximum achievable.
  5. Handle retained push telemetry without fabricating freshness. An explicit, dated single-session baseline plus a dedicated cumulative meter can estimate EV delivery. Invalid/reset/stalled metering and contradictory new SOC fail closed. Contradiction invalidation survives age and restart through Storage; reconnection/home transitions require a new explicit confirmation. Sessions and departure times never renew themselves.
  6. Show the right trajectory in the existing Plan table. Candidate rows come from their own native replay, not the unrelated native baseline. Replay-validated charge ceilings are real candidate limits, not cosmetic percentages. Columns, colours, totals and calculation precision are preserved; technical detail stays in Show Debug. Applied status needs a valid observed-command receipt; future rows remain forecasts. Missing/stale/blocked evidence cannot display an old candidate as current.

The existing external EV executor remains the only automatic EV switch writer. Bounded cache-only lease revalidation cannot authorise a new intent or indefinitely extend an old plan. No forced relay actions, extra hardware polling, BMS bypass or speculative recovery writes were used.

EV compatibility review after the rebase

The post-rebase review checked the published fcf54648 tree, not main without this PR's changes. Joint publication/execution guards, plugin-hook suppression, lease refresh, HA last_updated, replay physics/kernel exclusion and Plan rendering were retained; upstream's per-car plan isolation is also present. The eight joint runtime modules are unchanged by the rebase. Diagnostics remain optional to replay; the shared-template backend remains a separate, fail-closed dependency for that apply mode.

Do not co-enable the native charger controller with joint apply. The joint publisher uses numeric minutes in planned plus the separate versioned valid_from/valid_until lease. Upstream CarChargerControl reads textual planned windows, not the joint lease contract. An offline reproduction with the real publisher/parser/mixin and a fake charger produced an empty native window list and an OFF command from a valid joint ON publication. No physical command was sent. Merely converting the window timestamps would not add the required lease, permission, hysteresis or cooldown checks.

Joint apply continues to require the sole separately commissioned external EV executor. GECloud EVC, myenergi Zappi and Ohme native plan-driven control must remain absent/inactive for this mode; Ohme's auto setting must not be mistaken for disabled. The joint preflight rejects Octopus scheduling and registered plan hooks, but does not automatically detect every component-based competing writer. Concurrent native control is unsupported, not an automatically prevented or validated combination. No new controller or live configuration change was made.

Seven focused groups passed again in the local combined tree with the template required and no skips: native joint replay, real entrypoints, joint apply, grid-support physics, smart-car scheduling, native charger control and joint sessions. An additional isolated publication probe revoked an expired receipt. These supplement, rather than replace, the exact-tree full-suite results below; they do not establish physical EV commissioning or complete the unresolved dynamic-call graph analysis.

Validation and limits

  • Exact public head: 364/364 registered groups passed, including slow tests and a freshly rebuilt/loaded native kernel. Without Add shared Deye/Solarman template with observed service sequences #5505, five groups test safe missing-backend rejection and explicitly skip their real-template scenarios; that is not integration acceptance.
  • Local integration of the three public heads: 367/367 groups passed, no skips, with the shared template required and another fresh kernel. Shared-file merge resolutions are local; no combined branch was pushed.
  • The rebase keeps the joint EV publication guard and upstream per-car plan isolation together. Focused joint-entrypoint, smart-car scheduling, shared charger-control, inverter-execution and Plan-staleness groups pass. The native charger-control and car-hold discharge-rate fixes from main are retained; no changes were made to the joint runtime modules themselves. The previous renderer regression remains in the full suite.
  • All repository pre-commit checks pass on both trees. Documentation builds; unrelated existing warnings remain. New functions/classes have docstrings. GitNexus impact/change analysis was rerun after reindexing. The full PR changes still carry critical risk and dynamic-call relationships remain unresolved; this is not a graph all-clear.
  • Separately, the installed revision passed 365 registered groups, 254 native power combinations, captured 48-hour nominal/PV10 replays and isolated deployment/recovery tests. Browser checks on captured installed HTML verified 96 Plan data rows, 11 columns and unchanged cells/colours across Show Debug toggles. These are software/replay results, not physical delivery measurements.

My installation retains 160 A domestic charge/discharge (approximately 8192 W at nominal 51.2 V, not a constant physical wattage clamp), 6000 W Peak Shaving, the separate 16000 W EV-executor cutoff, 10% domestic reserve/5% shutdown, 15%/25% EV pause/restart and 600 s cooldown. The 6.77 kW, 25 kWh, requested-100% EV settings, manual domestic targets, local Solarman and disabled Deye Cloud remain unchanged.

Physical EV charging has not been commissioned or demonstrated by this update. The installed EV session remains unauthorised/expired (execution_authorised: false, apply_verified: false); deployment did not renew it. Charging/pausing/restarting under load, actual departure SOC, realised savings, outage recovery and instantaneous power enforcement remain unverified. Current-head upstream CI remains approval-blocked as reported above; previous runs required maintainer approval, and older fork-CI results do not validate this head.

@arturonaredo
arturonaredo force-pushed the feat/joint-site-shadow branch from 6919a7b to fe51fff Compare October 13, 2026 08:46
@arturonaredo
arturonaredo force-pushed the feat/joint-site-shadow branch from fe51fff to fcf5464 Compare October 13, 2026 09:20
…ority

Preserve metering and observation continuity, daily targets and bounded execution leases. Keep absent-car demand model-only. Invalidate stale execution evidence when the HA priority changes. Guard optional template-dependent test suites for standalone PR validation.

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