chore(release): 1.15.2+etm30

R2 — funding descend au niveau, et l'identité de réconciliation est écrite.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015F7G5VeaPVSMeVNjiGj36p
This commit is contained in:
Patrick Schurig 2026-08-29 16:57:39 +02:00
parent cd010dd28c
commit df20be1404

View File

@ -1,3 +1,37 @@
powersync-energy-plugin-nymea (1.15.2+etm30) trixie; urgency=medium
* R2 — LE FINANCEMENT DESCEND AU NIVEAU. `funding` était par CHARGE ; il vit désormais dans
`levels[]`. Au §10 la même charge sera financée au réseau pour son plancher éco et au surplus
pour son confort DANS LE MÊME CYCLE : un financement par charge y devient indécidable, et
c'est lui qui porte l'identité de réconciliation de l'app.
* Déplacé MAINTENANT bien que le §10 ne soit pas écrit : c'est la seule des huit exigences de
la maquette qui soit un changement de FORME d'un champ existant, donc la seule qui se
renchérisse à chaque écran qui s'y appuie. Les sept autres attendent sans se renchérir.
* UN SEUL NIVEAU aujourd'hui, et c'est « comfort » : la passe unique d'aujourd'hui est celle
qui servira le confort depuis le surplus. La passe éco est la nouveauté du lot, pas la passe
existante rebaptisée. Une charge sans obligation éco n'aura jamais d'entrée « eco » à zéro —
l'absence est l'information (R1).
* `funding` N'EST PAS conservé en résumé sur la charge. Le cas mixte est justement celui qui le
rendrait indécidable : « mixte » serait un troisième code que personne n'a demandé, « grid si
l'un l'est » une convention que chaque client redériverait autrement. Deux endroits pour un
fait divergent. Le motif `decision` reste, lui, parce qu'on saura dire de quel niveau il
parle (R7) — on garde un champ hérité quand on peut en dire quelque chose de VRAI, jamais par
symétrie.
* L'IDENTITÉ DE RÉCONCILIATION est écrite dans INTERFACE.md et non laissée à reconstruire :
somme sur les charges, somme sur les niveaux dont funding == "surplus", de niveau.targetW ==
budget.allocatedW. Elle a changé de forme avec R2 ; un client qui la reconstruirait depuis
l'ancienne divergerait au premier cas mixte, c'est-à-dire au premier cycle du §10.
* L'unique exception est publiée : EV_GRID_START partage une allocation entre deux compteurs,
et sa contribution au surplus est decision.params.budgetW, pas targetW. C'est ce que R3
généralisera ; d'ici là l'exception est dans le contrat, pas dans la tête du lecteur.
* `levels[]` absent = box antérieure, OU mode dégradé — sans plan, il n'y a pas de financement.
* Rupture assumée pour un client antérieur qui lirait `entry.funding` : même arbitrage que
measuredW → measurement, pas d'alias, deux noms pour une chose divergent.
* Suite complète : simulation 33/33, charging 16/16, loadmodel 20/20, spotmarket 7/7. amd64
0 erreur / 0 avertissement, doxygen 0 avertissement.
-- Patrick Schurig <etm.schurig@gmail.com> Sat, 29 Aug 2026 16:40:00 +0200
powersync-energy-plugin-nymea (1.15.2+etm29) trixie; urgency=medium
* ECS-111 DÉFINI ET CORRIGÉ — un relais déclaré qui manque au registre nymea rend la charge