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. ---