diff --git a/docs/DESIGN_COMMANDE_PERDUE.md b/docs/DESIGN_COMMANDE_PERDUE.md index 492a364..742d18a 100644 --- a/docs/DESIGN_COMMANDE_PERDUE.md +++ b/docs/DESIGN_COMMANDE_PERDUE.md @@ -345,3 +345,51 @@ une borne hors arbitrage, et des compteurs qui ne mesurent pas. **Précondition pour la prochaine fenêtre** : un compteur RÉEL sur une charge pilotée (`TEST_TERRAIN.md` §12), et une borne effectivement dans le waterfall — à vérifier au journal avant d'ouvrir, pas après. + +--- + +## 8. PROTOCOLE DU RELEVÉ DU 2026-09-08 — écrit avant, comme le critère + +> La voiture revient vers 9 h. Ce qui suit est écrit **avant** de mesurer, pour la même raison que +> le critère de tri du §6 : un protocole rédigé après coup se plie à ce qu'on a vu. + +### Ce qu'on observe, et ce qui serait un résultat + +**1. `progress.regime` de la V2C — première bascule observable sur du réel.** + +`sessionEnergy` est construit par le plugin, donc le régime devrait sortir `measured`. Mais sur un +lien qui perd 40 % de ses trames, il **basculera**. C'est l'observation qui compte le plus, parce +que **la dérogation en dépend entièrement** : sa fin par `measurementLost` se déclenche sur ce +signal, et on ne l'a jamais vu changer ailleurs qu'en test. + +| ce qu'on voit | ce que ça dit | +|---|---| +| `measured` en continu | le lien tient assez pour que la cible soit vérifiable — la dérogation par cible est utilisable | +| bascules `measured` ↔ `unmeasurable` | **le cas nominal** de cette borne : la fin par perte de mesure va se déclencher souvent, et il faudra savoir à quelle fréquence avant de promettre une dérogation par cible | +| `unmeasurable` en continu | la cible en énergie n'est pas servable ici, et seule la durée reste | + +**Aucune de ces trois n'est un échec** — chacune décide de ce qu'on peut promettre. + +**2. `command.divergent` — les premières traces qui passent le critère du §6.** + +Jusqu'ici, aucune trace n'était exploitable : compteurs constants des deux côtés (§7). Avec une +borne qui charge vraiment et un compteur qui suit, le critère est enfin satisfait — +`measurement.source ≠ none` et un compteur qui **a varié**. + +**Regarder d'abord les épisodes COURTS.** Ce sont eux qui décident si l'étape 4 vaut le risque de +rejouer une commande : un écart de trois minutes qui se referme seul ne justifie pas de commander +du matériel sur une consigne ancienne ; un écart qui dure et ne se referme jamais, si. + +> Et se souvenir du biais du journal : `grep -c` compte des **lignes**, pas des transitions +> (`PORTING_STATUS.md`). Ici la ligne `[Divergence] DÉBUT` / `FIN` est émise **aux transitions +> seulement** — c'est le comptage juste, contrairement à `error limit reached`. + +**3. Min+PV lui-même** : palier éco au minimum avec `boundBy: minimum`, palier confort alimenté +par le surplus, et le recrédit visible dans `recreditedW`. Vérifié sur le chauffe-eau le +2026-09-07 ; reste à le voir sur la borne, où le tirage est dix fois plus grand. + +### Ce qui invaliderait le relevé + +- Un redémarrage de `nymead` pendant la fenêtre : la base d'avancement se repose et + `measuredSince` repart. **Ne rien déployer pendant l'observation.** +- Une bascule de fuseau : aucune n'est prévue, et il n'y en aura pas.