From f4914a174a574d7a8753d29f68e1dd25195db4e3 Mon Sep 17 00:00:00 2001 From: glenn schrooyen Date: Sun, 30 Aug 2026 19:13:58 +0200 Subject: [PATCH] TARIFF-01: measure the month's billed peak, and make it survive a restart The 15-minute block average was already built and unwired. p1.QuarterAverager computes clock-aligned 900 s blocks, time-weighted over irregular telegram spacing, offtake-only and per-phase; P1Ingest.blocks was a 96-entry list in memory that a restart erased. So this is the persistence and the monthly reduction, not a second accumulator - a second one would be a second source of truth for the exact quantity the money depends on. BLOCKS, NOT A SLIDING WINDOW. The card says "rolling"; 9.1 bills "the highest 15-minute average offtake" and states its own worked case per QUARTER - one 4998 W quarter moving a monthly peak from 4832 to 5013 W. A trailing window reports a peak the meter never bills, and reports it HIGH: a burst straddling :15 fills the window completely while contributing to two block averages at partial weight. DELIVERED, NOT INTENDED. tariff.py only ever sees P1Sample - the meter's own reading - and never a setpoint. SAFETY-20's open question does not arise for a capacity tariff: the utility integrates the current that flowed. AN UNREADABLE STORE IS NOT A ZERO PEAK. peak() answers OBSERVED / NO_RECORD / NOT_OBSERVED with peak_w None unless observed, which is riglock.holder()'s fix applied to something that spends money. A peak read as 0 W hands SAFETY-07 maximum headroom and disarms the guard at the moment its own storage breaks. Restart mid-block resumes the accumulator through a new snapshot()/restore() pair, checkpointed every 15 s and cleared in the same breath as a block close. The held sample keeps its ORIGINAL timestamp, so an outage is integrated under the same max_hold_s rule a running process would apply. quarter_start is the primary key and a re-bank may only ever RAISE a figure. Calendar months are LOCAL: a quarter starting 22:15 UTC on 31 August bills in September. No new option (the limit is the existing peak_cap_w), so config.yaml and validate.py are untouched and CFG-03 is not widened. No second peak entity: peak_forecast_entity stays the input to maintenance_charge_floor(), because repointing that consumer changes what moves energy and belongs to SAFETY-07. AC 3 is NOT met. It asks for 30 days of replay; two days of this house's real meter exist and are committed here. test_tariff.py part 9 replays them, reports the percentage next to the sample size in days, and asserts nothing about 95 %. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_015VXjA3LWccN1rJsk3okyPC --- goodwe_controller/CHANGELOG.md | 53 + goodwe_controller/app/main.py | 56 +- goodwe_controller/app/p1.py | 48 + goodwe_controller/app/tariff.py | 682 +++++++++++++ .../scenarios/p1-net-2026-08-20.jsonl.gz | Bin 0 -> 139723 bytes .../scenarios/p1-net-2026-08-23.jsonl.gz | Bin 0 -> 136307 bytes goodwe_controller/test_tariff.py | 910 ++++++++++++++++++ 7 files changed, 1748 insertions(+), 1 deletion(-) create mode 100644 goodwe_controller/app/tariff.py create mode 100644 goodwe_controller/scenarios/p1-net-2026-08-20.jsonl.gz create mode 100644 goodwe_controller/scenarios/p1-net-2026-08-23.jsonl.gz create mode 100644 goodwe_controller/test_tariff.py diff --git a/goodwe_controller/CHANGELOG.md b/goodwe_controller/CHANGELOG.md index bb736d6..5ea10a8 100644 --- a/goodwe_controller/CHANGELOG.md +++ b/goodwe_controller/CHANGELOG.md @@ -2,6 +2,59 @@ ## Unreleased +**The capacity-tariff peak is now measured, banked and survives a restart +(TARIFF-01).** New `app/tariff.py`. The 15-minute block average itself was +already built and unwired - `p1.QuarterAverager` computes clock-aligned 900 s +blocks, time-weighted over irregular telegram spacing, offtake-only and +per-phase - and `P1Ingest.blocks` was a 96-entry list a restart erased. This +adds the SQLite behind it (`/data/tariff.db`): one row per completed quarter in +the indefinite 15-min tier, one row per calendar month in the permanent peak +tier, and no `DELETE` against either anywhere in the module. + +**Blocks, not a sliding window.** The card says "rolling"; 9.1 bills "the +highest 15-minute average offtake", stated per QUARTER. "Rolling" here means +continuously updated, not a trailing-15-minutes window - a trailing window +reports a peak the meter never bills, and reports it HIGH, because a burst +straddling :15 fills it completely while contributing to two block averages at +partial weight. + +**A restart mid-block resumes it, and a restart that outlives the block banks +it.** `QuarterAverager` grew `snapshot()`/`restore()`; the tracker checkpoints +the open block every 15 s (worst case 1.7 % of one quarter) and clears the +checkpoint in the same breath as a block close. The held sample keeps its +ORIGINAL timestamp across the restart, so the outage is integrated under the +same `max_hold_s` rule a running process would apply and uncovered seconds drag +the closed block DOWN rather than being held forward. `quarter_start` is the +primary key and a re-bank may only ever RAISE a figure, so a replay cannot +double-count and a partial re-run cannot lower a quarter already measured. + +**An unreadable store is not a zero peak.** `peak()` answers `OBSERVED` / +`NO_RECORD` / `NOT_OBSERVED` and carries `peak_w = None` unless observed - the +`riglock.holder()` fix applied to something that spends money. A peak read as +0 W hands SAFETY-07 maximum headroom and silently disarms the guard at the +moment its own storage breaks, so there is no accessor that defaults it: a +caller who forgets gets a `TypeError`, and the status page prints a different +row for "no quarter yet" than for "the database did not answer". + +**Calendar months are LOCAL, blocks are UTC.** A quarter starting 22:15 UTC on +31 August bills in September. Block alignment still needs no timezone. + +**No new option, and no second peak entity.** The soft limit is the existing +`peak_cap_w`; `config.yaml` and `validate.py` are untouched, so CFG-03 is not +widened. `peak_forecast_entity` stays the input to `maintenance_charge_floor()` +- repointing that consumer changes what moves energy and belongs to SAFETY-07. + +**It measures and nothing else.** No claim, no clamp, no command; graded on the +parsed syntax in `test_tariff.py`, which also proves the same grader lights up +on `main.py`. Per SAFETY-20, the quantity is DELIVERED power - `tariff.py` only +ever sees `P1Sample`, the meter's own reading, never a setpoint. + +**AC 3 is not met and the check says so.** It asks for 30 days of replay; two +days of this house's real meter exist (2026-08-20, 2026-08-23), now committed as +`scenarios/p1-net-*.jsonl.gz`. `test_tariff.py` part 9 replays them, reports +the percentage under the shipped limit next to the sample size in days, and +asserts nothing about the 95 % figure. + **A computed setpoint over the rating now alarms instead of being clipped in silence (SAFETY-03).** The clamp was never the missing half - specs.md 10.3 records an unclamped integrator climbing ~130 W per 4 s past 10 kW and reporting diff --git a/goodwe_controller/app/main.py b/goodwe_controller/app/main.py index 98db6d1..d7fd7ef 100644 --- a/goodwe_controller/app/main.py +++ b/goodwe_controller/app/main.py @@ -45,6 +45,7 @@ from .hass import HomeAssistant from .maintenance import IDLE, MaintConfig, Maintenance from .mqtt import MqttPublisher from .p1 import P1Ingest, build_source, is_enabled +from .tariff import PeakStore, PeakTracker from .validate import ConfigRefused, refuse, validate_startup_config from .watchdog import SignWatchdog, SignWatchdogConfig, loop_is_following from . import web @@ -63,7 +64,8 @@ def load_options() -> dict: class Controller: - def __init__(self, opts: dict, hass: HomeAssistant, store, mqtt_pub, *, stop): + def __init__(self, opts: dict, hass: HomeAssistant, store, mqtt_pub, *, stop, + peak_db_path: str = "/data/tariff.db"): self.o = opts self.hass = hass self.store = store @@ -163,6 +165,29 @@ class Controller: self.p1 = P1Ingest(phases=int(opts.get("meter_phases", 1)), max_age_s=float(opts.get("meter_max_age_s", 30))) self.p1_enabled = is_enabled(opts) + + # TARIFF-01. The capacity-tariff peak: measured from the meter, banked + # in SQLite, restored across a restart. It is an INSTRUMENT - it files no + # claim and clamps nothing. SAFETY-07 is what will read it. + # + # ⚠️ NO NEW OPTION. The soft limit is `peak_cap_w`, already shipped, + # already validated, already read by control.peak_at_risk(). CFG-03 + # tracks three places option defaults live; a fourth, for a limit that + # already exists, is the mistake the clamp watchdog declined to make ~30 + # lines up. config.yaml and validate.py are untouched by this ticket. + # + # ⚠️ AND NO SECOND PEAK ENTITY. `peak_forecast_entity` is the existing + # HA-side delegation and it stays the input to maintenance_charge_floor(): + # repointing that consumer at this measurement CHANGES WHAT MOVES ENERGY + # during a maintenance charge, which belongs to SAFETY-07 with its own + # acceptance, not to a measurement ticket. What this adds is the MEASURED + # MONTH PEAK - a different quantity from a forecast entity, published + # nowhere as a duplicate of it. + self.peak_store = PeakStore(peak_db_path) + self.peak = PeakTracker(self.peak_store, + cap_w=float(opts.get("peak_cap_w", 3500))) + self.peak.restore(self.p1.averager) + _LOG.info("capacity-tariff peak store: %s", self.peak.restore_state) # Set by amain() once the transport is built, so the status page can show # what only the transport knows (homewizard_local's unchanged_s). Stays # None when P1 is off, or under a transport that has no such counter. @@ -500,6 +525,14 @@ class Controller: # is not, and test_freeze.py part 5 fails on exactly that. await self.check_meter_frozen() + # --- TARIFF-01, and it is LAST on purpose ----------------------------- + # Banking a quarter is bookkeeping about a moment that has already + # happened; a slow SD card must never sit between the meter and the + # setpoint. Its position is unconstrained in the way SAFETY-03's and + # SAFETY-18's are not - it grades neither `target` nor `standing` and + # reads only `self.p1`, which no line in this method writes. + self.peak.sync(self.p1) + async def check_output_clamp(self) -> None: """SAFETY-03. Alarm whenever a clamp actually engaged this cycle. @@ -837,6 +870,27 @@ class Controller: f"{self.freeze_wd.cfg.hold_s:.0f} s unchanged " f"while the command is over " f"{rail_w(self.o.get('max_w', 2000)):.0f} W)"}) + + # TARIFF-01. The month's billed peak, and - the load-bearing half - + # a DIFFERENT row when the store could not answer. "no peak yet" is + # a normal state on the 1st; "unreadable" is a broken instrument, and + # a status page that spelled them the same way would let a 0 W read + # look like a quiet month right up until SAFETY-07 shaved nothing. + _pk = self.peak.peak() + if _pk.is_unreadable: + out.append({"ok": False, "warn": True, + "text": "capacity-tariff peak: " + _pk.explain()}) + else: + # §9.1's "warning entity at 80 %", as a status row rather than + # a second entity - see the constructor on not doubling up. + _frac = self.peak.warning_frac() or 0.0 + _ok = _frac < 0.8 + out.append({"ok": _ok, "warn": not _ok, + "text": _pk.explain() + + f" - {_frac * 100:.0f} % of the " + f"{self.peak.cap_w:.0f} W soft limit" + + f"; {self.peak.recorded} quarter(s) banked" + + f"; on start: {self.peak.restore_state}"}) rows = [("battery SoC", self.soc, o.get("soc_entity")), ("battery power", self.batt, o.get("batt_entity"))] if not self.p1_enabled: diff --git a/goodwe_controller/app/p1.py b/goodwe_controller/app/p1.py index 0687b32..c6ee380 100644 --- a/goodwe_controller/app/p1.py +++ b/goodwe_controller/app/p1.py @@ -353,6 +353,54 @@ class QuarterAverager: self._last_pp = sample.per_phase_w return closed + # -- surviving a restart (TARIFF-01) ------------------------------------ + def snapshot(self) -> dict: + """The open block's whole state, as JSON-safe primitives. + + ⚠️ `last_t` is the HELD SAMPLE'S OWN timestamp and is stored as it is, + not refreshed to "now". That is what makes a restart integrate the gap + under exactly the `max_hold_s` rule a running process would have used: + a short restart is a plateau, a long one leaves uncovered seconds that + drag the closed block's average down. Rewriting it to the restore time + would silently credit the whole outage at the last value seen before it. + """ + return { + "block": self._block, + "acc": self._acc, + "pp_acc": list(self._pp_acc), + "elapsed": self._elapsed, + "last_t": self._last_t, + "last_net": self._last_net, + "last_pp": list(self._last_pp) if self._last_pp is not None else None, + "phases": self.phases, + } + + def restore(self, state: dict) -> bool: + """Put a `snapshot()` back. False if it does not fit this averager. + + A phase-count change is a reconfiguration, not a resumption: the + per-phase accumulator would be reshaped mid-block and the two halves + would not be the same measurement. Refusing is the honest answer, and + the caller reports starting fresh rather than pretending it resumed. + """ + try: + if int(state.get("phases", self.phases)) != self.phases: + return False + pp_acc = list(state.get("pp_acc") or []) + if len(pp_acc) != self.phases: + return False + self._block = None if state["block"] is None else int(state["block"]) + self._acc = float(state["acc"]) + self._pp_acc = [float(v) for v in pp_acc] + self._elapsed = float(state["elapsed"]) + self._last_t = None if state["last_t"] is None else float(state["last_t"]) + self._last_net = float(state["last_net"]) + lp = state.get("last_pp") + self._last_pp = tuple(float(v) for v in lp) if lp is not None else None + return True + except (KeyError, TypeError, ValueError): + return False + # --------------------------------------------------------------------------- # # what the rest of the add-on talks to diff --git a/goodwe_controller/app/tariff.py b/goodwe_controller/app/tariff.py new file mode 100644 index 0000000..7893da5 --- /dev/null +++ b/goodwe_controller/app/tariff.py @@ -0,0 +1,682 @@ +"""TARIFF-01 - the monthly capacity-tariff peak, and the record that outlives it. + +WHAT THIS IS, AND WHAT IT DELIBERATELY IS NOT. This module is an INSTRUMENT. It +measures the number the Belgian capaciteitstarief bills on - the highest +15-minute average offtake of the calendar month (Fluvius / Resa / Ores) - and it +writes that number down somewhere a restart cannot reach. It makes no claim, +applies no clamp, and commands nothing. The guard that will read it is SAFETY-07, +and it belongs in `arbiter.py` as a `P_PEAK` claim when it is built. Keeping the +measurement and the actuation apart is the whole reason this file is small. + +WHAT WAS ALREADY BUILT, AND WHY THIS CARD IS NOT 8 SP OF NEW ARITHMETIC. +`p1.QuarterAverager` already computes AC 1 in full: clock-aligned 900 s blocks, +time-weighted over irregular telegram spacing, offtake-only, per-phase, with a +`max_hold_s` gap rule. It was unwired and unpersisted - `P1Ingest.blocks` is a +96-entry list in memory that a restart erases. So this file is the persistence +and the monthly reduction, not a second accumulator. Adding one would be adding +a second source of truth for the exact quantity the money depends on. + + BLOCKS, NOT A SLIDING WINDOW. The Description says "rolling"; AC 1 says + "15-min block average". They are different numbers and the utility bills the + second one. §9.1 calls the billed unit the "highest 15-minute average offtake", + and §9.1's own worked case - "one 4998 W quarter moved a monthly peak from + 4832 -> 5013 W" - is stated per QUARTER, an object a sliding window does not + have. "Rolling" here means CONTINUOUSLY UPDATED (the open block's partial + average is readable at every sample), not a trailing-15-minutes window. A + trailing window would report a peak the meter never bills, and it reports it + HIGHER than the real one: a load burst straddling :15 fills a trailing window + completely while contributing to two block averages at partial weight. Guarding + that would spend battery defending an interval nobody charges for. + + DELIVERED POWER, NOT INTENDED POWER. SAFETY-20 has an open question about + whether guards should grade `Decision.target` (pre-clamp intent) or `standing` + (what actually reached the wire). For a capacity tariff there is no question to + ask: the utility's meter integrates the current that flowed. This module never + sees a setpoint at all - it consumes `P1Sample`, which is the meter's own + reading - and that is on purpose. A peak computed from intent would be wrong in + the expensive direction (a clamped 9 kW request that delivered 5 kW would + record 9 kW, and every consumer would shave against a peak that never existed). + + AN UNREADABLE STORE IS NOT A ZERO PEAK. This is the defect this repo spent a + day removing from `sim/riglock.py`, where `holder()` was rewritten to answer + `observed / not_observed / gone` instead of a partial dict every caller + `.get()`s a default out of. The same trap is here and it is worse, because the + degenerate value is not merely wrong, it is DISARMING: a peak read as 0 W gives + SAFETY-07 the maximum possible headroom and silently switches the guard off at + the moment its own storage is broken. So `peak()` returns a `PeakReading` whose + `state` is one of OBSERVED / NO_RECORD / NOT_OBSERVED, `peak_w` is `None` + unless the state is OBSERVED, and there is no `.get(..., 0)` shaped accessor + anywhere on it. NO_RECORD ("this month has no completed block yet", a normal + state on the 1st) and NOT_OBSERVED ("the database did not answer") are + different types of thing and are never spelled the same way. + +CONFIG: NONE ADDED, ON PURPOSE. CFG-03 is open because the option defaults +already live in three places held apart by a tripwire in `test_validate.py`. The +soft limit this measurement is graded against already exists as `peak_cap_w` +(config.yaml, default 3500), already validated, already read by +`control.peak_at_risk()`. §14 names a `tariffs.capacity_peak_limit_kw: 2.5` - in +KILOwatts, against watts everywhere else - and adding it would have made a fourth +defaults site AND imported the unit mismatch §14's own warning box says must be +caught at startup. So this module takes its limit as a plain constructor +argument in WATTS and config.yaml is untouched by this ticket. + +THE DATABASE. SQLite in /data, the add-on's only durable volume, alongside +`store.py`'s state.json. Two tiers from §15, and their retention is the point: + + quarter_blocks one row per completed 900 s block INDEFINITE + monthly_peak one row per calendar month PERMANENT + +Neither is ever pruned here, and no sweep in this file can prune them - there is +no DELETE statement against either table anywhere in this module. §15's asymmetry +is why: raw samples vanish after 7 days, so a 15-minute aggregate that was not +written AS IT HAPPENED can never be recomputed. `monthly_peak` is maintained as a +derived record - upserted on every block close, and `recompute_month()` re-derives +it from `quarter_blocks` so the two can be PROVEN not to have diverged rather +than assumed not to have. + +RESTART MID-BLOCK. The open block's accumulator is memory. A restart at minute 12 +that dropped it would under-read the rest of the quarter, and SAFETY-07's clamp +would release exactly when it was most needed. So the accumulator is checkpointed +(`QuarterAverager.snapshot()`) into a single row, at most `CHECKPOINT_S` stale, +and restored on startup. Three cases, all of them exercised in `test_tariff.py`: + + * the checkpoint's block is the block containing `now` -> restore it verbatim, + including the held sample's ORIGINAL timestamp, so the first sample after the + restart integrates the gap under the same `max_hold_s` rule a running process + would have applied. A restart longer than `max_hold_s` therefore leaves + uncovered seconds, and a closed block is always divided by the full 900 s, so + the gap DRAGS THE BILLED AVERAGE DOWN instead of being averaged away; + * the checkpoint's block ended while we were down -> that block really happened + and its measured part is real, so it is closed at `acc / 900` and recorded, + then a fresh block is opened. Discarding it would lose measured energy; + * no checkpoint, or one that cannot be read -> start clean and SAY SO. The + return value of `restore()` names which of the three happened; it is never + silently the first one. + +Double counting is answered structurally rather than by care: `quarter_start` is +the PRIMARY KEY, and the recorded average may only ever be RAISED by a later +write (`ON CONFLICT ... WHERE excluded.offtake_avg_w > ...`). Replaying the same +block twice is therefore a no-op, and a restart that reprocesses a block with +LESS coverage than the first pass cannot lower a figure already banked. + +MONTH BOUNDARY. Calendar months are LOCAL (Europe/Brussels); blocks are stored in +UTC. In August those differ by two hours, so a block starting 2026-08-31 22:15 +UTC belongs to SEPTEMBER and putting it in August would move a month's bill. +Block alignment itself needs no timezone - every Belgian offset is a whole number +of hours, so the 900 s UTC grid lands on :00/:15/:30/:45 local on both sides of a +DST transition, which is the argument `QuarterAverager` already carries. +""" + +import json +import logging +import os +import sqlite3 +from dataclasses import dataclass +from datetime import datetime, timedelta, timezone, tzinfo + +_LOG = logging.getLogger("goodwe.tariff") + +QUARTER_S = 900 + +# How stale the partial-block checkpoint may be. This is the ONLY thing a crash +# can lose from an open block, and the loss is bounded and one-directional: the +# lost seconds were already integrated into `_acc`, so dropping them makes the +# restored block read LOW, never high. At 15 s against a 900 s block the +# worst-case under-read of one quarter's average is 15/900 = 1.7 % of that +# quarter's own offtake - see test_tariff.py, which computes that bound from +# these two constants rather than quoting it. +CHECKPOINT_S = 15.0 + +# -- reading states. Three, and never fewer. -------------------------------- # +OBSERVED = "observed" # the store answered and there is a peak +NO_RECORD = "no_record" # the store answered and this month has none yet +NOT_OBSERVED = "not_observed" # the store did not answer. NOT a zero peak. + + +# --------------------------------------------------------------------------- # +# local time, without a hard dependency on the tz database +# --------------------------------------------------------------------------- # +class _EUTimezone(tzinfo): + """Europe/Brussels by the EU harmonised rule, for hosts with no tzdata. + + ⚠️ THIS IS A FALLBACK AND IT IS NOT SILENT. `zoneinfo` is tried first and is + what runs on the add-on's container. The fallback exists because the + alternative - quietly using UTC when tzdata is missing - misfiles every block + in the last two hours of a month into the wrong month's bill, and does it + without a symptom. Encoding the rule (CET, CEST from 01:00 UTC on the last + Sunday of March to 01:00 UTC on the last Sunday of October) is 20 lines and + is checked against zoneinfo, date by date, wherever zoneinfo is available. + """ + + # The rule, in both frames. `fromutc` is overridden rather than inherited + # because the base implementation calls back into `utcoffset` with a + # datetime whose tzinfo is self - and the first version of this class + # answered that by calling `astimezone`, which calls `utcoffset`, which + # recursed until the stack ran out. A tzinfo must answer from the value it + # is handed, never by converting it. + @staticmethod + def _last_sunday(year: int, month: int, hour: int) -> datetime: + d = datetime(year, month + 1, 1) - timedelta(days=1) + return (d - timedelta(days=(d.weekday() + 1) % 7)).replace(hour=hour) + + def _dst_local(self, naive: datetime) -> bool: + """From a LOCAL wall clock: 02:00 CET last Sunday March -> 03:00 CEST + last Sunday October. The one ambiguous hour each autumn resolves to + standard time, which cannot move a month boundary.""" + y = naive.year + return self._last_sunday(y, 3, 2) <= naive < self._last_sunday(y, 10, 3) + + def _dst_utc(self, naive_utc: datetime) -> bool: + """From UTC: both EU transitions happen at 01:00 UTC, everywhere.""" + y = naive_utc.year + return self._last_sunday(y, 3, 1) <= naive_utc < self._last_sunday(y, 10, 1) + + def fromutc(self, dt: datetime) -> datetime: + return dt + timedelta(hours=2 if self._dst_utc(dt.replace(tzinfo=None)) else 1) + + def utcoffset(self, dt): + if dt is None: + return timedelta(hours=1) + return timedelta(hours=2 if self._dst_local(dt.replace(tzinfo=None)) else 1) + + def dst(self, dt): + if dt is None: + return timedelta(0) + return timedelta(hours=1 if self._dst_local(dt.replace(tzinfo=None)) else 0) + + def tzname(self, dt): + return "CEST" if dt is not None and self._dst_local(dt.replace(tzinfo=None)) else "CET" + + +def _billing_tz(): + try: + from zoneinfo import ZoneInfo + tz = ZoneInfo("Europe/Brussels") + # Prove it resolves before trusting it: a ZoneInfo built from an empty + # tzdata answers, and answering wrongly is the failure being avoided. + if datetime(2026, 7, 1, tzinfo=timezone.utc).astimezone(tz).hour == 2: + return tz + _LOG.warning("zoneinfo Europe/Brussels resolved but gave the wrong " + "summer offset - falling back to the encoded EU rule") + except Exception as err: # noqa: BLE001 - any failure + _LOG.info("no usable tz database (%s) - using the encoded EU rule", err) + return _EUTimezone() + + +BILLING_TZ = _billing_tz() + + +def month_key(when: datetime) -> str: + """The calendar month a UTC instant is billed in, as 'YYYY-MM' LOCAL time.""" + if when.tzinfo is None: + when = when.replace(tzinfo=timezone.utc) + local = when.astimezone(BILLING_TZ) + return f"{local.year:04d}-{local.month:02d}" + + +# --------------------------------------------------------------------------- # +# the per-phase reduction policy - one function, deliberately +# --------------------------------------------------------------------------- # +# §9.1 requires the average be computed per-phase-aware, but does NOT say whether +# the BILLED figure on a three-phase connection is the sum of the phases or the +# worst single phase. §5.2 requires the per-phase data; nothing states the +# reduction. So it is one function with one argument, and correcting it later is +# a one-line change plus a test parameter rather than a change to the +# accumulator. §17's "Three-phase unbalanced load" scenario is the case that +# tells the three apart - on a balanced load all three agree, which is exactly +# why a balanced fixture must not be what this is tested on. +POLICY_NET = "net" # default: the connection's net offtake, what the meter bills +POLICY_SUM = "sum" # sum of the per-phase offtakes (differs when a phase exports) +POLICY_MAX = "max" # the worst single phase + + +def billed_w(block, policy: str = POLICY_NET) -> float: + """Reduce one closed block to the single figure the month is billed on.""" + pp = getattr(block, "per_phase_offtake_avg_w", None) + if policy == POLICY_NET or not pp: + return float(block.offtake_avg_w) + if policy == POLICY_SUM: + return float(sum(pp)) + if policy == POLICY_MAX: + return float(max(pp)) + raise ValueError(f"unknown per-phase reduction policy: {policy!r}") + + +# --------------------------------------------------------------------------- # +# what a read of the store answers +# --------------------------------------------------------------------------- # +@dataclass(frozen=True) +class PeakReading: + """An answer about a month's peak, or an honest refusal to give one. + + ⚠️ There is no `peak_w_or(default)` and there must never be one. Every + accessor that lets a caller turn "the database did not answer" into a number + re-creates the defect this type exists to remove. Callers ask `is_observed` + first, and a caller that forgets gets `None` and a TypeError, which is loud. + """ + + state: str + month: str + peak_w: float | None = None + quarter_start: datetime | None = None + per_phase_w: tuple | None = None + detail: str = "" + + @property + def is_observed(self) -> bool: + return self.state == OBSERVED + + @property + def is_unreadable(self) -> bool: + return self.state == NOT_OBSERVED + + def explain(self) -> str: + if self.state == OBSERVED: + at = self.quarter_start.isoformat() if self.quarter_start else "?" + return f"{self.month}: peak {self.peak_w:.0f} W, set by the quarter at {at}" + if self.state == NO_RECORD: + return f"{self.month}: no completed quarter recorded yet" + return (f"{self.month}: PEAK UNREADABLE ({self.detail}) - this is NOT a " + f"zero peak and must not be used as headroom") + + +# --------------------------------------------------------------------------- # +# the store +# --------------------------------------------------------------------------- # +_SCHEMA = """ +CREATE TABLE IF NOT EXISTS quarter_blocks ( + quarter_start TEXT PRIMARY KEY, -- ISO-8601 UTC, aligned to 900 s + month TEXT NOT NULL, -- 'YYYY-MM', LOCAL calendar month + offtake_avg_w REAL NOT NULL, + per_phase_json TEXT +); +CREATE INDEX IF NOT EXISTS ix_quarter_month ON quarter_blocks(month); +CREATE TABLE IF NOT EXISTS monthly_peak ( + month TEXT PRIMARY KEY, + peak_w REAL NOT NULL, + quarter_start TEXT NOT NULL, + per_phase_json TEXT +); +CREATE TABLE IF NOT EXISTS partial_block ( + id INTEGER PRIMARY KEY CHECK (id = 1), + state_json TEXT NOT NULL +); +""" + + +class PeakStore: + """SQLite behind /data. Every read answers with a state, never with a default.""" + + def __init__(self, path: str = "/data/tariff.db"): + self.path = path + self.ok = False + self.last_error: str | None = None + self._db: sqlite3.Connection | None = None + self._open() + + def _open(self) -> None: + parent = os.path.dirname(self.path) + # ⚠️ THE DIRECTORY IS NOT CREATED. /data is mounted by the Supervisor and + # always exists on a real install, so `makedirs` here could only ever + # succeed where the durable volume is MISSING - manufacturing a database + # on the container's ephemeral layer that looks durable, reads fine, and + # is thrown away on the next restart. That is a peak store that silently + # forgets, which is worse than one that says it cannot answer. + if parent and not os.path.isdir(parent): + self.last_error = f"no durable volume at {parent}" + # INFO, not ERROR: on a dev host or in a test container there is no + # /data and nothing is wrong. A store that OPENED and then broke is + # the error case, and it is logged as one below. + _LOG.info("no peak store: %s - the monthly peak will read " + "NOT_OBSERVED", self.last_error) + return + try: + self._db = sqlite3.connect(self.path, timeout=5.0, + check_same_thread=False) + # WAL: a power cut mid-write must not leave a torn database that + # reads as "no peak this month" - the exact shape of the defect. + self._db.execute("PRAGMA journal_mode=WAL") + self._db.executescript(_SCHEMA) + self._db.commit() + self.ok = True + self.last_error = None + except sqlite3.Error as err: + self._db = None + self.ok = False + self.last_error = str(err) + # ⚠️ Deliberately NOT raised. §6's fail-open rule: an aggregation + # fault must not stop a controller that is regulating a battery. The + # cost of continuing is a peak that reads NOT_OBSERVED, and every + # reader is built to treat that as "do not use me", not as 0 W. + _LOG.error("peak store unusable at %s (%s) - the monthly peak will " + "read NOT_OBSERVED, which is not a zero peak", self.path, err) + + def close(self) -> None: + if self._db is not None: + try: + self._db.close() + finally: + self._db = None + self.ok = False + + # -- writing ------------------------------------------------------------ + def record_block(self, block, policy: str = POLICY_NET) -> bool: + """Persist one completed block and fold it into its month's peak. + + Both tables move in ONE transaction. A crash between them would leave a + banked quarter that the monthly peak does not know about, and the peak is + the record the money is read off. + """ + if self._db is None: + return False + w = billed_w(block, policy) + start = block.start.astimezone(timezone.utc).isoformat() + month = month_key(block.start) + pp = getattr(block, "per_phase_offtake_avg_w", None) + pp_json = json.dumps(list(pp)) if pp else None + try: + with self._db: + # A block may only ever be RAISED. A restart that reprocesses a + # quarter it had already banked will have LESS coverage than the + # first pass (its first seconds are gone), so an unconditional + # REPLACE would silently lower a recorded figure. + self._db.execute( + "INSERT INTO quarter_blocks(quarter_start, month, offtake_avg_w, per_phase_json)" + " VALUES(?,?,?,?)" + " ON CONFLICT(quarter_start) DO UPDATE SET" + " offtake_avg_w=excluded.offtake_avg_w," + " per_phase_json=excluded.per_phase_json" + " WHERE excluded.offtake_avg_w > quarter_blocks.offtake_avg_w", + (start, month, w, pp_json)) + self._db.execute( + "INSERT INTO monthly_peak(month, peak_w, quarter_start, per_phase_json)" + " VALUES(?,?,?,?)" + " ON CONFLICT(month) DO UPDATE SET" + " peak_w=excluded.peak_w," + " quarter_start=excluded.quarter_start," + " per_phase_json=excluded.per_phase_json" + " WHERE excluded.peak_w > monthly_peak.peak_w", + (month, w, start, pp_json)) + return True + except sqlite3.Error as err: + self.last_error = str(err) + _LOG.error("could not record quarter %s (%s)", start, err) + return False + + # -- reading ------------------------------------------------------------ + def peak(self, when: datetime | None = None, month: str | None = None) -> PeakReading: + """The billed peak for a month. Three possible answers, never a default.""" + if month is None: + month = month_key(when or datetime.now(timezone.utc)) + if self._db is None: + return PeakReading(NOT_OBSERVED, month, + detail=self.last_error or "store never opened") + try: + row = self._db.execute( + "SELECT peak_w, quarter_start, per_phase_json FROM monthly_peak" + " WHERE month=?", (month,)).fetchone() + except sqlite3.Error as err: + self.last_error = str(err) + return PeakReading(NOT_OBSERVED, month, detail=str(err)) + if row is None: + return PeakReading(NO_RECORD, month) + pp = tuple(json.loads(row[2])) if row[2] else None + return PeakReading(OBSERVED, month, peak_w=float(row[0]), + quarter_start=datetime.fromisoformat(row[1]), + per_phase_w=pp) + + def recompute_month(self, month: str) -> PeakReading: + """Re-derive the peak from `quarter_blocks` - the divergence check. + + `monthly_peak` is a derived record, so it can be PROVEN equal to the + tier it derives from instead of trusted to be. Read-only. + """ + if self._db is None: + return PeakReading(NOT_OBSERVED, month, + detail=self.last_error or "store never opened") + try: + row = self._db.execute( + "SELECT offtake_avg_w, quarter_start, per_phase_json FROM quarter_blocks" + " WHERE month=? ORDER BY offtake_avg_w DESC, quarter_start ASC LIMIT 1", + (month,)).fetchone() + except sqlite3.Error as err: + self.last_error = str(err) + return PeakReading(NOT_OBSERVED, month, detail=str(err)) + if row is None: + return PeakReading(NO_RECORD, month) + pp = tuple(json.loads(row[2])) if row[2] else None + return PeakReading(OBSERVED, month, peak_w=float(row[0]), + quarter_start=datetime.fromisoformat(row[1]), + per_phase_w=pp) + + def blocks_in(self, month: str) -> list: + """(quarter_start, offtake_avg_w) for a month, oldest first. [] on error + is safe here ONLY because no caller reads emptiness as a peak - AC 3's + counter reports the sample size it actually got.""" + if self._db is None: + return [] + try: + return [(datetime.fromisoformat(a), float(b)) for a, b in self._db.execute( + "SELECT quarter_start, offtake_avg_w FROM quarter_blocks" + " WHERE month=? ORDER BY quarter_start", (month,))] + except sqlite3.Error as err: + self.last_error = str(err) + return [] + + # -- the open block's checkpoint ---------------------------------------- + def save_partial(self, state: dict) -> bool: + if self._db is None: + return False + try: + with self._db: + self._db.execute( + "INSERT INTO partial_block(id, state_json) VALUES(1,?)" + " ON CONFLICT(id) DO UPDATE SET state_json=excluded.state_json", + (json.dumps(state),)) + return True + except (sqlite3.Error, TypeError, ValueError) as err: + self.last_error = str(err) + return False + + def load_partial(self) -> dict | None: + if self._db is None: + return None + try: + row = self._db.execute( + "SELECT state_json FROM partial_block WHERE id=1").fetchone() + return json.loads(row[0]) if row else None + except (sqlite3.Error, ValueError) as err: + self.last_error = str(err) + return None + + def clear_partial(self) -> None: + # The one DELETE in this module, and it is against the checkpoint - a + # scratch row, not a retention tier. Neither quarter_blocks nor + # monthly_peak is deleted from anywhere in this file. + if self._db is None: + return + try: + with self._db: + self._db.execute("DELETE FROM partial_block WHERE id=1") + except sqlite3.Error as err: + self.last_error = str(err) + + +# --------------------------------------------------------------------------- # +# the tracker: what main.py holds +# --------------------------------------------------------------------------- # +@dataclass(frozen=True) +class Projection: + """The open block's end-of-quarter estimate, with the reasons to distrust it. + + `elapsed_s` travels WITH the number rather than beside it, because early in a + quarter a projection is a 10-second extrapolation over 900 s and a consumer + that cannot see that will react to noise. `covered_frac` is separately useful: + it is below 1.0 when the meter had a gap, which is the "unreliable quarter" + the functional note asks be marked rather than reported low. + """ + + projected_w: float + elapsed_w: float + elapsed_s: float + covered_frac: float + complete: bool + block_start: datetime | None + + def explain(self) -> str: + return (f"quarter projects {self.projected_w:.0f} W " + f"({self.elapsed_s:.0f} s elapsed, {self.covered_frac * 100:.0f} % covered" + + ("" if self.complete else ", INCOMPLETE") + ")") + + +class PeakTracker: + """Drives the store from `P1Ingest`. Measures; never commands.""" + + def __init__(self, store: PeakStore, cap_w: float = 3500.0, + policy: str = POLICY_NET, checkpoint_s: float = CHECKPOINT_S): + self.store = store + self.cap_w = float(cap_w) + self.policy = policy + self.checkpoint_s = float(checkpoint_s) + self.recorded = 0 + self.restore_state = "not attempted" + self._seen: set = set() + self._last_ckpt = 0.0 + + # -- startup ------------------------------------------------------------ + def restore(self, averager, now: datetime | None = None) -> str: + """Put the open block back. Returns which of the three cases happened.""" + now = now or datetime.now(timezone.utc) + snap = self.store.load_partial() + if not snap: + self.restore_state = ("fresh: no checkpoint" if self.store.ok + else "fresh: store unreadable") + return self.restore_state + block = snap.get("block") + if block is None: + self.restore_state = "fresh: checkpoint had no open block" + return self.restore_state + + current = int(now.timestamp() // QUARTER_S) * QUARTER_S + if block == current: + if not averager.restore(snap): + # A reshaped accumulator (meter_phases changed) is a different + # measurement, not a resumable one. Say so; do not half-resume. + self.store.clear_partial() + self.restore_state = "fresh: checkpoint does not fit this averager" + return self.restore_state + self.restore_state = ( + f"resumed the open block at {snap.get('elapsed', 0.0):.0f} s " + f"of {QUARTER_S} s ({snap.get('acc', 0.0) / QUARTER_S:.0f} W banked)") + return self.restore_state + + # The block ended while the add-on was down. Its measured part really + # happened, so bank it at acc/900 rather than discard measured energy. + # It reads LOW because the seconds after the shutdown were never covered, + # and that is the honest figure: coverage a closed block did not get. + closed = _ClosedBlock( + start=datetime.fromtimestamp(block, timezone.utc), + offtake_avg_w=float(snap.get("acc", 0.0)) / QUARTER_S, + per_phase_offtake_avg_w=(tuple(v / QUARTER_S for v in snap["pp_acc"]) + if snap.get("pp_acc") and snap.get("last_pp") else None)) + banked = self.store.record_block(closed, self.policy) + self.store.clear_partial() + self.restore_state = ( + f"closed a stale block from {closed.start.isoformat()} at " + f"{closed.offtake_avg_w:.0f} W (partial coverage), " + + ("banked" if banked else "NOT banked - store unwritable")) + return self.restore_state + + # -- steady state ------------------------------------------------------- + def sync(self, ingest, now_mono: float | None = None) -> int: + """Bank any blocks that closed, and refresh the checkpoint. Returns the + number of blocks newly recorded on this call.""" + import time as _t + n = 0 + for block in getattr(ingest, "blocks", ()): + key = block.start.timestamp() + if key in self._seen: + continue + if self.store.record_block(block, self.policy): + self._seen.add(key) + self.recorded += 1 + n += 1 + if n: + # A block just closed, so the checkpoint's block is gone: clearing it + # in the same breath is what stops a crash here from replaying it. + self.store.clear_partial() + self._last_ckpt = 0.0 + self.checkpoint(ingest, now_mono or _t.monotonic()) + return n + + def checkpoint(self, ingest, now_mono: float, force: bool = False) -> bool: + if not force and (now_mono - self._last_ckpt) < self.checkpoint_s: + return False + avg = getattr(ingest, "averager", None) + if avg is None: + return False + self._last_ckpt = now_mono + return self.store.save_partial(avg.snapshot()) + + # -- reading ------------------------------------------------------------ + def peak(self, when: datetime | None = None) -> PeakReading: + return self.store.peak(when) + + def headroom_w(self, when: datetime | None = None) -> float | None: + """Watts left under the soft limit, or None when it cannot be known. + + ⚠️ `None`, not `self.cap_w`. An unreadable peak returning full headroom + is the disarming default this whole module is shaped against. + """ + r = self.peak(when) + if r.state == NO_RECORD: + return self.cap_w + if not r.is_observed: + return None + return max(0.0, self.cap_w - r.peak_w) + + def warning_frac(self, when: datetime | None = None) -> float | None: + """Peak as a fraction of the soft limit - §9.1's 80 % warning entity.""" + r = self.peak(when) + if r.state == NO_RECORD: + return 0.0 + if not r.is_observed or self.cap_w <= 0: + return None + return r.peak_w / self.cap_w + + @staticmethod + def project(averager, now: datetime) -> Projection: + """End-of-quarter average if the last sample held for the rest of it. + + ⚠️ The two divisors are DIFFERENT and only coincide at the end of the + block. `elapsed_w` divides by the seconds actually covered (what the + meter has shown so far); `projected_w` divides by the full 900 s and + credits the held value over what remains. At `elapsed_s == 900` and full + coverage they are equal - which is precisely why nothing may be tested + only at that point. + """ + start = averager.block_start + if start is None: + return Projection(0.0, 0.0, 0.0, 0.0, False, None) + elapsed_wall = max(0.0, (now - start).total_seconds()) + elapsed = averager.elapsed_s + acc = averager.partial_ws + remaining = max(0.0, QUARTER_S - elapsed_wall) + held = max(getattr(averager, "_last_net", 0.0), 0.0) + return Projection( + projected_w=(acc + held * remaining) / QUARTER_S, + elapsed_w=(acc / elapsed) if elapsed > 0 else 0.0, + elapsed_s=elapsed_wall, + covered_frac=(elapsed / elapsed_wall) if elapsed_wall > 0 else 0.0, + complete=elapsed_wall <= 0 or elapsed >= elapsed_wall - 1e-9, + block_start=start) + + +@dataclass(frozen=True) +class _ClosedBlock: + """A block reconstructed from a checkpoint. Shaped like `p1.QuarterBlock` so + `record_block` has one input type; kept private so nothing else makes one.""" + + start: datetime + offtake_avg_w: float + per_phase_offtake_avg_w: tuple | None diff --git a/goodwe_controller/scenarios/p1-net-2026-08-20.jsonl.gz b/goodwe_controller/scenarios/p1-net-2026-08-20.jsonl.gz new file mode 100644 index 0000000000000000000000000000000000000000..1b2689e7e9b09a9290cbaf6e5e819045c85e0d43 GIT binary patch literal 139723 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 literal 0 HcmV?d00001 diff --git a/goodwe_controller/scenarios/p1-net-2026-08-23.jsonl.gz b/goodwe_controller/scenarios/p1-net-2026-08-23.jsonl.gz new file mode 100644 index 0000000000000000000000000000000000000000..ee770cf6c55efb2d6a97eaaf122757c57a516e41 GIT binary patch literal 136307 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

