From 5dfd8b9047bc462c6feccee5c5e0aae36ebb357a Mon Sep 17 00:00:00 2001 From: Patrick Schurig Date: Tue, 8 Sep 2026 12:09:03 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20trois=20modes=20tranch=C3=A9s,=20et=20l?= =?UTF-8?q?es=20transitions=20de=20d=C3=A9rogation=20sont=20=C3=A9cart?= =?UTF-8?q?=C3=A9es=20du=20tri?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DÉCISION PRODUIT (Patrick, 2026-09-08, après validation du lot sur le banc) : trois modes — Normal (manuel), PV, Min+PV — et le boost n'en est PAS un quatrième. C'est la dérogation : un bouton d'action à côté du sélecteur, posé par SetLoadDerogation et non par SetChargingInfo, avec sa durée obligatoire et bornée [60 s, 6 h] que l'écran doit faire saisir. Gravé dans les RÉPONSES FIGÉES : un mode se choisit et dure, une dérogation répond à un besoin ponctuel et s'efface — les deux ne se rangent pas au même endroit. CRITÈRE DE TRI DE L'ÉTAPE 4 — une clause de plus, écrite sur la mesure. Une dérogation fait bouger la consigne de plusieurs kilowatts d'un coup, et CHAQUE BORD ouvre une divergence : à l'ouverture la voiture négocie sa montée (13800 attendus, 3930 mesurés, convergence en 300 s), à la fermeture la borne n'a pas encore décru (0 attendu, 8367 mesurés). La fermeture est la plus trompeuse : immédiate, énorme, et trait pour trait semblable à une commande ignorée. Le discriminant est temporel et déjà publié — une divergence née dans le même cycle qu'un DEROGATION_ENDED, ou qu'un DEROGATION_ACTIVE neuf, est une transition. Sans cette clause, chaque boost compterait pour DEUX incidents, et l'étape 4 se justifierait d'elle-même en comptant ses propres transitoires : le mécanisme du §6.2 — un instrument qui fabrique la preuve dont il a besoin — déplacé du banc vers la mesure. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_015F7G5VeaPVSMeVNjiGj36p --- AGENTS.md | 11 +++++++++++ docs/DESIGN_COMMANDE_PERDUE.md | 17 +++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/AGENTS.md b/AGENTS.md index 5578000..c7a95e4 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1367,6 +1367,17 @@ aucune, la décision est une intention, et elle se périmera à la vitesse du co - `protocolVersion` : **constante `"1.0"`**, pas un paramètre de config. - Renommage : FAIT (Phase 1, commit f4d5b20). TARGET et noms de paquets debian INCHANGÉS (.so drop-in remplaçant l.amont — garantit un seul plugin énergie chargé). +- **TROIS modes de charge, et le boost n'en est pas un** (tranché par Patrick le 2026-09-08, + après validation du lot sur le banc réel). Le sélecteur porte **Normal (manuel) · PV · + Min+PV** — plus leurs variantes à échéance. Le **boost est une DÉROGATION** : un bouton + d'action à côté du sélecteur, jamais une quatrième position. + · Il ne passe **pas** par `SetChargingInfo` mais par `NymeaEnergy.SetLoadDerogation`. + · Sa **durée est obligatoire et bornée `[60 s, 6 h]`**, refusée hors de là (\rule{LM-1500}) — + et c'est à l'écran de la faire saisir. + · Un mode écrit pendant une dérogation la **termine** (\rule{LM-1500-g}), sans restituer. + Ne pas rouvrir la question « faut-il un ChargingModeBoost ? » : un mode se choisit et dure, + une dérogation répond à un besoin ponctuel et s'efface. Les deux ne se rangent pas au même + endroit. ## WORKFLOW OBLIGATOIRE diff --git a/docs/DESIGN_COMMANDE_PERDUE.md b/docs/DESIGN_COMMANDE_PERDUE.md index 742d18a..29a081a 100644 --- a/docs/DESIGN_COMMANDE_PERDUE.md +++ b/docs/DESIGN_COMMANDE_PERDUE.md @@ -222,6 +222,23 @@ l'objet `command` ne le distingue d'un zéro réel. - **Écarté** : les épisodes sur une charge dont le compteur est constant sur la fenêtre. - **Le compte des écartés est publié aussi.** Un tri dont on ne dit pas ce qu'il a jeté n'est pas un tri, c'est une sélection. +- **Écarté aussi : les épisodes de TRANSITION DE DÉROGATION** — ajouté le 2026-09-08, mesuré. + Une dérogation fait bouger la consigne de plusieurs kilowatts d'un coup, dans les deux sens, et + chaque bord ouvre une divergence : + + | bord | trace du banc | nature | + |---|---|---| + | ouverture | `11:53:00 DÉBUT — attendu 13800 W, mesuré 3930 W` → `11:57:00 FIN après 300 s — attendu 8970 W, mesuré 8396 W` | la voiture **négocie sa montée** | + | fermeture | `11:58:00 DÉBUT — attendu 0 W, mesuré 8367 W` | la borne **n'a pas encore décru** | + + **La fermeture est la plus trompeuse** : l'écart est immédiat, énorme, et il ressemble trait + pour trait à une commande ignorée. Le discriminant est temporel et il est publié — **une + divergence qui naît dans le même cycle qu'un `DEROGATION_ENDED`, ou dans celui d'un + `DEROGATION_ACTIVE` neuf, est une transition en cours.** + + Sans cette clause, **chaque boost compterait pour deux incidents**, et l'étape 4 se justifierait + d'elle-même en comptant ses propres transitoires. C'est le mécanisme du §6.2 — un instrument + qui fabrique la preuve dont il a besoin — appliqué à la mesure au lieu du banc. ---