From 70d64a53fa755725725f001c048de60848d29e76 Mon Sep 17 00:00:00 2001 From: Patrick Schurig Date: Fri, 28 Aug 2026 15:21:33 +0200 Subject: [PATCH] =?UTF-8?q?docs(contrat):=20une=20charge=20absente=20de=20?= =?UTF-8?q?la=20t=C3=A9l=C3=A9m=C3=A9trie=20n'est=20pas=20=C2=AB=20none=20?= =?UTF-8?q?=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Distinction remontée par l'agent app, qui a dû l'ajouter parce que le contrat ne la portait pas — et confirmée sur le banc le jour même. `none` est PUBLIÉ, donc il affirme « cette charge n'est pas mesurable ». L'absence n'affirme rien : elle dit que la charge n'a pas participé à l'arbitrage du cycle — mode manuel, aucun véhicule branché — ce qui est sans rapport avec sa mesurabilité. Sans la distinction, une borne débranchée se verrait annoncer « le compteur dédié est la seule voie » alors qu'elle publiera la sienne au prochain cycle. Même famille que LM-1009 D (un champ absent se voit, un champ qui s'efface se lit comme un zéro), appliquée un cran plus haut : ici c'est l'ENTRÉE entière qui s'efface, et la lire comme un `none` transformerait un silence en affirmation. La garantie qui rend la règle utilisable est posée explicitement : `measurement` est présent pour toute charge de loads[], et pour elle seule. Constaté tel quel sur .75 en +etm26 : deux bornes pluggedIn:false absentes de loads[], dont la V2C qui porte currentPower. AGENTS.md consigne aussi l'état du déploiement et les trois vérifications de banc masquées par la configuration de la box — chauffe-eau et pac-terrain portant un meterThingId réel, elles publient `meter` et le chemin `device` n'est pas atteint. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_015F7G5VeaPVSMeVNjiGj36p --- specs/spec_loadmodel.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/specs/spec_loadmodel.md b/specs/spec_loadmodel.md index 170ce07..baa2228 100644 --- a/specs/spec_loadmodel.md +++ b/specs/spec_loadmodel.md @@ -997,6 +997,18 @@ o:measurement { distinguer « pas mesurable » de « compteur en panne », et continue d'afficher un bloc de mesure vide sur un `sg-ready` qui n'en aura jamais. +> **Et `none` ne se confond pas avec l'ABSENCE de la charge.** *(Distinction remontée par +> l'agent app, 2026-08-28.)* `none` est **publié**, donc il AFFIRME. L'absence n'affirme rien : +> elle dit que la charge n'a pas participé à l'arbitrage du cycle — mode manuel, aucun véhicule +> branché — ce qui est sans rapport avec sa mesurabilité. Une borne débranchée est absente de +> `loads[]` et publiera `device` dès qu'on y branchera une voiture ; lui annoncer « le compteur +> dédié est la seule voie » serait faux. +> +> C'est la même famille que LM-1009 D — *un champ absent se voit ; un champ qui s'efface se lit +> comme un zéro* — appliquée un cran plus haut : ici c'est l'ENTRÉE entière qui s'efface, et la +> lire comme un `none` transformerait un silence en affirmation. La garantie qui rend la règle +> utilisable : **`measurement` est présent pour toute charge de `loads[]`, et pour elle seule.** + > **Sous `none`, aucune valeur n'est publiée sous ce nom.** La puissance *nominale* existe et > reste lisible — `mechanism.stageW`, `mechanism.state`, `mechanism.estimatedPowerW` la portent > déjà, et disent d'où elle vient. La faire passer pour une mesure produirait un écart