diff --git a/debian-qt5/changelog b/debian-qt5/changelog index a52029a..f269edb 100644 --- a/debian-qt5/changelog +++ b/debian-qt5/changelog @@ -1,3 +1,47 @@ +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 + INDISPONIBLE. Le comportement était « non défini » depuis l'écriture de la spec : + findConfiguredThing rendait nullptr, writeRelay loguait et continuait, telemetry() SAUTAIT le + relais. Deux issues, toutes deux fausses — ou bien plus aucun relais actif ne mesurait et + l'on retombait sur le nominal du PALIER ENTIER, part du relais fantôme comprise ; ou bien des + survivants mesuraient et l'on publiait une somme SOUS-ÉVALUÉE. + * Ce n'était pas un défaut d'affichage. telemetry().currentPowerW alimente le recrédit + anti-clignotement, donc le BUDGET : l'arbitre se trompait sur le surplus disponible pendant + qu'available restait vrai. Un mensonge qui décide, pas un mensonge qui s'affiche. + * La règle retenue est celle de la famille : available faux, faultCode THING_MISSING, et le + traitement d'ECS-410 — sortie de l'ARBITRAGE, maintien dans la COMPTABILITÉ, figée à la + puissance crue engagée. La puissance est donc RETIRÉE du budget des charges suivantes au lieu + de leur être recréditée. Aucune somme partielle n'est jamais publiée. + * Écartée : « compter 0 W et servir le reste ». Un relais absent du registre est un Thing + supprimé ou un plugin qui ne le voit plus — on ne sait pas dans quel état est le contact, et + servir le reste reviendrait à commander une charge dont on ne connaît plus la configuration + matérielle. + * Jugé sur TOUS les relais déclarés, jamais sur ceux du palier courant : au palier 0 aucun n'est + fermé, et juger là-dessus ferait basculer la disponibilité au rythme du thermostat. Même règle + que deviceMeasurement(), qui traitait DÉJÀ le cas correctement en rendant source: "none" — + aligner l'ancien sur le neuf, pas inventer une politique. + * THING_MISSING prime sur WRITE_FAILED dans runtimeView() : un relais absent EXPLIQUE les + écritures qui échouent, et annoncer WRITE_FAILED enverrait l'opérateur au bus quand la cause + est dans la configuration. Corollaire écrit : ClearLoadFault lève le défaut d'ÉCRITURE mais ne + fait pas exister un Thing — les deux causes se lisent séparément. + * testEcsPartialFailure a dû être ajusté, et c'est instructif : il se servait d'un relais JAMAIS + CONFIGURÉ comme raccourci pour forcer un échec d'écriture. Le raccourci a désormais un sens + propre. Le test distingue maintenant les deux — le défaut collant se lève, le câblage + manquant non. + * Éprouvé par testVanishedRelayFreezesTheLoad, vérifié échouant sans le correctif, dont la + troisième assertion est celle qui compte : ce que le fantôme laissait aux charges SUIVANTES. + * TROUVÉ PAR LA LECTURE D'UNE RÈGLE, ni par un test ni par le banc. ECS-111 dormait dans une + table de statut supprimée depuis, et est ressortie dans les quatorze règles « spécifiées + seules en territoire livré » que tools/gen-rules.py a listées. Premier défaut réel exhumé par + le chantier de documentation. + * Passe aussi : trois citations de règles ajoutées (LM-400, LM-301-b, LM-600), quatre règles + passées en cadrage, et la classe « cadrage » elle-même — 70 « spécifiée seule » au départ, + 33 aujourd'hui. 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 Sat, 29 Aug 2026 15:05:00 +0200 + powersync-energy-plugin-nymea (1.15.2+etm28) trixie; urgency=medium * LE RATTRAPAGE DE CONFIGURATION EST CYCLIQUE (LM-1209-e). provisionEvChargerConfig() vivait