Patrick Schurig cf6843d50c docs(spec): spec_ecs 0.5.3 — ECS-413, désactivation en état sûr
Exigence seule, aucune implémentation.

Constat de banc du 2026-08-09 : un SetLoadConfig posant enabled: false sur une
charge alors au palier 3500 W a détruit l'adaptateur en laissant les TROIS RELAIS
FERMÉS. Plus personne ne les commandait ; ils y seraient restés indéfiniment,
juste avant une intervention de câblage.

ECS-413 exige que désactiver une charge — ou la retirer de la configuration —
laisse son matériel dans l'état sûr DÉFINI PAR SON ADAPTATEUR, appliqué AVANT la
destruction de l'adaptateur, l'échelle d'ECS-410 s'appliquant si l'écriture échoue.

L'état sûr est propre à chaque adaptateur, et une formulation « tout couper »
serait fausse : relais ouverts pour RelayRouter, consigne 0 W pour
EtmVariableLoadAdapter, mais ÉTAT 2 pour SgReadyAdapter — jamais le blocage,
conformément à SAFETY.md. Couper une PAC en la bloquant serait une régression de
sécurité, pas une mise en sécurité.

Mécanisme : le chemin d'action normal avec force = true, celui du mode dégradé L2.
Rien de nouveau à inventer.

Périmètre explicitement borné : NE S'APPLIQUE PAS à l'arrêt du plugin ni à un
redémarrage de nymead, où l'état doit être CONSERVÉ — c'est ce qu'ECS-411 relit au
démarrage, et couper l'eau chaude à chaque redémarrage de service serait une
régression. La distinction est intentionnelle : la désactivation est un acte
délibéré de l'opérateur, un redémarrage n'en est pas un.

Test testEcsDisableLeavesSafeState, avec son cas négatif obligatoire : un rebuild
SANS désactivation ne doit pas déclencher la mise en sécurité, sinon ECS-412 est
annulé et chaque changement de rang coupe la charge.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 10:41:53 +02:00
..