mirror of
https://github.com/Akkudoktor-EOS/EOS.git
synced 2026-10-10 08:26:38 +00:00
docs(integration): define parallel packages and Optimize compatibility gates
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
# Remaining EOS packages and Optimize compatibility
|
||||
|
||||
Snapshot: 2026-09-16. Official main: `4a37244`. Feature source: `d2e2d58`, plus
|
||||
separately backed-up local work. This is a functional package estimate, not a claim
|
||||
that every differing commit requires its own PR.
|
||||
|
||||
## What is still missing on main
|
||||
|
||||
| Package | Missing behavior relative to feature/local work | Local state | Dependency |
|
||||
| --- | --- | --- | --- |
|
||||
| Device physics | Slot-duration-aware battery/inverter flows, export control, efficiency and limits | Already ported/tested in integration; needs isolated review branch | #1256 device settings/converters |
|
||||
| Complete GENETIC | Quarter-hour orchestration, adaptive evolution, export states, warmstart alignment, forecast tail/terminal value, EV deadlines and flexible consumer profiles | Physics and primitives exist; orchestration/parameter/output integration remains open | Device physics, #1256, tariff contract |
|
||||
| Imported tariff protection | Preserve supplied/imported revenue; avoid silent demo or market-price replacement | Independent main adaptation in progress; feature-specific override still required inside GENETIC port | Main patch independently possible; second part belongs with GENETIC |
|
||||
| Local calibrated PV | Local Akkudoktor PV calculation, measurement calibration and outage handling under existing provider ID | Independent main port in progress | Provider-specific settings; combined forecast/optimizer acceptance later |
|
||||
| Measurement APIs | Typed channels, quality, energy integration, household balance and capacity estimate APIs | Isolated tested local branch exists | #1256, #1305, configuration corrections; JSON fix #1322 |
|
||||
| Config-owned Optimize request | Local ConfigOptimizationRequest, /v1/optimize, runtime observations and common parameter resolver | Backed up; async/maps/converters adaptation pending | New GENETIC and #1305 |
|
||||
| Result/PDF output | Quarter-hour, flexible-consumer, export, tail/rest-value diagnostics in main's on-demand algorithm-specific output | Pending | Final GENETIC result contract |
|
||||
|
||||
Seven feature packages remain in this planning snapshot. They may produce roughly
|
||||
seven further feature PRs; tightly coupled packages may be combined, and independently
|
||||
confirmed defects may require an additional small fix. #1256 and #1305 are existing
|
||||
foundation PRs, not two newly invented replacements. #1224/#1304 already address
|
||||
parts of the tariff work against the old feature branch; preserve/reconcile those
|
||||
contributions rather than count duplicate implementations as separate deliverables.
|
||||
PR #1322 is already published and is additional to this remaining-work table.
|
||||
|
||||
Local helper scripts and private HA-core divergence are not silently included in this
|
||||
count. They remain separately secured/to be audited. Changelog/release work follows
|
||||
acceptance; it is not another optimizer implementation.
|
||||
|
||||
## Parallel lanes
|
||||
|
||||
- Local PV: `feat/local-pv-main-port`, sibling worktree `EOS-pr-local-pv`.
|
||||
- Tariff preparation: `fix/imported-feedin-main`, sibling `EOS-pr-feedin-main`.
|
||||
- Optimize compatibility tests: `test/optimize-pr-contracts`, sibling
|
||||
`EOS-pr-optimize-contracts`. These are shared acceptance coverage, not necessarily
|
||||
an extra standalone public PR.
|
||||
- Root/integration: configuration prerequisites, shared API/algorithm contracts and
|
||||
eventual combination of the tested packages.
|
||||
|
||||
Do not have multiple lanes independently rewrite geneticparams.py, EMS.run or the
|
||||
same configuration structure. A tested tariff patch will be carried into the core
|
||||
port; the core port must keep its regression cases. PV keeps the public
|
||||
PVForecastAkkudoktor ID and existing remote behavior unless explicitly selected.
|
||||
Parallel preparation does not imply parallel unreviewed merges or publishing all
|
||||
branches. Only the JSON fix has publication approval at this point.
|
||||
|
||||
## Three different Optimize contracts
|
||||
|
||||
1. Legacy POST `/optimize` on main explicitly runs GENETIC0, hourly. Existing payload
|
||||
and legacy response aliases must keep working regardless of configured default.
|
||||
2. Automatic EMS with `ems.mode=OPTIMIZATION` selects `optimization.algorithm`:
|
||||
GENETIC or GENETIC0. Preparation and solution conversion are asynchronous.
|
||||
PREDICTION and DISABLED must not accidentally run optimization or dispatch controls.
|
||||
3. The feature worktree's LOCAL POST `/v1/optimize` and ConfigOptimizationRequest are
|
||||
not present on main/integration yet. They must be adapted to current maps,
|
||||
converters and algorithm-specific settings. Old feature `/optimize` meant a
|
||||
different optimizer; clients need explicit migration, not a silent route switch.
|
||||
|
||||
Current blockers: GENETIC.prepare still forces interval_sec to 3600 and EMS start
|
||||
alignment floors to the hour. Fifteen-minute device tests do not prove quarter-hour
|
||||
Optimize-mode support. The core package must change preparation, slot alignment,
|
||||
optimization and response metadata together.
|
||||
|
||||
A further suspected failure-path defect is being verified: after a failed explicit
|
||||
optimization, the HTTP route may return a previous stored solution. Until confirmed
|
||||
on unchanged main, treat this as an audit finding, not a proven upstream bug. A failed
|
||||
new request must never claim an old result as its fresh successful optimization.
|
||||
|
||||
## Shared acceptance before dependent PRs can land
|
||||
|
||||
| Area | Required combined check |
|
||||
| --- | --- |
|
||||
| Routing | Legacy /optimize remains GENETIC0; automatic mode selects the configured algorithm; the new explicit API selects GENETIC deliberately |
|
||||
| Configuration | Stable device IDs/maps and converters, runtime changes retained, old aliases migrated without losing values |
|
||||
| Time | 900/3600-second slots, non-hour-aligned start and advancing warmstart, timezone/DST boundaries, matching output timestamps |
|
||||
| Units | PV/load predictions are W; integrate once to slot Wh. `feed_in_tariff_wh` and `elecprice_marketprice_wh` already yield amount/Wh; convert amount/kWh configuration exactly once |
|
||||
| Tariffs | Positive/zero/negative/imported revenue remains distinct from purchase cost; missing or invalid imported data does not silently become demo data |
|
||||
| Devices | SOC/energy balance, charge/discharge and inverter limits, allowed/blocked battery export |
|
||||
| Consumers | Feature profiles/deadlines and #1256 per-cycle windows/gaps both preserved; impossible schedules fail explicitly |
|
||||
| Results | Raw algorithm result, generic optimization solution, execution plan and on-demand PDF agree on slots and device IDs |
|
||||
| Errors | Failed preparation/optimization produces no new control dispatch and no misleading fresh-success response using old results |
|
||||
|
||||
A passing individual PR is insufficient: after combining dependent packages, run
|
||||
these synthetic end-to-end API cases together with the GENETIC0 regression suite.
|
||||
No device control, HA deployment or production configuration is part of this work.
|
||||
Reference in New Issue
Block a user