docs: les quatre décisions du §10, et un troisième mode d'érosion

11.1 étalement uniforme, avec les trois choses qui s'écrivent avec lui :
recalculé à chaque cycle (une cadence figée ne rattrape pas et manque
l'échéance en ayant l'air de travailler) ; il se durcit à l'approche —
2 kWh font 2 kW à une heure et 12 kW à dix minutes, donc la fenêtre d'achat
massif arrive d'un coup et c'est le MOTIF qui doit le dire ; et un point de
non-retour explicite, parce qu'un seuil nommé se discute là où une asymptote
se subit.

11.2 oui aux quatre champs, et la subtilité entre dans le CONTRAT : sous la
réserve batterie, draw.remainingW reste non nul pendant que budget.remainingW
est à zéro. LM-1203-b vue depuis la frontière — la réserve annule le surplus,
jamais l'autorisation de soutirage.

11.3 dissoute, 11.4 par champ explicite.

Et un troisième mode d'érosion dans AGENTS.md, symétrique des deux autres :
non pas une règle qui se périme faute d'être exécutable, mais une règle rendue
IMMORTELLE par sa propre garde. draw.authorisedW a été refusé pour un motif
juste, épinglé par un test, puis le motif est tombé — et la formulation a
survécu, protégée par un test qui ne savait pas que le monde avait changé.
Parade déjà pratiquée ici : quand un test fige une ABSENCE, son commentaire
écrit la condition de levée. « Absent tant que rien ne le mesure » se relit et
se lève ; « ne doit pas exister » se relit et s'obéit.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015F7G5VeaPVSMeVNjiGj36p
This commit is contained in:
Patrick Schurig 2026-08-30 22:38:09 +02:00
parent d6a2eb20ee
commit 1c04ed36ae

View File

@ -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 | | **É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 | | **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 **TRANCHÉ (2026-08-31) : l'étalement uniforme**, pour la même raison que `LM-1008` a fait de la
de confort un **comparateur** plutôt qu'un dosage : ce qui manque n'est pas la formule, c'est le cible de confort un **comparateur** plutôt qu'un dosage : ce qui manque n'est pas la formule,
modèle qui la rendrait honnête. Un étalement se lit, se teste, et ne prétend rien prévoir. Le c'est le modèle qui la rendrait honnête. Un étalement se lit, se teste, et ne prétend rien
« au plus tard » viendra avec la prévision, pas avant. 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 ?** **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é : 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 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 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. 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 — **TRANCHÉ (2026-08-31) : oui aux quatre**, et le test qui les interdit se met à jour en même
c'est un changement de contrat assumé, pas une régression. 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 ?** **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 `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 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 » 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. est absorbée par 11.1.
**11.4 — Que devient le recrédit anti-clignotement avec deux passes ?** **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 `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 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. plutôt qu'une discipline — la discipline ne se teste pas, le champ si.
--- ---