chore(release): 1.15.2+etm28

Le rattrapage cyclique du provisionnement, et la correction de ce que le brief
promettait à l'app sur la suppression d'une entrée.

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 11:08:08 +02:00
parent 2c46f8e798
commit a2ff20889c

View File

@ -1,3 +1,41 @@
powersync-energy-plugin-nymea (1.15.2+etm28) trixie; urgency=medium
* LE RATTRAPAGE DE CONFIGURATION EST CYCLIQUE (LM-1209-e). provisionEvChargerConfig() vivait
dans la branche « l'adaptateur vient d'être créé » de syncAdapters(). Or l'adaptateur est
construit depuis le THING : il survit à la suppression de l'entrée de configuration. Une
entrée supprimée depuis l'app n'était donc JAMAIS recréée — mesuré sur .75 le 2026-08-29,
entrée retirée, Thing vivant, rien en 140 s.
* Ce que cela produisait est le trou de 3g-2 rouvert par le côté client : la borne restait
ARBITRÉE mais ABSENTE de GetLoadConfig, à un rang de queue non réglable (evPriority() →
1000). Elle consommait du budget sans que personne puisse la classer, et rien ne le disait.
Seul un redémarrage de nymead réparait.
* La condition devient un ÉTAT et non un ÉVÉNEMENT : « cette borne n'a pas d'entrée » au lieu
de « l'adaptateur vient de naître ». Un rattrapage dont la condition est un événement ne
rattrape rien, puisqu'il ne se rejoue pas. Même distinction qu'entre ECS-411 — relire l'état
réel des relais — et l'hypothèse de départ qu'il a remplacée.
* Une entrée recréée revient en rankOrigin "auto", et c'est juste : personne ne l'a classée,
son rang est de nouveau un défaut. Le rang posé par l'installateur est PERDU avec l'entrée.
Supprimer une entrée n'est donc pas un moyen de retirer une borne de l'arbitrage — elle
revient, déclassée, en queue et avec son badge. enabled: false reste la voie, et conserve le
rang. La documentation promettait l'inverse à l'app : corrigée.
* Le REFUS de provisionnement n'est annoncé QU'UNE FOIS par borne. Le rattrapage étant
cyclique, répéter l'avertissement en produirait un par minute et pour toujours — règle déjà
posée pour les charges sans décision dans buildTelemetry(). Le drapeau tombe au premier
succès : un défaut qui se résout se redit s'il revient.
* LM-1209-d — le rang est un ordre TOTAL, les domaines ne le partitionnent pas. L'insertion en
queue entrelace les domaines ; exiger la contiguïté serait contradictoire avec la raison même
de LM-1209, puisque insérer une charge d'un autre domaine décalerait les suivantes. Grouper à
l'affichage oui, à l'écriture non. Aucun code : c'est une règle de contrat.
* INTERFACE.md porte désormais en tête l'avertissement de sonde : un refus arrive en
status: "success", le verdict étant dans params.energyError.
* Éprouvé par testDeletedEvChargerConfigComesBack — suppression, rattrapage au cycle suivant,
retour en queue et en "auto", et le cas négatif : le rattrapage ne se rejoue pas quand
l'entrée existe, sans quoi il réécrirait la config à chaque cycle et réarmerait les verrous.
Vérifié échouant avec l'ancien comportement. Suite complète : simulation 32/32, charging
16/16, loadmodel 20/20, spotmarket 7/7. amd64 0 erreur / 0 avertissement.
-- Patrick Schurig <etm.schurig@gmail.com> Sat, 29 Aug 2026 11:20:00 +0200
powersync-energy-plugin-nymea (1.15.2+etm27) trixie; urgency=medium
* L'AUTO-PROVISIONNEMENT REMPLIT UN TROU, IL NE DÉCIDE PAS (LM-1209). Une borne détectée