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.