diff --git a/CLAUDE.md b/CLAUDE.md index aa9f30b..0ac1324 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -115,6 +115,27 @@ Min+PV + échéance → ChargingModeEcoMinWithTargetTime + targetPercentage + > l'œil comme à la sonde. Sur `.75` le 2026-09-06, **zéro** quart d'heure sur 97 n'atteint > 4 140 W (meilleur : 2 214 W). C'est ce qui a permis de croire le mode implémenté : deux > modes qui rendent le même rien ne se distinguent par aucune observation. +> +> **Le marqueur de présence est `boundBy`, dans `ECO_FLOOR_GRID.params`** (moteur, 2026-09-07) +> — il n'apparaît que sur un moteur qui sert effectivement le minimum, à partir de `+etm57`. +> C'est donc lui, et pas le mode ni la version annoncée, qui répond à « le plancher est-il +> servi ici ? ». +> +> 🔴 **Absent ne veut pas dire « pas de plancher »** — il veut dire « moteur antérieur à +> `+etm57` ». Même règle que `levels[]` vide ou `counts` absent : l'absence date la box, elle +> ne décrit pas le cycle. Un écran qui lirait l'absence comme « aucun minimum requis » +> affirmerait une décision d'arbitrage à partir d'un silence de déploiement. +> +> **Mesure « avant », prise le 2026-09-07 pour pouvoir dater la livraison** : version posée +> `powersync-energy-plugin-nymea 1.15.2+etm56`, `boundBy` **absent** (0 occurrence dans toute +> la trame), et `ECO_FLOOR_GRID.params` du chauffe-eau limité à ses six clés connues +> — `atMaximum`, `gridW`, `regime`, `remainingS`, `remainingWh`, `targetWh`. Sans cette +> mesure, un `boundBy` toujours absent après livraison serait indiscernable d'un champ jamais +> ajouté. +> +> Le bouton Min+PV **reste tel quel** (Patrick, 2026-09-07) : il fera ce qu'il annonce dès +> `+etm57` posé. Rien à conditionner avant que le champ soit observable — **sonder avant de +> câbler** vaut aussi pour un marqueur de présence. ---