Files
Enelix-EMS/docs/netplan-v4-unified-release.md
T

78 lines
5.2 KiB
Markdown

# V4 Unified RC1 - actual scope and release boundary
This release consolidates application data recovery, native delivery status, economic
family comparison, and optional verified archival. It is NOT a production actuation
release. No claim that all original product requirements or hardware acceptance are
complete. Sources are in the existing develop branch, not feature branches.
## Delivered code
* Audited recovery for the exact 100.0/100 splitToleranceW serialization defect.
The internal operator endpoint validates the two complete JSON representations,
their exact SHA256, installation, inventory, and every field. Only that numeric
representation may differ. Device-supplied arbitrary aliases are never accepted.
Existing rows/measurements are not rewritten. The original received mapping and
proof reference are recorded with the observation. A mixed 45/75 block and retries
are regression tested. Adoption requires an explicit deployment flag.
* Native normalization prevents recurrence. The sender preserves a separate last
successful receipt even during scheduled/backoff states, reports safe numeric HTTP
status (no response or credential text), and continues trying to deliver a durable
prefix if the current capture cannot be appended. No cursor reset or skipped block.
* Economic comparison is actually connected, not an empty score list. At the start
of a local calendar day the worker freezes comparable plans for families 3/13/23
with the then-known forecasts, prices and common battery/limit state. Completed
days are evaluated against subsequently acquired physical residual data. Initial
energy, losses, common terminal energy valuation and 15-minute demand charge are
included; monthly maxima are charged once over a comparison period, not per day.
GUI lookback/minimum days/coverage/switch margin are applied by the selector.
* v1 economic scope: one grid-charge-enabled battery, frozen day-ahead plans, with
local grid-target tracking simulated during the day. It is NOT a full receding-
horizon replay. Historical external SDL uses the then-recorded SDL request and is
clearly marked as an estimate, not independently measured delivery. Missing
actuals, unmatched contexts and breaches cannot become zero cost or a successful
comparison. Broader device topologies stay collecting; no fake equivalence.
* Lossless archive implementation and tests are present for acknowledged old native
outbox days and old server observations/plans. Archives are verified before plain
rows/files are retired. Active plans, acknowledged plans and unacknowledged data
are excluded. Archiving is OFF by default; enable only with an explicit storage
policy (native NetzfahrplanV4ArchivAktiv; server NETPLAN_V4_ARCHIVE_ENABLED=1).
Compressed archives are retained: this is not an external backup or infinite disk.
## Deployment is not data/model/actuator acceptance
Server entry: commissioning/deploy_unified_release.py. Default checks sources only.
--apply builds and tests a separate candidate context with no network/production
mounts before replacing the V4 service. It preserves the running plant allowlist,
backs up SQLite consistently, and uses a pinned built image. Only the V4 planner JS
asset is updated; unrelated GUI work, portal runtime, tariffs, forecasting, Symcon
and actuators are untouched. Rollback restores previous source/image; additive audit
rows remain. Database schema changes do not overwrite old observations.
--approve-numeric-mapping-compatibility explicitly authorizes the demonstrated pair
of equivalent configuration representations. Without it, strict original validation
remains and backlog containing the legacy serialization is still rejected.
Lihrenmoos native stage: /srv/agent/netplan-v4-unified-release/install.php.
This patches three data-only libraries, reloads the existing library, compares all
pre-existing properties and lets the existing data timer resume. No raw replay,
force-skip or actuator callback from the installer. Archiving stays disabled by default.
## Remaining product work - do not label as complete
1. The full production dispatcher is not installed. Earlier controlled-trial code
still has bounded pilot grants; continuous production authority and complete
corrected physical/virtual feedback integration are NOT delivered by this RC.
2. The actual host/container/kernel and field acceptance of this release are not
replaced by CLI mocks. Real source validity and independent command-loss behavior
are not asserted by a measurement algebra or an override.
3. The replay limitation above must be accepted as a beta feature, or extended to
continuous rolling reoptimization and additional asset types before advertising
the original full automatic-selection requirement.
4. Native multi-plant commissioning, external backups, retained archive lifecycle,
model quality on field data and publication authentication remain operational
release criteria. The tests do not demonstrate actual cost savings.
Do not re-run obsolete piecemeal installers after this release, bypass their source
checks, turn the previous grid schedule on, or turn 'productionReady' true manually.
The retained EV capacity is 161.44 kWh / 39 kW; SDL reserve is already outside EV.