docs(AGENTS): une obligation qui change de maison avec l'appelant se perd

Classe de défaut, nommée en découpant le lot prévision PV. Certaines obligations
ne sont pas attachées à une DONNÉE mais à l'acte de l'aller chercher —
l'attribution CC BY 4.0 suit celui qui appelle. Déplacer l'appel déplace donc
l'obligation, et si le dépôt d'arrivée ne la porte pas, elle disparaît sans que
personne ne l'ait retirée.

Ce qui rend la classe dangereuse : le déplacement lui-même est invisible. On
discute d'un découpage de responsabilités sur des arguments d'architecture, et
l'obligation voyage en silence dans les bagages. Aucun test, aucune revue de
code, et le manquement se constate dans un dépôt PUBLIÉ.

La question à poser à chaque déplacement : cet acte porte-t-il une obligation,
et le dépôt d'arrivée l'écrit-il déjà ? Deux issues — écrite à l'arrivée, ou le
déplacement n'a pas lieu. Pas de troisième branche où l'on s'en souviendra.

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-09-08 16:49:55 +02:00
parent 002ecc639b
commit 0b8264ab04

View File

@ -869,6 +869,33 @@ Règles absolues :
absent = aucun cycle ; `budget` absent = planification suspendue. Un zéro publié se lirait
« exécuté, rien à faire ».
## UNE OBLIGATION QUI CHANGE DE MAISON AVEC L'APPELANT SE PERD
**Classe de défaut, pas incident** — nommée le 2026-09-08 en découpant le lot prévision PV.
Certaines obligations ne sont pas attachées à une **donnée**, mais à l'acte de **l'aller
chercher** : l'attribution CC BY 4.0 d'une API suit **celui qui appelle**. Déplacer l'appel d'un
dépôt à un autre déplace donc l'obligation — et si le dépôt d'arrivée ne la porte pas déjà, elle
**disparaît sans que personne ne l'ait retirée**.
Ce qui rend la classe dangereuse : **le déplacement lui-même est invisible**. On discute d'un
découpage de responsabilités, on tranche sur des arguments d'architecture — couplage, cadence,
mode dégradé — et l'obligation voyage en silence dans les bagages. Aucun test ne la vérifie,
aucune revue de code ne la voit, et le manquement se constate dans un dépôt **publié**.
Même famille : les licences des dépendances, les mentions de brevet, les conditions d'usage
d'une API, et toute condition attachée à un **acte** plutôt qu'à un **fichier**.
> **La question à poser à chaque déplacement de responsabilité** : *cet acte porte-t-il une
> obligation, et le dépôt d'arrivée l'écrit-il déjà ?* Deux issues seulement — elle est écrite à
> l'arrivée, ou le déplacement n'a pas lieu. **Il n'y a pas de troisième branche où l'on s'en
> souviendra plus tard.**
*(Cas fondateur : faire appeler l'API Open-Meteo par `ems` aurait fait atterrir l'attribution
dans un dépôt GPL publié qui ne l'écrit nulle part. Le découpage retenu — l'appel reste chez
l'intégration — fait **disparaître** le problème au lieu de le gérer, ce qui est toujours la
meilleure des deux façons de le fermer.)*
## `setChargingInfo()` DÉCLENCHE UN CYCLE — donc ce qui l'entoure a un ordre
**`SmartChargingManager::setChargingInfo()` appelle `update()` avant de rendre la main**