diff --git a/CLAUDE.md b/CLAUDE.md
index b49fc70..eaefafa 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -269,11 +269,20 @@ plan, pas de financement.
> 🔴 **Et il n'y a d'identité que de ce côté-là .** Une charge financée au réseau ne vit
> **nulle part** : `budget.evReservedW` n'est pas un registre d'allocation mais un **terme de
-> correction** du budget, qui mêle la correction « commandé non encore mesuré » à la part
-> réseau d'`EV_GRID_START` — une borne servie au réseau qui tire déjà ce qu'on lui a commandé
-> y contribue **0** alors que son `targetW` vaut 7 000 W. Constaté par le moteur le
-> 2026-08-30 en câblant R3. Les watts achetés n'auront de registre qu'avec
-> `draw.committedW`, préalable à R3. **Ne réconcilier aucun total sur `evReservedW`.**
+> correction** du budget — « **commandé, pas encore mesuré** », la latence entre l'ordre et
+> sa lecture au compteur. Sur `+etm30` il mêle encore à cela la part réseau d'`EV_GRID_START`,
+> et une borne au réseau qui tire déjà ce qu'on lui a commandé y contribue **0** alors que son
+> `targetW` vaut 7 000 W. **Ne réconcilier aucun total dessus, jamais** — la nature du champ
+> l'interdit, pas son état de livraison.
+>
+> Le libellé d'écran est **« Commandé, pas encore mesuré »** (2026-08-30). « Réservé au
+> véhicule » affirmait deux faussetés : que c'est réservé, et que ça regarde le véhicule
+> plutĂ´t que la latence de sa mesure.
+>
+> Les watts achetés n'auront de registre qu'avec **`draw.committedW`**, préalable à R3.
+> Annoncé livré en `+etm31` — **non vérifié à la sonde** : le 2026-08-30 la box porte
+> `powersync-energy-plugin-nymea 1.15.2+etm30`, et aucune clé `draw` n'apparaît dans la
+> télémétrie.
Le niveau publié est `"comfort"` et ce **n'est pas un rebaptisage** : c'est bien la passe
qui, au §10, servira le confort depuis le surplus. Un niveau à `targetW: 0` est une passe
diff --git a/docs/mockups/deux_passes_eco_confort_mockup.html b/docs/mockups/deux_passes_eco_confort_mockup.html
index 4b9e80d..a2169b5 100644
--- a/docs/mockups/deux_passes_eco_confort_mockup.html
+++ b/docs/mockups/deux_passes_eco_confort_mockup.html
@@ -422,10 +422,12 @@
setpointW, currentA), qui existe déjà aujourd'hui.
Et il ne se répartit pas non plus. L'écart appartient à la charge, pas à un niveau :
l'adaptateur arrondit une consigne unique, il ne sait pas de quel besoin elle venait.
- * « Réservé VE » n'est pas une destination — c'est un terme de correction du budget
- (constaté par le moteur le 2026-08-30). Il est affiché parce que la box le publie, jamais sommé, et
- son libellé actuel affirme une réservation qui n'a pas lieu : il attend une définition du moteur pour
- être réécrit. Les watts achetés, eux, n'ont de registre qu'avec draw.committedW.
+ * « Commandé, pas encore mesuré » — et ce n'est pas une destination. Le champ
+ budget.evReservedW est un terme de correction : la latence entre l'ordre et sa
+ lecture au compteur. Il est affiché parce que la box le publie, jamais sommé. Son ancien
+ libellé, « Réservé au véhicule », affirmait deux faussetés — que c'est réservé, et que ça regarde le
+ véhicule plutôt que la latence de sa mesure ; réécrit le 2026-08-30 sur la définition livrée par le
+ moteur. Les watts achetés, eux, n'ont de registre qu'avec draw.committedW.
Le bandeau ◆ n'apparaît que si au moins une charge porte une obligation éco. Sans obligation,
il n'y a qu'une passe utile et la phrase serait du bruit (LM-1007).
diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb
index 602fb90..dbe84cb 100644
--- a/lib/l10n/app_fr.arb
+++ b/lib/l10n/app_fr.arb
@@ -127,7 +127,10 @@
"telemetryBudgetTitle": "Budget de surplus du cycle",
"telemetryBudgetAbsent": "Aucun budget publié pour ce cycle : la planification est suspendue.",
"budgetSurplus": "Surplus entrant",
- "budgetEvReserved": "Réservé au véhicule",
+ "budgetEvReserved": "Commandé, pas encore mesuré",
+ "@budgetEvReserved": {
+ "description": "budget.evReservedW. Le libellé précédent, « Réservé au véhicule », affirmait deux choses fausses : que c'est réservé, et que ça concerne le véhicule plutôt que la LATENCE de sa mesure. Définition livrée par le moteur le 2026-08-30, après que la part réseau d'EV_GRID_START en a été retirée — un champ à deux natures ne se documente pas. Ce n'est PAS un registre d'allocation : ne rien réconcilier dessus. La clé garde le nom du champ de la box, pas celui de l'ancienne affirmation."
+ },
"budgetRecredited": "Recrédité",
"budgetAllocated": "Alloué",
"budgetRemaining": "Reliquat",
diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart
index bfd45e5..fe2aa5d 100644
--- a/lib/l10n/app_localizations.dart
+++ b/lib/l10n/app_localizations.dart
@@ -409,10 +409,10 @@ abstract class L10n {
/// **'Surplus entrant'**
String get budgetSurplus;
- /// No description provided for @budgetEvReserved.
+ /// budget.evReservedW. Le libellé précédent, « Réservé au véhicule », affirmait deux choses fausses : que c'est réservé, et que ça concerne le véhicule plutôt que la LATENCE de sa mesure. Définition livrée par le moteur le 2026-08-30, après que la part réseau d'EV_GRID_START en a été retirée — un champ à deux natures ne se documente pas. Ce n'est PAS un registre d'allocation : ne rien réconcilier dessus. La clé garde le nom du champ de la box, pas celui de l'ancienne affirmation.
///
/// In fr, this message translates to:
- /// **'Réservé au véhicule'**
+ /// **'Commandé, pas encore mesuré'**
String get budgetEvReserved;
/// No description provided for @budgetRecredited.
@@ -469,7 +469,7 @@ abstract class L10n {
/// **'Borne : état non publié ce cycle'**
String get telemetryEvStateUnknown;
- /// funding == « grid » : l'allocation vit dans budget.evReservedW, pas dans budget.allocatedW. Sans cette mention, l'utilisateur voit une charge servie alors que le surplus est nul et croit à un défaut.
+ /// funding == « grid » : l'allocation est hors de budget.allocatedW, et sans registre où la retrouver (evReservedW est une correction du budget, pas une destination — constaté 2026-08-30). Sans cette mention, l'utilisateur voit une charge servie alors que le surplus est nul et croit à un défaut.
///
/// In fr, this message translates to:
/// **'Financée au réseau (échéance ou tarif dynamique) — hors budget de surplus'**
diff --git a/lib/l10n/app_localizations_fr.dart b/lib/l10n/app_localizations_fr.dart
index 36baf16..e31e113 100644
--- a/lib/l10n/app_localizations_fr.dart
+++ b/lib/l10n/app_localizations_fr.dart
@@ -212,7 +212,7 @@ class L10nFr extends L10n {
String get budgetSurplus => 'Surplus entrant';
@override
- String get budgetEvReserved => 'Réservé au véhicule';
+ String get budgetEvReserved => 'Commandé, pas encore mesuré';
@override
String get budgetRecredited => 'Recrédité';