docs(sonde): +etm31 vérifié — draw.committedW est là, l'exception reste
Sonde contre `.75`, 2026-08-30, `powersync-energy-plugin-nymea 1.15.2+etm31` confirmé par dpkg. Trois points sur quatre vérifiés : - `draw` dans la MÊME trame que `budget`, **une seule clé** `committedW` — `authorisedW`, `remainingW`, `binding`, `perPhaseBound` absents, pas à zéro ; - `draw` publié même quand rien n'est acheté (`committedW: 0`, deux cycles) — donc son ABSENCE vaudra « box antérieure », jamais « rien acheté ce cycle ». Zéro est une valeur quand la grandeur existe, l'absence quand elle n'existe pas ; - identité surplus tenue : 1 200 == `budget.allocatedW`. Le quatrième ne l'est pas, et c'est celui qui décide : `EV_GRID_START` est **inobservable sur le banc**. Les deux bornes sont déclarées dans `GetLoadConfig` (V2C Trydan, Simulated wallbox) et absentes de `loads[]` — hors arbitrage, rien de branché — donc le motif ne peut pas survenir. La branche de `surplusShareW` reste. Elle ne partira qu'à l'observation d'un `EV_GRID_START` réel et de ses deux moitiés dans `budget.allocatedW` et `draw.committedW`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GKM8FDNHZWogAsjjfB8pSw
This commit is contained in:
parent
faffc43dd9
commit
820e58c13e
25
CLAUDE.md
25
CLAUDE.md
@ -279,13 +279,26 @@ plan, pas de financement.
|
||||
> 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`**. **Il n'est PAS sur la
|
||||
> box** au 2026-08-30, et « annoncé » ne vaut pas « posé » : le code est écrit côté moteur, le
|
||||
> cross-build n'a pas été fait, **aucun paquet `+etm31` n'existe**. Mesuré :
|
||||
> `powersync-energy-plugin-nymea 1.15.2+etm30`, et aucune clé `draw` dans la trame.
|
||||
> Les watts achetés ont enfin un registre : **`draw.committedW`**, posé en `+etm31` et
|
||||
> **vérifié à la sonde le 2026-08-30** (deux cycles). Publié dans la **même trame que
|
||||
> `budget`**, avec **une seule clé** — `authorisedW`, `remainingW`, `binding` et
|
||||
> `perPhaseBound` sont **absents, pas à zéro** : le plafond de soutirage n'existe pas encore,
|
||||
> et un `authorisedW: 0` afficherait un plafond fictif avec sa source.
|
||||
>
|
||||
> **Rien d'autre ne s'écrit ici avant que la sonde ait vu `draw.committedW` sortir** — et
|
||||
> l'exception `EV_GRID_START` de `surplusShareW` tient jusque-là.
|
||||
> ```jsonc
|
||||
> "budget": { … }, "draw": { "committedW": 0 }
|
||||
> ```
|
||||
>
|
||||
> **`draw` est publié même quand rien n'est acheté** (`committedW: 0`, mesuré). Donc `draw`
|
||||
> **absent** vaut « box antérieure à `+etm31` », **jamais** « rien acheté ce cycle » : zéro est
|
||||
> une valeur quand la grandeur existe, l'absence est une valeur quand elle n'existe pas.
|
||||
>
|
||||
> ⚠️ **L'exception `EV_GRID_START` n'est PAS levée**, faute d'avoir pu l'observer. Le motif est
|
||||
> **inobservable sur le banc** au 2026-08-30 : les deux bornes sont déclarées dans
|
||||
> `GetLoadConfig` (V2C Trydan, Simulated wallbox) mais **absentes de `loads[]`** — hors
|
||||
> arbitrage, aucun véhicule branché. La branche de `surplusShareW` tient tant qu'une sonde n'a
|
||||
> pas vu un `EV_GRID_START` réel et ses deux moitiés tomber dans `budget.allocatedW` et
|
||||
> `draw.committedW`.
|
||||
|
||||
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
|
||||
|
||||
@ -568,12 +568,21 @@ class LoadTelemetryEntry {
|
||||
/// Si le motif est là mais `budgetW` absent, on retombe sur zéro plutôt que sur une
|
||||
/// part devinée — un chiffre faux est pire qu'un chiffre manquant dans un contrôle
|
||||
/// d'identité.
|
||||
/// ⚠️ **L'exception `EV_GRID_START` survit à `+etm30`, et elle est ÉCRITE au contrat**
|
||||
/// (`INTERFACE.md`). Sa contribution au surplus n'est pas `targetW` mais
|
||||
/// `decision.params.budgetW` : le motif partage une allocation entre les deux compteurs
|
||||
/// du budget, donc il viole l'identité `Σ targetW(surplus) == budget.allocatedW`. C'est
|
||||
/// le cas fondateur de R3, **documenté et non résolu** — à traiter comme tel, jamais
|
||||
/// comme une divergence à diagnostiquer, tant que R3 n'est pas livrée.
|
||||
/// ⚠️ **L'exception `EV_GRID_START` est toujours là, et son retrait attend une MESURE.**
|
||||
///
|
||||
/// Sa contribution au surplus n'est pas `targetW` mais `decision.params.budgetW` : le
|
||||
/// motif partage une allocation entre deux compteurs, donc il viole l'identité
|
||||
/// `Σ targetW(surplus) == budget.allocatedW`. C'était le cas fondateur de R3.
|
||||
///
|
||||
/// `+etm31` est censé y mettre fin — la part surplus dans `budget.allocatedW`, la part
|
||||
/// réseau dans le nouveau `draw.committedW`, deux compteurs de même nature. La sonde du
|
||||
/// 2026-08-30 confirme `+etm31` posé et `draw.committedW` publié, **mais n'a pas pu voir
|
||||
/// le motif** : les deux bornes du banc sont déclarées et absentes de `loads[]` (hors
|
||||
/// arbitrage, rien de branché), donc `EV_GRID_START` y est structurellement impossible.
|
||||
///
|
||||
/// **Cette branche tient jusqu'à l'observation d'un `EV_GRID_START` réel.** Retirer sur
|
||||
/// la foi de l'annonce ferait exactement ce que la mesure a déjà démenti une fois cette
|
||||
/// semaine.
|
||||
double get surplusShareW {
|
||||
// L'exception passe avant tout : elle vaut pour les deux formes.
|
||||
if (decision.code == 'EV_GRID_START' && !isSurplusFunded) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user