diff --git a/docs/DESIGN_10.md b/docs/DESIGN_10.md index c740e2f..91b89cb 100644 --- a/docs/DESIGN_10.md +++ b/docs/DESIGN_10.md @@ -486,30 +486,56 @@ Trois formes possibles, et elles ne se valent pas : | **Étalement uniforme** | `reste / temps restant` | simple, vérifiable, mais ignore le tarif et le soleil à venir | | **Au plus tard** | ne rien acheter tant que le surplus peut encore suffire | optimal, mais suppose une **prévision** — hors modèle | -**Recommandation : l'étalement uniforme**, pour la même raison que `LM-1008` a fait de la cible -de confort un **comparateur** plutôt qu'un dosage : ce qui manque n'est pas la formule, c'est le -modèle qui la rendrait honnête. Un étalement se lit, se teste, et ne prétend rien prévoir. Le -« au plus tard » viendra avec la prévision, pas avant. +**TRANCHÉ (2026-08-31) : l'étalement uniforme**, pour la même raison que `LM-1008` a fait de la +cible de confort un **comparateur** plutôt qu'un dosage : ce qui manque n'est pas la formule, +c'est le modèle qui la rendrait honnête. Un étalement se lit, se teste, et ne prétend rien +prévoir. Le « au plus tard » viendra avec la prévision, pas avant. + +**Trois choses s'écrivent AVEC lui, et aucune n'est un détail :** + +**(a) Recalculé à CHAQUE cycle, jamais figé au départ.** Une cadence calculée une fois au +branchement ne rattrape pas : après une heure sans surplus, elle reste à la cadence initiale et +**manque l'échéance** en ayant l'air de travailler. L'étalement est un rapport entre ce qui +reste à livrer et le temps qui reste — les deux bougent, donc il se relit. + +**(b) Il se DURCIT à l'approche, mécaniquement, et cela doit être DIT.** 2 kWh restants font 2 kW +à une heure de l'échéance et **12 kW à dix minutes**. La fenêtre où l'achat devient massif +n'arrive pas progressivement : elle arrive **d'un coup**. Sans que le motif le nomme, un client +verra sa facture grimper à 6 h du matin sans comprendre — et il aura raison de chercher une +panne. C'est donc le **motif publié** qui porte la cadence et le temps restant, pas seulement les +watts : la même doctrine que partout ici — **publier le régime, ne jamais le laisser déduire.** + +**(c) Un POINT DE NON-RETOUR explicite**, comme la maquette batterie le demandait : passé une +heure limite, on achète ce qu'il faut. Sans lui, l'étalement peut théoriquement tendre vers +l'infini sans jamais décider — et un seuil nommé se discute, là où une asymptote se subit. **11.2 — Publie-t-on `draw.authorisedW` et `remainingW` maintenant ?** Le refus tenait à ce qu'ils n'existaient pas. Ils existent. Mais `remainingW` a une subtilité : sous la réserve batterie, `LM-1203-b` annule le budget de surplus **sans annuler l'autorisation de soutirage** — donc `draw.remainingW` reste non nul quand `budget.remainingW` est à zéro, et c'est **juste**. Il faut le dire, sinon un client conclura à une incohérence. -**Recommandation : oui aux quatre**, et le test qui les interdit se met à jour en même temps — -c'est un changement de contrat assumé, pas une régression. +**TRANCHÉ (2026-08-31) : oui aux quatre**, et le test qui les interdit se met à jour en même +temps — changement de contrat assumé, pas régression. Son nouveau commentaire dira **à quelle +condition il devient faux**, ce que l'ancien ne disait pas (cf. `AGENTS.md`, troisième mode +d'érosion). + +**Et la subtilité s'écrit EN TOUTES LETTRES DANS LE CONTRAT, pas en note de bas de page :** +sous la réserve batterie, **`draw.remainingW` reste non nul pendant que `budget.remainingW` est à +zéro.** C'est `LM-1203-b` vue depuis la frontière — la réserve annule le **surplus**, jamais +l'**autorisation de soutirage**. Un client y verra une incohérence, et il aura raison de la +signaler si personne ne l'a dite. **11.3 — La passe éco achète-t-elle au réseau par DÉFAUT ?** `ECO_FLOOR_GRID` dit « ce plancher est servi en achetant ». Mais faut-il acheter dès que le surplus manque, ou seulement quand l'échéance est menacée ? Avec l'étalement uniforme la question se dissout : on achète ce que l'étalement réclame **et rien de plus**, donc jamais « par défaut » -— toujours parce que le temps restant l'exige. **Recommandation : pas de décision séparée**, elle +— toujours parce que le temps restant l'exige. **TRANCHÉ : dissoute — pas de décision séparée**, elle est absorbée par 11.1. **11.4 — Que devient le recrédit anti-clignotement avec deux passes ?** `LM-1004` fixe qu'il est attribué **une seule fois**. Reste à dire **où** : à la première passe où la charge apparaît. Une charge à plancher éco le reçoit donc en passe 1, une charge sans -obligation en passe 2. **Recommandation : un champ explicite dans la cible** (`recreditAttribue`) +obligation en passe 2. **TRANCHÉ : un champ explicite dans la cible** (`recreditAttribue`) plutôt qu'une discipline — la discipline ne se teste pas, le champ si. ---