diff --git a/specs/spec_loadmodel.md b/specs/spec_loadmodel.md index 1c6dc16..952ef0f 100644 --- a/specs/spec_loadmodel.md +++ b/specs/spec_loadmodel.md @@ -1031,6 +1031,60 @@ appartient à un chauffe-eau. `assignedCarId` existe déjà dans `ChargingInfo` : le jour où la communication véhicule arrive, la migration du rang de la borne vers le véhicule reste possible **sans casser l'acquis**. +**LM-1208 — Une charge sortie de la DÉCISION n'est jamais sortie de la COMPTABILITÉ.** +*(Règle posée par l'agent app, 2026-08-28, sur un constat de banc. La règle est retenue ; le +mécanisme qui l'accompagnait était inexact — voir l'encadré.)* + +Quel que soit le motif d'exclusion — mode manuel, véhicule inconnu, borne débranchée — **la +consommation réelle de la charge reste dans le bilan du budget**. Une charge qu'on cesse de +piloter ne cesse pas de consommer. + +> **Cette règle est DÉJÀ tenue, et par construction** : le budget part de la mesure **brute** du +> compteur (invariant 8 d'`AGENTS.md`), donc la consommation d'une charge exclue y est déjà +> déduite — sans que personne ait à la réserver. Vérifié au banc le 2026-08-28 : la V2C tirant +> 3,9 kW hors arbitrage, le compteur est passé de −2 915 W (export) à +3 531 W (import) et +> l'arbitre a publié « Surplus insuffisant (−3 531 W) — chauffe-eau à 0 W ». **L'ECS n'a pas été +> servi par-dessus.** L'exclusion est conservatrice : la charge exclue retire du budget aux +> autres, et personne ne le lui rend. +> +> **La règle garde pourtant un porteur, étroit et réel** : une charge exclue du contexte mais +> commandée par le **proxy** ne reçoit aucun `evReservedW` — sa puissance commandée et pas +> encore mesurée n'est réservée par personne (correction A ne couvre que les actions du +> scheduler). Le trou est transitoire — un cycle, jusqu'à ce que le compteur rattrape — et il ne +> mord pas aujourd'hui, le mode manuel faisant sauter la borne aussi côté proxy. **Il mordra au +> §10**, où la passe éco décide d'acheter : acheter en croyant disposer d'une puissance déjà +> engagée est exactement le défaut que la règle nomme. + +**LM-1208-b — « Pas de voiture assignée » cesse d'être un critère d'exclusion.** *(Décision +demandée, argument de l'agent app retenu.)* + +Trois raisons, et la troisième est décisive : + +1. **Le cas de l'invité le rend intenable.** Une voiture qui n'est pas celle du propriétaire ne + sera jamais déclarée, et la borne cesserait d'être arbitrée **précisément quand elle + consomme**. +2. **Le critère n'est pas vérifiable.** L'assignation est déclarée à la main ; rien ne dit ce qui + est réellement branché. Un critère d'arbitrage qui repose sur une déclaration invérifiable + n'arbitre pas, il devine. +3. **Il CONTREDIT LM-1206.** Le rang et le plancher appartiennent à la **borne**, pas au + véhicule. Exiger un véhicule connu pour arbitrer la borne réintroduit exactement la + dépendance que LM-1206 a écartée. + +**Ce qu'on perd sans voiture assignée est une FONCTION, pas l'arbitrage** : l'échéance et la +cible d'énergie deviennent indisponibles — dégradation, pas exclusion. C'est la même distinction +que C1 de LM-1009 : une capacité manquante se dit, elle ne fait pas disparaître la charge. + +> **Ce qui RESTE un critère d'exclusion, et pourquoi** : +> — **mode manuel** (`ChargingModeNormal`) : c'est une intention explicite de l'utilisateur — +> il pilote, l'arbitre s'abstient. Vérifiable, et voulu. +> — **aucun véhicule branché** (`pluggedIn`) : la borne ne peut rien consommer de ce qu'on lui +> allouerait (mesuré, `docs/RELEVE_3g2.md` §3.1). +> +> ⚠️ **Conséquence d'exploitation à connaître** : le mode par défaut d'une borne fraîchement +> détectée est `ChargingModeNormal`. **Une borne neuve n'est donc jamais arbitrée tant que +> personne n'a choisi un mode éco** — ce qui est correct par construction, mais doit être visible +> à la mise en service, sans quoi « la borne ne charge pas toute seule » se lira comme un défaut. + **LM-1207 — Ne PAS ajouter de `priority` à `ChargingInfo`.** Ce serait un **second système de priorité**, et il serait immédiatement insuffisant : il ne saurait pas exprimer **« VE1 > ECS > VE2 »**, puisqu'il ne classerait que les bornes entre elles. Deux classements