From 7863517bba1d493179691deb36aa632f751c1afb Mon Sep 17 00:00:00 2001 From: Patrick Schurig Date: Tue, 8 Sep 2026 06:21:14 +0200 Subject: [PATCH] =?UTF-8?q?docs(v2c):=20le=20compteur=20d'absences=20n'ava?= =?UTF-8?q?nce=20que=20sur=20les=20polls=20r=C3=A9ussis=20=E2=80=94=20prop?= =?UTF-8?q?ri=C3=A9t=C3=A9=20load-bearing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le commentaire disait déjà la propriété ; il ne disait pas qu'elle PORTE. Une réécriture qui ferait avancer le compteur au timeout, ou le piloterait depuis un minuteur, la casserait sans qu'aucun test ne le dise. Ce qu'elle garantit : un faux débranchement est IMPOSSIBLE à fabriquer par une coupure réseau. Ce n'est pas théorique — 70 % de polls perdus mesurés le 2026-08-28, 40 % encore le 2026-09-06. Un compteur piloté au timeout clôturerait une session toutes les 90 secondes sur ce lien. Et elle devient load-bearing au-delà de la session : les dérogations se terminent au débranchement, et l'asymétrie que leur design exige — prompt à conclure la fin, lent à conclure la poursuite — existe déjà ici. Quelqu'un y a pensé avant nous. --- v2c/integrationpluginv2c.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/v2c/integrationpluginv2c.cpp b/v2c/integrationpluginv2c.cpp index 3d2e2e5..c5da9d3 100644 --- a/v2c/integrationpluginv2c.cpp +++ b/v2c/integrationpluginv2c.cpp @@ -418,6 +418,20 @@ void IntegrationPluginV2c::accumulerEnergieDeSession(Thing *thing, TrydanModbusM // 1. Confirmation du débranchement. Seuls les polls RÉUSSIS parviennent ici : // updateFinished() n'est émis qu'après une séquence de lecture complète. Une // coupure réseau gèle donc le compteur d'absences, elle ne le fait pas avancer. + // + // ┌─ CETTE PROPRIÉTÉ PORTE. Ne pas la « corriger » en avançant le compteur sur les + // │ polls échoués, ni en le pilotant depuis un minuteur. + // │ + // │ Elle rend un faux débranchement IMPOSSIBLE à fabriquer par un lien mort — ce qui + // │ n'est pas théorique ici : la campagne du 2026-08-28 a mesuré jusqu'à 70 % de polls + // │ perdus, et le 2026-09-06 encore 40 % sur l'heure. Un compteur qui avancerait au + // │ timeout clôturerait une session toutes les 90 s sur ce lien. + // │ + // │ Et elle devient LOAD-BEARING au-delà de la session : les dérogations (« boost ») + // │ se terminent au débranchement, et une dérogation terminée à tort par un lien qui + // │ bat serait une charge interrompue sans raison. Cf. docs/DESIGN_DEROGATION.md du + // │ dépôt moteur — l'asymétrie qu'il demande existait déjà ici. + // └─ suivi.absences = branche ? 0 : suivi.absences + 1; // 2. Clôture, une fois le débranchement confirmé sur k_absencesPourClore polls.