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:
parent
f2a96a0193
commit
2a584de913
19
AGENTS.md
19
AGENTS.md
@ -862,6 +862,25 @@ aucune, la décision est une intention, et elle se périmera à la vitesse du co
|
||||
> d'exploiter une valeur de retour qu'aucun code n'exploitait, **l'épingler d'abord par un
|
||||
> test** — le premier appelant est aussi le premier vérificateur.
|
||||
|
||||
> **Un troisième mode d'érosion, et il est le SYMÉTRIQUE des deux autres (2026-08-31).** Le
|
||||
> garde-fou dit « une règle que rien ne rejoue se périme ». Voici l'inverse : **une règle rendue
|
||||
> IMMORTELLE par sa propre garde.**
|
||||
>
|
||||
> Cas d'école, `draw.authorisedW`. Le champ a été refusé parce qu'il aurait affiché « un plafond
|
||||
> de soutirage qui n'existe pas » — motif juste. Il a été défendu en prose à trois endroits, puis
|
||||
> épinglé par un test qui casse si on l'ajoute. Puis le lot délestage a **créé** le plafond. Le
|
||||
> motif était tombé ; la formulation, elle, a survécu — protégée par un test qui, lui, ne savait
|
||||
> pas que le monde avait changé.
|
||||
>
|
||||
> **La parade est déjà pratiquée ailleurs dans ce dépôt** : le commentaire d'un test d'invariant
|
||||
> doit dire **à quelle condition il devient faux**. Ceux qui portent « si ça casse, ce n'est pas
|
||||
> le test qu'il faut corriger » ont bien vieilli, parce qu'ils nomment l'intention. Celui-là
|
||||
> disait ce qu'il interdisait, jamais **à quel moment il aurait dû mourir**.
|
||||
>
|
||||
> **Règle pratique** : quand un test fige une ABSENCE, son commentaire écrit la condition de
|
||||
> levée. « Ce champ reste absent **tant que** rien ne le mesure » se relit et se lève ; « ce
|
||||
> champ ne doit pas exister » se relit et s'obéit.
|
||||
|
||||
> **Fait de méthode, relevé le 2026-08-30** : la règle d'ECS-415 était **déjà écrite**, dans le
|
||||
> commentaire de la branche voisine du même fichier, **à trois lignes** de la branche fautive
|
||||
> (« ce retour était MUET, si bien que "état déjà bon" ne se distinguait pas de "action jamais
|
||||
|
||||
@ -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.
|
||||
|
||||
---
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user