$Z;X%|8zEUnO{J_~-L^K`yU(6UL&2gVJx< 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

{0eqSB#-AA(=h8Lx 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 Lb=LBzv!x9HGs8Hn literal 0 HcmV?d00001 diff --git a/goodwe_controller/test_tariff.py b/goodwe_controller/test_tariff.py new file mode 100644 index 0000000..709ed8a --- /dev/null +++ b/goodwe_controller/test_tariff.py @@ -0,0 +1,910 @@ +"""Runnable check for TARIFF-01, the capacity-tariff measurement. + + python3 test_tariff.py + +Ten parts. What each is for, and - where it matters - what it is deliberately +NOT allowed to be tested at: + + 1. THE BLOCK ARITHMETIC, against a worked example written out segment by + segment. The fixture is chosen to be non-degenerate on three axes at once: + irregular sample spacing, a sample that STRADDLES the :15 boundary, and a + gap longer than `max_hold_s` so the block's coverage is short of 900 s. + 2. THE 900 s DEGENERACY, named and then avoided. `acc/elapsed`, `acc/900` and + the end-of-quarter projection are THREE DIFFERENT FORMULAS that all agree + at exactly full coverage of a complete block. A check run only there proves + nothing about any of them, so part 2 first shows them agreeing at that + point (so the trap is documented rather than asserted around), then shows + part 1's fixture separating all three - and every later part uses fixtures + that are away from it. + 3. RESTART MID-BLOCK, through the real `QuarterAverager.snapshot()`/`restore()` + and a real SQLite file: a restarted run must land on the same closed block + as an uninterrupted one, and a run that DOES NOT restore must land lower. + Without that second half, "restore works" is satisfied by a fixture where + restoring changes nothing. + 4. MONTH ROLLOVER, in LOCAL time, including a restart that straddles it. + 5. AN UNREADABLE STORE IS NOT A ZERO PEAK - the acceptance argument. Three + states, three different answers, and no accessor that turns "the database + did not answer" into a number. + 6. THE TIMEZONE FALLBACK, graded against `zoneinfo` day by day. + 7. THE PER-PHASE REDUCTION on an UNBALANCED load. §17's three-phase case. On a + balanced load net/sum/max all coincide, which is why a balanced fixture is + worth nothing here. + 8. `monthly_peak` vs a recompute from `quarter_blocks` - the derived record + proven equal to the tier it derives from, and proven never to be lowered. + 9. AC 3, ON THE REPLAY DATA THAT ACTUALLY EXISTS. See the honesty note below. + 10. THE WIRING, through the real `Controller` and its real status page. + +------------------------------------------------------------------------------ +⚠️ AC 3 IS NOT MET, AND PART 9 DOES NOT PRETEND OTHERWISE. + +AC 3 asks for "the monthly peak held under the soft limit in >= 95 % of +intervals over a 30-day simulation replay". THERE IS NO 30-DAY DATASET. The +infra repo's `sim/scenarios/` holds exactly two days of this house's real meter +- 2026-08-20 (the Illusmart failure day) and 2026-08-23 (the healthy reference) +- exported on 2026-08-25 because they were about to age out of HA's recorder, +and nothing longer was ever captured. `sim/scenarios/README.md` lists the whole +inventory; the rest is RS485 bus frames, OTA witness logs and a 578-row rollback +poll, none of which carries grid power over calendar time. + +So part 9 replays the two days that exist, reports the percentage over them, and +states the sample size in days next to it. It is a MEASUREMENT, not a verdict: +nothing in it exits non-zero on the 95 % figure, because a 2-day run cannot pass +or fail a 30-day criterion and a check that claimed it could would be the more +expensive of the two mistakes. Both days are also *uncontrolled* - the add-on +was not shaving peaks on either - so the figure they give is the BASELINE the +guard has to improve on, which is the useful thing a 2-day replay can say. + +The two days are committed here as `scenarios/p1-net-.jsonl.gz` +(`{"t": iso8601, "w": signed_watts}` per line, derived from the HA recorder +export) for the reason `scenarios/p1-age-2026-08-26.jsonl.gz` already is: the +infra repo is private, CI's token is minted for this repository only, and a +regression fixture that CI cannot see is not a regression fixture. + +Closing AC 3 needs 30 days of capture. That is TEST-01's replay harness, and it +cannot start before somebody starts recording. +""" + +import asyncio +import gzip +import json +import shutil +import sys +import tempfile +from datetime import datetime, timedelta, timezone +from pathlib import Path + +from app.main import Controller +from app.p1 import P1Ingest, QuarterAverager, QUARTER_S, make_sample, split_signed +from app.tariff import ( + BILLING_TZ, CHECKPOINT_S, NO_RECORD, NOT_OBSERVED, POLICY_MAX, + POLICY_NET, POLICY_SUM, PeakStore, PeakTracker, _EUTimezone, billed_w, + month_key, +) + +fails = [] +HERE = Path(__file__).resolve().parent +TMP = Path(tempfile.mkdtemp(prefix="goodwe-tariff-")) + +# The live install's numbers: NOTES.md and freeze.py both record max_w 5000 +# there. `peak_cap_w` ships at 3500 in config.yaml and is the SOFT LIMIT AC 3 +# grades against - read out of the shipped file in part 10 rather than typed. +LIVE_MAX_W = 5000.0 + + +def check(name, cond): + print(f" {'ok ' if cond else 'FAIL'} {name}") + if not cond: + fails.append(name) + + +def near(a, b, tol=1e-6): + return a is not None and b is not None and abs(a - b) <= tol + + +def sample(t: datetime, net_w: float, phases=1, phase_net=None): + """One P1 telegram, through the SHIPPED derivation. + + `split_signed` and `make_sample` are what the real transports call, so the + sign convention under test is the one that ships rather than a local + re-derivation of it. + """ + imp, exp = split_signed(net_w) + pi = pe = None + if phase_net is not None: + pairs = [split_signed(v) for v in phase_net] + pi = [a for a, _ in pairs] + pe = [b for _, b in pairs] + return make_sample("ha_signed", imp, exp, phases=phases, + phase_import_w=pi, phase_export_w=pe, + ingest_ts=t, ingest_mono=t.timestamp()) + + +def fresh_store(name: str) -> PeakStore: + return PeakStore(str(TMP / f"{name}.db")) + + +# B is a clock-aligned quarter boundary: proved, not assumed, because every +# other number in part 1 rests on it. +B = datetime(2026, 8, 30, 9, 0, 0, tzinfo=timezone.utc) + + +# ============================================================================== +print("1. the block arithmetic, on a worked example") + +check(f"the fixture's start {B.isoformat()} really is 900 s aligned", + int(B.timestamp()) % QUARTER_S == 0) + +# (t seconds after B, net W). Deliberately irregular, with an export, a gap +# longer than max_hold_s, and a last sample that straddles the boundary. +MAX_HOLD_S = 30.0 +FIXTURE = [(0, 1000.0), (20, 2000.0), (30, -500.0), (50, 3000.0), + (250, 4000.0), (880, 1200.0), (1000, 900.0)] + +# The worked example, written as the segments a person would compute by hand: +# each HELD value and how many seconds of the FIRST block it is evidence for. +# Two rules do all the work: a sample is held forward until the next one, capped +# at MAX_HOLD_S; and export is 0 W of offtake, never a negative contribution. +SEGMENTS = [ + (1000.0, 20), # 0 -> 20, a normal telegram interval, held in full + (2000.0, 10), # 20 -> 30, likewise + (0.0, 20), # 30 -> 50: -500 W is EXPORT, so 0 W of offtake for 20 s + (3000.0, 30), # 50 -> 250 is a 200 s GAP; only the first 30 s is evidence + (4000.0, 30), # 250 -> 880 is a 630 s gap; again only 30 s is evidence + (1200.0, 20), # 880 -> 900: the STRADDLE's first half, up to the boundary +] +# The straddle's second half: the same held 1200 W, from the boundary until its +# hold expires at 880 + 30. It must be credited to the NEXT block, not to this +# one and not to neither. +SPLIT_TAIL_W, SPLIT_TAIL_S = 1200.0, 10 +EXP_WS = sum(w * s for w, s in SEGMENTS) +EXP_COVERED_S = sum(s for _, s in SEGMENTS) +EXP_BLOCK_AVG = EXP_WS / QUARTER_S # what the utility bills +EXP_ELAPSED_AVG = EXP_WS / EXP_COVERED_S # what a /elapsed divisor gives +NAIVE_MEAN = sum(max(w, 0.0) for _, w in FIXTURE[:-1]) / (len(FIXTURE) - 1) + +avg = QuarterAverager(phases=1, max_hold_s=MAX_HOLD_S) +closed = [] +for dt_s, w in FIXTURE: + closed += avg.add(sample(B + timedelta(seconds=dt_s), w)) + +print(f" {len(SEGMENTS)} held segments -> {EXP_WS:,.0f} Ws over " + f"{EXP_COVERED_S:.0f} s of the {QUARTER_S} s block") +check(f"exactly one block closed", len(closed) == 1) +check(f"...starting at the fixture's own boundary {B.isoformat()}", + bool(closed) and closed[0].start == B) +check(f"...averaging {EXP_BLOCK_AVG:.2f} W - the worked example's " + f"{EXP_WS:,.0f} Ws over the FULL {QUARTER_S} s", + bool(closed) and near(closed[0].offtake_avg_w, EXP_BLOCK_AVG, 1e-9)) + +# The three ways of being wrong, each of which produces a plausible number. +print(f" the same data read three other ways: /elapsed = {EXP_ELAPSED_AVG:.2f} W, " + f"naive mean of samples = {NAIVE_MEAN:.2f} W, " + f"billed = {EXP_BLOCK_AVG:.2f} W") +check("...and /elapsed is NOT the billed figure - a gap must drag the average " + "down, not be averaged away", + abs(EXP_ELAPSED_AVG - EXP_BLOCK_AVG) > 1.0) +check("...and a naive mean over samples is NOT the billed figure either - it " + "weights a burst of fast telegrams like a slow one", + abs(NAIVE_MEAN - EXP_BLOCK_AVG) > 1.0) + +# The straddle: the 4000 W sample at t=400 is held ACROSS 900. Its evidence +# expires at 430, so the second block gets none of it - and the second block +# must still have been OPENED at 900, not at 1000. +check(f"the block after the straddle opens at the boundary, not at the sample", + avg.block_start == B + timedelta(seconds=QUARTER_S)) +print(f" the straddling sample is SPLIT at the boundary: " + f"{SEGMENTS[-1][0]:.0f} W x {SEGMENTS[-1][1]} s into the first block, " + f"x {SPLIT_TAIL_S} s into the second") +check(f"...and the second block is credited the tail " + f"({SPLIT_TAIL_W * SPLIT_TAIL_S:,.0f} Ws), so a sample spanning :15 is " + f"attributed to BOTH blocks in proportion and wholly to neither", + near(avg.partial_ws, SPLIT_TAIL_W * SPLIT_TAIL_S, 1e-9)) + + +# ============================================================================== +print() +print("2. the 900 s degeneracy - where three different formulas agree") + +# A complete block at a constant power, fully covered. Here acc/elapsed, +# acc/900 and the projection are ALL the same number. Anything checked only +# here is checked against nothing. +HELD_W = 2400.0 +deg = QuarterAverager(phases=1, max_hold_s=MAX_HOLD_S) +deg_closed = [] +for i in range(0, QUARTER_S + 1, 5): + deg_closed += deg.add(sample(B + timedelta(seconds=i), HELD_W)) +d_block = deg_closed[0].offtake_avg_w +deg2 = QuarterAverager(phases=1, max_hold_s=MAX_HOLD_S) +LAST_S = QUARTER_S - 5 +for i in range(0, LAST_S + 1, 5): + deg2.add(sample(B + timedelta(seconds=i), HELD_W)) +d_partial = deg2.offtake_avg_w +# Graded AT the last sample: full coverage behind it, a held value in front. +d_proj = PeakTracker.project(deg2, B + timedelta(seconds=LAST_S)).projected_w +print(f" at full coverage of a whole block: acc/900 = {d_block:.2f} W, " + f"acc/elapsed = {d_partial:.2f} W, projection = {d_proj:.2f} W") +check("all three formulas coincide at exactly 900 s of full coverage - so a " + "check placed only there distinguishes none of them", + near(d_block, HELD_W, 1e-6) and near(d_partial, HELD_W, 1e-6) + and near(d_proj, HELD_W, 1e-6)) + +# Away from it, on part 1's fixture at a point mid-block, they must separate. +mid = QuarterAverager(phases=1, max_hold_s=MAX_HOLD_S) +for dt_s, w in FIXTURE[:-1]: + mid.add(sample(B + timedelta(seconds=dt_s), w)) +NOW = B + timedelta(seconds=500) +p = PeakTracker.project(mid, NOW) +print(f" at t=500 s on part 1's fixture: acc/elapsed = {p.elapsed_w:.2f} W, " + f"projection = {p.projected_w:.2f} W, coverage = {p.covered_frac * 100:.1f} %") +check("mid-block, with a gap in it, the elapsed average and the projection are " + "DIFFERENT numbers", abs(p.elapsed_w - p.projected_w) > 1.0) +check("...and the projection carries elapsed_s, so a consumer can see it is an " + f"extrapolation over {QUARTER_S - p.elapsed_s:.0f} s it has not seen", + near(p.elapsed_s, 500.0, 1e-6)) +check("...and a gap shows up as coverage below 1.0 rather than as a confident " + "low number", p.covered_frac < 1.0 and not p.complete) + + +# ============================================================================== +print() +print("3. restart mid-block: the same block, or a lower one, never a lost one") + +RUN_W = 2000.0 +STEP_S = 1 +RESTART_AT_S = 600 # minute 10 of the quarter - the functional note's case + + +def feed(avg, t0_s, t1_s, w=RUN_W): + out = [] + for i in range(t0_s, t1_s + 1, STEP_S): + out += avg.add(sample(B + timedelta(seconds=i), w)) + return out + + +# (a) the control: no restart at all. +ctrl = QuarterAverager(phases=1, max_hold_s=MAX_HOLD_S) +ctrl_closed = feed(ctrl, 0, QUARTER_S) +CTRL_W = ctrl_closed[0].offtake_avg_w + +# (b) restarted at minute 10, checkpoint restored through a real SQLite file. +st = fresh_store("restart") +tr = PeakTracker(st, cap_w=LIVE_MAX_W) +a1 = QuarterAverager(phases=1, max_hold_s=MAX_HOLD_S) +feed(a1, 0, RESTART_AT_S) +check("the checkpoint round-trips through SQLite", st.save_partial(a1.snapshot())) +a2 = QuarterAverager(phases=1, max_hold_s=MAX_HOLD_S) # a brand-new process +restored = tr.restore(a2, B + timedelta(seconds=RESTART_AT_S + 1)) +print(f" restore() said: {restored}") +check("...and restore() reports RESUMING rather than starting fresh", + restored.startswith("resumed")) +r_closed = feed(a2, RESTART_AT_S + STEP_S, QUARTER_S) +RESTART_W = r_closed[0].offtake_avg_w if r_closed else None + +# (c) the mutation guard: the SAME restart with no restore. +a3 = QuarterAverager(phases=1, max_hold_s=MAX_HOLD_S) +n_closed = feed(a3, RESTART_AT_S + STEP_S, QUARTER_S) +NORESTORE_W = n_closed[0].offtake_avg_w if n_closed else None + +print(f" uninterrupted {CTRL_W:.2f} W | restored {RESTART_W:.2f} W | " + f"restart with no restore {NORESTORE_W:.2f} W") +check(f"a restart at {RESTART_AT_S} s lands on the SAME billed block as an " + f"uninterrupted run", near(RESTART_W, CTRL_W, 1e-6)) +check("...and without the restore it lands LOWER - so 'the restore works' is " + "not satisfied by a fixture where restoring changes nothing", + NORESTORE_W is not None and NORESTORE_W < CTRL_W - 1.0) +# Derived, not asserted against a literal: the lost part is exactly the seconds +# before the restart, at the power that was flowing. +DROPPED_S = RESTART_AT_S + STEP_S # the resumed feed starts one step later +check(f"...and it is lower by exactly the {DROPPED_S} s it dropped " + f"({RUN_W * DROPPED_S / QUARTER_S:.2f} W)", + near(CTRL_W - NORESTORE_W, RUN_W * DROPPED_S / QUARTER_S, 1e-6)) + +# (d) a LONG outage: restored, but the meter was away past max_hold_s. The +# uncovered seconds must drag the block DOWN, not be held forward. +OUTAGE_S = 200 +a4 = QuarterAverager(phases=1, max_hold_s=MAX_HOLD_S) +st4 = fresh_store("outage") +st4.save_partial(a1.snapshot()) +PeakTracker(st4, cap_w=LIVE_MAX_W).restore(a4, B + timedelta(seconds=RESTART_AT_S + OUTAGE_S)) +o_closed = feed(a4, RESTART_AT_S + OUTAGE_S, QUARTER_S) +OUTAGE_UNCOVERED_S = OUTAGE_S - MAX_HOLD_S +print(f" a {OUTAGE_S} s outage inside the quarter, of which " + f"{OUTAGE_UNCOVERED_S:.0f} s is past the {MAX_HOLD_S:.0f} s hold: " + f"{o_closed[0].offtake_avg_w:.2f} W") +check(f"...reads lower than the uninterrupted block by exactly the uncovered " + f"seconds ({RUN_W * OUTAGE_UNCOVERED_S / QUARTER_S:.2f} W) - a gap is " + f"never held forward across the whole outage", + near(CTRL_W - o_closed[0].offtake_avg_w, + RUN_W * OUTAGE_UNCOVERED_S / QUARTER_S, 1e-6)) + +# (e) double counting is answered by the primary key, not by care. +st5 = fresh_store("dedupe") +st5.record_block(ctrl_closed[0]) +st5.record_block(ctrl_closed[0]) +st5.record_block(ctrl_closed[0]) +rows = st5.blocks_in(month_key(B)) +check("banking the same quarter three times leaves ONE row - quarter_start is " + "the primary key, so a replay or a restart cannot double-count", + len(rows) == 1 and near(rows[0][1], CTRL_W, 1e-9)) + +# ...and a later pass with LESS coverage may not lower a banked figure. +from app.tariff import _ClosedBlock as _CB +st5.record_block(_CB(start=B, offtake_avg_w=CTRL_W / 2, per_phase_offtake_avg_w=None)) +after = st5.blocks_in(month_key(B)) +check(f"...and re-banking the same quarter at half the figure leaves it at " + f"{CTRL_W:.0f} W - a restart's partial re-run must never lower a " + f"quarter that was already measured in full", + len(after) == 1 and near(after[0][1], CTRL_W, 1e-9)) + +# (f) the checkpoint's own staleness bound, derived from the constant. +print(f" CHECKPOINT_S = {CHECKPOINT_S:.0f} s, so a crash can lose at most " + f"{CHECKPOINT_S / QUARTER_S * 100:.1f} % of one quarter's average") +check("the checkpoint bound is small enough that its worst case is under 2 % " + "of a quarter", CHECKPOINT_S / QUARTER_S < 0.02) + + +# ============================================================================== +print() +print("4. month rollover, in LOCAL time, and across a restart that straddles it") + +# CEST is UTC+2, so the last two hours of 31 August UTC are already September. +AUG_LATE = datetime(2026, 8, 31, 21, 45, tzinfo=timezone.utc) +SEP_EARLY = datetime(2026, 8, 31, 22, 15, tzinfo=timezone.utc) +print(f" {AUG_LATE.isoformat()} is local " + f"{AUG_LATE.astimezone(BILLING_TZ).isoformat()} -> {month_key(AUG_LATE)}") +print(f" {SEP_EARLY.isoformat()} is local " + f"{SEP_EARLY.astimezone(BILLING_TZ).isoformat()} -> {month_key(SEP_EARLY)}") +check("a quarter starting 21:45 UTC on 31 Aug bills in AUGUST", + month_key(AUG_LATE) == "2026-08") +check("a quarter starting 22:15 UTC on 31 Aug bills in SEPTEMBER - filing it " + "under August would move a whole month's bill", + month_key(SEP_EARLY) == "2026-09") +check("...and the two are genuinely on opposite sides of the boundary, not " + "the same answer twice", month_key(AUG_LATE) != month_key(SEP_EARLY)) +# Winter, where the offset is +1 and the boundary sits an hour later. +JAN_LATE = datetime(2026, 1, 31, 22, 45, tzinfo=timezone.utc) +check("in WINTER the same trap is an hour later: 22:45 UTC on 31 Jan is still " + "January, and 23:15 UTC is February", + month_key(JAN_LATE) == "2026-01" + and month_key(JAN_LATE + timedelta(minutes=30)) == "2026-02") + +st6 = fresh_store("months") +AUG_PEAK_W, SEP_PEAK_W = 4998.0, 900.0 +st6.record_block(_CB(AUG_LATE, AUG_PEAK_W, None)) +st6.record_block(_CB(SEP_EARLY, SEP_PEAK_W, None)) +r_aug, r_sep = st6.peak(month="2026-08"), st6.peak(month="2026-09") +print(f" {r_aug.explain()}") +print(f" {r_sep.explain()}") +check(f"August's peak is the {AUG_PEAK_W:.0f} W quarter (specs.md:583's own " + f"measured case) and September's is not", + r_aug.is_observed and near(r_aug.peak_w, AUG_PEAK_W) + and r_sep.is_observed and near(r_sep.peak_w, SEP_PEAK_W)) +check("...so a new month starts from its OWN quarters, not from the previous " + "month's peak", r_sep.peak_w < r_aug.peak_w) + +# The restart that straddles the boundary: a checkpoint whose open block is in +# August, restored when `now` is already September. +st7 = fresh_store("straddle") +tr7 = PeakTracker(st7, cap_w=LIVE_MAX_W) +straddler = QuarterAverager(phases=1, max_hold_s=MAX_HOLD_S) +for i in range(0, 400, STEP_S): + straddler.add(sample(AUG_LATE + timedelta(seconds=i), RUN_W)) +st7.save_partial(straddler.snapshot()) +after_boot = QuarterAverager(phases=1, max_hold_s=MAX_HOLD_S) +said = tr7.restore(after_boot, SEP_EARLY + timedelta(minutes=3)) +print(f" restore() across the boundary said: {said}") +aug7, sep7 = st7.peak(month="2026-08"), st7.peak(month="2026-09") +check("a restart that straddles the month boundary BANKS the dead August " + "quarter rather than dropping measured energy", + said.startswith("closed a stale block") and aug7.is_observed) +check(f"...at its partial-coverage figure ({aug7.peak_w:.2f} W = " + f"{RUN_W * 399 / QUARTER_S:.2f} W, the seconds it actually covered)", + near(aug7.peak_w, RUN_W * 399 / QUARTER_S, 1e-6)) +check("...and September reads NO_RECORD, which is a different answer from " + "August's peak AND from a zero", + sep7.state == NO_RECORD and sep7.peak_w is None) +check("...and the checkpoint is cleared, so a second boot cannot re-bank it", + st7.load_partial() is None) + + +# ============================================================================== +print() +print("5. AN UNREADABLE STORE IS NOT A ZERO PEAK (the acceptance argument)") + +# Three stores, three states, and the three must not answer alike. +good = fresh_store("states") +good_tr = PeakTracker(good, cap_w=LIVE_MAX_W) +empty_r = good_tr.peak(B) + +gone = fresh_store("gone") +gone_tr = PeakTracker(gone, cap_w=LIVE_MAX_W) +gone.record_block(_CB(B, 3000.0, None)) +gone.close() # the database goes away under a live reader +gone_r = gone_tr.peak(B) + +never = PeakStore(str(TMP / "no-such-dir" / "x.db")) +never_tr = PeakTracker(never, cap_w=LIVE_MAX_W) +never_r = never_tr.peak(B) + +# A store that is OPEN and whose query FAILS is a third code path - a closed +# handle short-circuits before the SQL ever runs, so without this the +# `except sqlite3.Error` arm of peak() is never executed by anything. +broken = fresh_store("broken-table") +broken.record_block(_CB(B, 3000.0, None)) +broken._db.execute("DROP TABLE monthly_peak") +broken._db.commit() +broken_r = PeakTracker(broken, cap_w=LIVE_MAX_W).peak(B) + +for label, r in (("fresh store, no quarter yet", empty_r), + ("store that broke under a live reader", gone_r), + ("store that never opened", never_r), + ("store open, query failed", broken_r)): + print(f" {label:38s} -> {r.state:13s} {r.explain()}") + +check("a fresh store with no quarter yet says NO_RECORD - a normal state on " + "the 1st of the month", empty_r.state == NO_RECORD) +check("a store that broke says NOT_OBSERVED", gone_r.state == NOT_OBSERVED) +check("a store that never opened says NOT_OBSERVED", never_r.state == NOT_OBSERVED) +check("a store whose QUERY fails says NOT_OBSERVED too - a different code path " + "from a closed handle, and the one a half-corrupt database takes", + broken_r.state == NOT_OBSERVED and broken_r.peak_w is None) +# ...and losing the DERIVED record does not lose the peak, which is the whole +# argument for keeping monthly_peak recomputable from the 15-min tier. +_rec = broken.recompute_month(month_key(B)) +print(f" ...but with the 15-min tier intact, recompute_month() still " + f"answers: {_rec.explain()}") +check("...while recompute_month() STILL answers from the surviving 15-min " + "tier - the permanent record is derived, so losing it is recoverable", + _rec.is_observed and near(_rec.peak_w, 3000.0)) +broken._db.execute("DROP TABLE quarter_blocks") +broken._db.commit() +check("...and once BOTH tiers are gone it says NOT_OBSERVED rather than " + "raising into the control loop", + broken.recompute_month(month_key(B)).state == NOT_OBSERVED) +check("...and NO_RECORD and NOT_OBSERVED are DIFFERENT states, not two " + "spellings of the same one", empty_r.state != gone_r.state) +check("...and they read differently to a human, too", + empty_r.explain() != gone_r.explain() + and "NOT" in gone_r.explain() and "zero peak" in gone_r.explain()) + +check("an unreadable peak is None, not 0.0 - there is no number to mistake", + gone_r.peak_w is None and never_r.peak_w is None) +check("...and NO_RECORD carries no number either", empty_r.peak_w is None) +_typed = False +try: + float(gone_r.peak_w) +except TypeError: + _typed = True +check("...and a caller who forgets to ask gets a TypeError rather than a " + "silently disarming zero", _typed) +check("PeakReading exposes no accessor that defaults a missing peak to a " + "number - no .get(), no _or() ", + not [a for a in dir(gone_r) + if a.startswith(("get", "value")) or a.endswith("_or")]) + +# The consequence, which is the reason any of this matters. +print(f" headroom under a {LIVE_MAX_W:.0f} W limit: " + f"no quarter yet -> {good_tr.headroom_w(B)}, " + f"unreadable -> {gone_tr.headroom_w(B)}") +check("an unreadable store yields NO headroom figure - the disarming default " + "(full headroom, guard silently off) is unreachable", + gone_tr.headroom_w(B) is None and never_tr.headroom_w(B) is None) +check(f"...where a genuinely empty month yields the full {LIVE_MAX_W:.0f} W, " + f"which is correct and is a different answer", + near(good_tr.headroom_w(B), LIVE_MAX_W)) +check("the 80 % warning fraction is likewise None when nothing was observed", + gone_tr.warning_frac(B) is None and good_tr.warning_frac(B) == 0.0) + +# And a real peak reduces headroom, so "always None" does not pass this part. +good.record_block(_CB(B, LIVE_MAX_W * 0.9, None)) +print(f" after one {LIVE_MAX_W * 0.9:.0f} W quarter: " + f"headroom {good_tr.headroom_w(B):.0f} W, " + f"warning {good_tr.warning_frac(B) * 100:.0f} % of the limit") +check("a real observed peak gives a real headroom, so this part is not passed " + "by a store that answers None to everything", + near(good_tr.headroom_w(B), LIVE_MAX_W * 0.1, 1e-6)) +check(f"...and it is over §9.1's 80 % warning threshold", + good_tr.warning_frac(B) > 0.8) + +# A CORRUPT database file is the third way a store fails, and it must land in +# NOT_OBSERVED too rather than raising into the control loop. +corrupt_path = TMP / "corrupt.db" +corrupt_path.write_bytes(b"this is not a database" * 64) +corrupt = PeakStore(str(corrupt_path)) +c_r = PeakTracker(corrupt, cap_w=LIVE_MAX_W).peak(B) +print(f" a corrupt database file -> {c_r.state}") +check("a corrupt database reads NOT_OBSERVED and does not raise into the " + "control loop (§6 fail-open)", c_r.state == NOT_OBSERVED) + + +# ============================================================================== +print() +print("6. the timezone fallback, graded against zoneinfo") + +_zi = None +try: + from zoneinfo import ZoneInfo + _zi = ZoneInfo("Europe/Brussels") +except Exception as err: # noqa: BLE001 + print(f" zoneinfo unavailable here ({err}) - the fallback IS the tz") + +if _zi is None: + check("zoneinfo is absent, so the encoded rule cannot be graded here - " + "reported, not silently passed", True) +else: + fb = _EUTimezone() + # ⚠️ HOURLY, NOT 3-HOURLY, ACROSS THE TRANSITION DAYS. Both EU transitions + # happen at 01:00 UTC, so a rule that is wrong BY AN HOUR differs from the + # right one only between 01:00 and 02:00 UTC. A 3-hourly sweep steps over + # that window entirely and grades nothing - measured: a mutation moving the + # UTC threshold from 01:00 to 02:00 survived the whole file at 3-hourly. + probes = [datetime(2026, 1, 1, 12, tzinfo=timezone.utc)] + probes += [datetime(2026, m, d, h, mi, tzinfo=timezone.utc) + for m in (3, 10) for d in (28, 29, 30, 31) + for h in range(24) for mi in (0, 30)] + probes += [datetime(2026, m, 1, 0, 30, tzinfo=timezone.utc) for m in range(1, 13)] + # ⚠️ COMPARE THE CONVERTED WALL CLOCK, NOT ITS utcoffset(). `astimezone` + # goes through `fromutc`, but the RESULT carries local wall values, so + # asking it for `.utcoffset()` routes straight back into the LOCAL arm and + # never grades `fromutc` at all. Measured: a mutation moving the UTC + # threshold by an hour survived 397 offset-comparing probes and dies + # immediately on the wall clock they produce. + def _wallclock(t, tz): + return t.astimezone(tz).replace(tzinfo=None) + + bad = [t for t in probes if _wallclock(t, fb) != _wallclock(t, _zi)] + print(f" {len(probes)} probes across both DST transitions and every " + f"month boundary: {len(bad)} disagreement(s) in the LOCAL WALL CLOCK " + f"each one converts to") + check("the encoded EU rule converts every probe to the same local wall " + "clock as zoneinfo, including the two transition weekends", not bad) + # ...and the probes are not all the same offset, or the check is vacuous. + offsets = {t.astimezone(_zi).utcoffset() for t in probes} + check(f"...and the probe set spans BOTH offsets ({sorted(str(o) for o in offsets)}), " + f"so agreeing is not free", len(offsets) == 2) + check(f"BILLING_TZ resolved to zoneinfo on this host, not the fallback", + not isinstance(BILLING_TZ, _EUTimezone)) + + # ⚠️ THE PROBES ABOVE ONLY EXERCISE `fromutc()`. `astimezone` on a UTC + # instant never calls `utcoffset()` with a local wall time, so the local + # arm of the rule was ungraded - a mutation that moved it by an hour + # survived the whole file. These probes drive it directly. Noon is used + # because it is unambiguous on every day of the year, including the two + # transition days where 02:00-03:00 local is missing or repeated. + # + # ⚠️ AND THE LOCAL PROBES MUST INCLUDE 03:00-03:59 ON THE OCTOBER SUNDAY. + # That hour is where a local rule that ends DST an hour late still claims + # CEST while zoneinfo has already returned to CET; at noon both answers + # agree and the probe is worth nothing. Measured: at noon-only, a mutation + # moving the local thresholds from 02:00/03:00 to 03:00/04:00 survived. + # + # The MARCH gap (02:00-02:59 local, which does not exist) is deliberately + # NOT probed: Python hands a nonexistent local time to `utcoffset` as an + # ordinary value and any answer is defensible, so grading it would pin an + # arbitrary choice. It cannot move a month boundary - it is the last Sunday + # of March, never the 1st of a month - which is the only thing this tz is + # used for. + wall = [datetime(2026, m, d, 12) for m, d in + [(3, 27), (3, 28), (3, 29), (3, 30), (10, 24), (10, 25), + (10, 26), (10, 27)]] + wall += [datetime(2026, 10, 25, h, mi) for h in range(0, 6) for mi in (0, 30) + if h != 2] # 02:00 local is the ambiguous fold + wall += [datetime(2026, 3, 29, h, mi) for h in (0, 1, 3, 4, 5) for mi in (0, 30)] + wall += [datetime(2026, m, 1, 12) for m in range(1, 13)] + bad_w = [w for w in wall + if w.replace(tzinfo=fb).utcoffset() != w.replace(tzinfo=_zi).utcoffset()] + w_offsets = {w.replace(tzinfo=_zi).utcoffset() for w in wall} + print(f" {len(wall)} LOCAL-wall probes through utcoffset(): " + f"{len(bad_w)} disagreement(s), spanning " + f"{sorted(str(o) for o in w_offsets)}") + check("utcoffset() on local wall time matches zoneinfo across both " + "transition weekends - the arm astimezone() never reaches", not bad_w) + check("...and those probes span both offsets too", len(w_offsets) == 2) + bad_n = [w for w in wall + if w.replace(tzinfo=fb).tzname() != w.replace(tzinfo=_zi).tzname()] + check("...and tzname() agrees with zoneinfo at every one of them (CET/CEST)", + not bad_n) + + +# ============================================================================== +print() +print("7. the per-phase reduction, on an UNBALANCED three-phase load (§17)") + +# One phase exporting is what separates the three policies. On a balanced load +# they all give the same number, which is why this fixture is not balanced. +PH = (3000.0, 500.0, -200.0) +NET = sum(PH) +u = QuarterAverager(phases=3, max_hold_s=MAX_HOLD_S) +u_closed = [] +for i in range(0, QUARTER_S + 1, 5): + u_closed += u.add(sample(B + timedelta(seconds=i), NET, phases=3, phase_net=PH)) +blk = u_closed[0] +vals = {p: billed_w(blk, p) for p in (POLICY_NET, POLICY_SUM, POLICY_MAX)} +print(f" phases {PH} (net {NET:+.0f} W) -> " + + ", ".join(f"{k}={v:.0f} W" for k, v in vals.items())) +check(f"the NET policy bills the connection's net offtake ({NET:.0f} W)", + near(vals[POLICY_NET], NET, 1e-6)) +check(f"the SUM policy clips each phase first, so the exporting phase does not " + f"net off ({sum(max(v, 0.0) for v in PH):.0f} W)", + near(vals[POLICY_SUM], sum(max(v, 0.0) for v in PH), 1e-6)) +check(f"the MAX policy bills the worst single phase ({max(PH):.0f} W)", + near(vals[POLICY_MAX], max(PH), 1e-6)) +check("...and on THIS fixture all three are different numbers - which is the " + "whole reason the reduction is a named policy and not an assumption", + len({round(v, 6) for v in vals.values()}) == 3) +check("the shipped default is NET, the meter's own billed register", + billed_w(blk) == vals[POLICY_NET]) + +bal = QuarterAverager(phases=3, max_hold_s=MAX_HOLD_S) +b_closed = [] +for i in range(0, QUARTER_S + 1, 5): + b_closed += bal.add(sample(B + timedelta(seconds=i), 3000.0, phases=3, + phase_net=(1000.0, 1000.0, 1000.0))) +b_vals = {p: billed_w(b_closed[0], p) for p in (POLICY_NET, POLICY_SUM, POLICY_MAX)} +check(f"...and on a BALANCED load NET and SUM coincide ({b_vals[POLICY_NET]:.0f} W), " + f"so a balanced fixture could not have told them apart", + near(b_vals[POLICY_NET], b_vals[POLICY_SUM], 1e-6)) + + +# ============================================================================== +print() +print("8. monthly_peak is DERIVED, and provably has not diverged") + +st8 = fresh_store("derive") +QUARTERS = [(0, 1200.0), (1, 4998.0), (2, 3357.0), (3, 800.0), (4, 4832.0)] +for q, w in QUARTERS: + st8.record_block(_CB(B + timedelta(seconds=q * QUARTER_S), w, None)) +MAXQ = max(w for _, w in QUARTERS) +stored = st8.peak(month=month_key(B)) +derived = st8.recompute_month(month_key(B)) +print(f" {len(QUARTERS)} quarters banked; stored peak {stored.peak_w:.0f} W, " + f"recomputed from quarter_blocks {derived.peak_w:.0f} W") +check(f"the stored monthly peak is the largest quarter ({MAXQ:.0f} W - " + f"specs.md:583's own figure)", + stored.is_observed and near(stored.peak_w, MAXQ)) +check("...and re-deriving it from the 15-min tier gives the same number and " + "the same quarter, so the two records are proven equal rather than " + "assumed to be", + derived.is_observed and near(derived.peak_w, stored.peak_w) + and derived.quarter_start == stored.quarter_start) +check("...and the two measured regressions from §9.1 land on DIFFERENT peaks - " + f"the sustained {MAXQ:.0f} W quarter, not the oscillating 3357 W one", + not near(stored.peak_w, 3357.0)) +# A quarter arriving LATER and lower must not lower the month. +st8.record_block(_CB(B + timedelta(seconds=9 * QUARTER_S), 100.0, None)) +check("a later, smaller quarter does not lower the month's peak", + near(st8.peak(month=month_key(B)).peak_w, MAXQ)) +check("...and the recompute agrees with it after that write, too", + near(st8.recompute_month(month_key(B)).peak_w, MAXQ)) +# No pruning: §15 says these two tiers are indefinite / permanent. +src = (HERE / "app" / "tariff.py").read_text(encoding="utf-8") +check("§15's retention is structural: no DELETE against quarter_blocks or " + "monthly_peak exists anywhere in tariff.py", + "DELETE FROM quarter_blocks" not in src + and "DELETE FROM monthly_peak" not in src + and "DROP TABLE" not in src) + + +# ============================================================================== +print() +print("9. AC 3, on the replay data that actually exists") + +REPLAY = sorted((HERE / "scenarios").glob("p1-net-*.jsonl.gz")) +print(f" replay fixtures found: {len(REPLAY)} " + f"({', '.join(p.name for p in REPLAY) or 'none'})") +check("the committed replay fixtures are present - a regression fixture CI " + "cannot see is not a regression fixture", len(REPLAY) >= 2) + +# ⚠️ `peak_cap_w:` appears TWICE in config.yaml - once under `options:` with the +# default, once under `schema:` with `int(500,15000)`. Taking the last match +# would blow up on the schema line, and taking any match that parses would be +# luck; the FIRST is the options block, which is the number an install lands on. +SHIPPED_CAP_W = None +for line in (HERE / "config.yaml").read_text(encoding="utf-8").splitlines(): + if line.strip().startswith("peak_cap_w:"): + try: + SHIPPED_CAP_W = float(line.split(":", 1)[1].strip()) + except ValueError: + continue + break +check("config.yaml's shipped peak_cap_w was read out of the file rather than " + "typed here", SHIPPED_CAP_W is not None) + +replay_days = 0 +total_q = 0 +under = 0 +for path in REPLAY: + st9 = fresh_store("replay-" + path.stem) + ing = P1Ingest(phases=1, max_age_s=MAX_HOLD_S) + tr9 = PeakTracker(st9, cap_w=SHIPPED_CAP_W or LIVE_MAX_W) + first = last = None + with gzip.open(path, "rt", encoding="utf-8") as fh: + for line in fh: + row = json.loads(line) + t = datetime.fromisoformat(row["t"]) + first = first or t + last = t + ing.submit(sample(t, float(row["w"]))) + tr9.sync(ing) + months = {month_key(b.start) for b in ing.blocks} + span_h = (last - first).total_seconds() / 3600.0 + qs = [w for _, w in st9.blocks_in(sorted(months)[0])] if months else [] + peak = max(qs) if qs else 0.0 + ok_q = sum(1 for w in qs if w <= (SHIPPED_CAP_W or LIVE_MAX_W)) + total_q += len(qs) + under += ok_q + replay_days += span_h / 24.0 + print(f" {path.name}: {span_h:.1f} h, {len(qs)} closed quarters, " + f"month peak {peak:.0f} W, " + f"{ok_q}/{len(qs)} = {100.0 * ok_q / max(len(qs), 1):.1f} % under the " + f"{SHIPPED_CAP_W:.0f} W soft limit") + check(f"{path.name}: the month's peak equals its own largest quarter", + near(st9.peak(month=sorted(months)[0]).peak_w, peak, 1e-9)) + check(f"{path.name}: a full day of real telegrams produces ~96 quarters, " + f"got {len(qs)}", 90 <= len(qs) <= 96) + +PCT = 100.0 * under / max(total_q, 1) +print() +print(f" AC 3 MEASURED: {under}/{total_q} quarters = {PCT:.1f} % under the " + f"{SHIPPED_CAP_W:.0f} W soft limit, over {replay_days:.1f} DAYS of " + f"replay, UNCONTROLLED (no peak shaving was running on either day).") +print(f" AC 3 ASKS FOR 30 DAYS. {replay_days:.1f} days exist. " + f"AC 3 IS NOT MET and this run does not claim it is - see the module " + f"docstring. The figure above is the BASELINE SAFETY-07 has to improve.") +check("the replay produced a measurable number over a stated sample size, " + "rather than a criterion quietly redefined to fit the data", + total_q > 100 and replay_days < 30) + + +# ============================================================================== +print() +print("10. the wiring: the real Controller, and what its status page says") + + +class _Store: + data = {} + + def set(self, *a): + pass + + def get_time(self, *a): + return None + + +class _Pub: + enabled = False + + def publish(self, *a, **k): + pass + + def close(self): + pass + + +class _Hass: + async def limits(self, entity): + return (-LIVE_MAX_W, LIVE_MAX_W, 1.0) + + async def number(self, entity, invert=False): + return None + + async def set_number(self, entity, value): + return True + + async def call(self, domain, service, data): + return True + + +def built(db_path, opts=None): + return Controller(dict( + {"setpoint_entity": "number.sp", "meter_source": "ha_signed", + "p1_net_entity": "sensor.net", "meter_phases": 1, + "max_w": LIVE_MAX_W, "gain": 0.6, "slew_w": 1000, "deadband_w": 15, + "target_grid_w": 0, "step_w": 10, "heartbeat_s": 10, + "stale_input_s": 15}, **(opts or {})), + _Hass(), _Store(), _Pub(), stop=asyncio.Event(), + peak_db_path=str(db_path)) + + +c = built(TMP / "wired.db") +check(f"a Controller built with peak_cap_w ABSENT takes the SHIPPED " + f"{SHIPPED_CAP_W:.0f} W, so config.yaml and main.py's fallback cannot " + f"drift apart unnoticed", c.peak.cap_w == SHIPPED_CAP_W) + +# Drive one real quarter through the real ingest, then the real cycle's sync. +for i in range(0, QUARTER_S + 1, 5): + c.p1.submit(sample(B + timedelta(seconds=i), 4998.0)) +n = c.peak.sync(c.p1) +wr = c.peak.peak(B) +print(f" after one 4998 W quarter through the real ingest: " + f"{n} banked, {wr.explain()}") +check("the closed quarter reached SQLite through the tracker the cycle calls", + n == 1 and wr.is_observed and near(wr.peak_w, 4998.0, 1e-6)) + +# ⚠️ `cycle()` calls sync() ONCE A SECOND against a `blocks` list that keeps a +# closed quarter for a DAY. Without a dedupe that is ~86 000 re-banks of the +# same row per block, and `recorded` - the number the status page prints as +# "quarters banked" - would be a count of loop iterations rather than of +# quarters. The database stays correct either way, which is exactly why this +# needs its own check instead of being caught by the peak. +again = c.peak.sync(c.p1) +third = c.peak.sync(c.p1) +print(f" sync() called three times over the same closed quarter: " + f"{n}, {again}, {third} newly banked; tracker reports " + f"{c.peak.recorded} quarter(s)") +check("...and syncing the same quarter again banks nothing new, so the count " + "the status page shows is quarters and not cycles", + again == 0 and third == 0 and c.peak.recorded == 1) +check("...and the peak is unchanged by the repeat", + near(c.peak.peak(B).peak_w, 4998.0, 1e-6)) + +rows = [r for r in c.checks() if "capacity-tariff" in r["text"] or "peak" in r["text"]] +peak_rows = [r for r in rows if "peak" in r["text"] and "quarter(s) banked" in r["text"]] +print(" status row: " + (peak_rows[0]["text"] if peak_rows else "(none)")) +check("the status page carries exactly one capacity-tariff peak row", + len(peak_rows) == 1) +check("...naming the peak, the soft limit and the quarters banked, all derived " + "from the controller that was actually built", + bool(peak_rows) and "4998 W" in peak_rows[0]["text"] + and f"{SHIPPED_CAP_W:.0f} W soft limit" in peak_rows[0]["text"] + and "1 quarter(s) banked" in peak_rows[0]["text"]) +check("...and it is FLAGGED, because 4998 W is over §9.1's 80 % warning point " + f"on a {SHIPPED_CAP_W:.0f} W limit", + bool(peak_rows) and not peak_rows[0]["ok"] and peak_rows[0]["warn"]) + +# The half that matters: the same page with a store that cannot answer. +c2 = built(TMP / "no-such-dir" / "nope.db") +u_rows = [r for r in c2.checks() if "capacity-tariff peak" in r["text"]] +print(" status row (unreadable store): " + + (u_rows[0]["text"] if u_rows else "(none)")) +check("an unreadable store gets its OWN row, saying UNREADABLE", len(u_rows) == 1) +check("...and it does NOT read as a quiet month at 0 W - without this, a broken " + "instrument looks exactly like a month with no peak", + bool(u_rows) and "UNREADABLE" in u_rows[0]["text"] + and "0 %" not in u_rows[0]["text"] and u_rows[0]["warn"]) +check("...and the healthy row and the unreadable row are different text", + bool(u_rows) and bool(peak_rows) + and u_rows[0]["text"] != peak_rows[0]["text"]) + +# THE MEASUREMENT IS OF DELIVERED POWER (SAFETY-20). Graded on the parsed +# SYNTAX, not on the text: the module docstring argues this at length and names +# every forbidden word while doing so, so a grep over the source would be +# satisfied by deleting the explanation and would fail on writing one. What must +# be true is that no NAME the code evaluates refers to a command. +import ast as _ast + +_tree = _ast.parse(src) +_names = {n.id for n in _ast.walk(_tree) if isinstance(n, _ast.Name)} +_names |= {n.attr for n in _ast.walk(_tree) if isinstance(n, _ast.Attribute)} +_names |= {n.name for n in _ast.walk(_tree) + if isinstance(n, (_ast.FunctionDef, _ast.ClassDef))} +_FORBIDDEN = {"setpoint", "write_setpoint", "target", "Decision", "i_clamped", + "clamped", "Claim", "resolve", "P_PEAK", "arbiter"} +_found = sorted(_names & _FORBIDDEN) +_imports = sorted(m.module or "" for m in _ast.walk(_tree) + if isinstance(m, _ast.ImportFrom)) +print(f" tariff.py evaluates {len(_names)} distinct names and imports " + f"from {_imports or ['(stdlib only)']}") +check(f"none of them is a command-side name {sorted(_FORBIDDEN)} - the utility " + f"bills what FLOWED, so this reads the meter and nothing else" + + (f"; found {_found}" if _found else ""), not _found) +check("...and it imports nothing from arbiter, clamp or control: it files no " + "claim, applies no clamp, and commands nothing - SAFETY-07's job", + not [m for m in _imports if m in ("arbiter", "clamp", "control", + ".arbiter", ".clamp", ".control")]) +# ...and the guard is not vacuous: the same grader run over main.py, which DOES +# command, must light up. +_main = {n.attr for n in _ast.walk( + _ast.parse((HERE / "app" / "main.py").read_text(encoding="utf-8"))) + if isinstance(n, _ast.Attribute)} +check(f"the same grader over main.py finds {sorted(_main & _FORBIDDEN)}, so it " + f"is capable of failing", bool(_main & _FORBIDDEN)) + + +# ============================================================================== +print() +shutil.rmtree(TMP, ignore_errors=True) +if fails: + print(f"{len(fails)} FAILED: {', '.join(fails)}") + sys.exit(1) +print("all checks passed") -- 2.54.0