Patrick Schurig 3ac61e9b66 docs(règles): les 14 en territoire livré, lues une par une
Sept étaient des trous de classification ou de citation, sept sont réelles.

TROIS CITATIONS AJOUTÉES, portées par du code depuis longtemps :
  LM-400    une machine physique est UNE charge → c'est l'exclusivité d'un Thing
            dans validateSet() qui l'empêche d'être déclarée deux fois
  LM-301-b  « une charge utile, une branche de fabrique » vaut pour CONSTRUIRE,
            pas pour ALIMENTER en actions → le repli L2 lit supportedKinds
  LM-600    les codes d'adapter portent le nom du MÉCANISME, jamais du domaine

QUATRE PASSÉES EN CADRAGE : ECS-004/005 (invariant tenu par ABSENCE — aucun
identifiant de relais ne franchit la frontière, il n'y a rien à pointer), LM-404
(hors périmètre déclaré), LM-501 (justification de NE PAS bâtir les groupes tant
que la liste plate suffit).

RESTENT SEPT, et ce sont de vraies attentes : ECS-111, ECS-302, ECS-305, ECS-307
(les trois dernières déjà listées en « ce qui reste à éprouver », §9 de
spec_ecs.md), LM-401/LM-402 (facettes, couche non bâtie), LM-502 (plafond de
groupe, conditionnel).

ECS-111 mérite d'être remonté : ce n'est pas une attente, c'est un défaut vivant,
et sa conséquence dépasse ce que la spec en dit. Détail dans le rendu de session.

Bilan de l'index après cette passe : 34 « spécifiée seule » (dont 27 en
territoire non construit), 26 cadrage, 24 citées par le code, 17 par un test, 12
vérifiées sur machine. Le nombre de départ était 70.

Aucun changement de comportement. ci-quality 3/3, build 0/0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015F7G5VeaPVSMeVNjiGj36p
2026-08-29 12:57:53 +02:00

69 lines
3.8 KiB
Plaintext

# Règles de CADRAGE — celles dont on n'ATTEND aucun porteur de code.
#
# POURQUOI CETTE LISTE. Sans elle, « spécifiée seule » est un nombre qui ne veut rien
# dire : il mélange « pas encore construite » avec « rien ne pourra jamais la citer ».
# Une règle NÉGATIVE — « un thermostat n'est PAS une charge », « aucune ThingClass n'est
# exposée » — s'applique par ABSENCE de code : il n'existe aucune ligne à pointer. La
# compter comme un trou de couverture invite à boucher un trou qui n'existe pas.
#
# CE QUE LA LISTE NE DIT PAS. Elle ne dit pas « aucun code ne peut la citer », mais
# « on n'attend pas de porteur ». La nuance décide du garde-fou ci-dessous.
#
# ── GARDE-FOU : le générateur CASSE si une règle d'ici acquiert une citation de code ──
#
# C'est ce qui empêche une liste tenue à la main de dériver — même mécanique que le refus
# de redéfinir un numéro retiré. Deux cas la déclenchent, et la réparation est la même :
#
# · la règle a été implémentée depuis → la classification est PÉRIMÉE ;
# · la règle est citée pour expliquer une ABSENCE (« LM-202 : un thermostat n'est pas
# une charge, donc rien ici ») → la citation est légitime, et la règle a désormais
# un porteur lisible.
#
# Dans les deux cas : RETIRER la ligne. L'index la comptera « citée par le code », ce qui
# est vrai et plus utile que « cadrage ». La liste ne peut donc que RÉTRÉCIR — elle ne
# sait pas mentir dans le sens qui compte.
#
# NE PAS y mettre une règle simplement « pas encore faite ». §10, §14, ECS-5xx et ECS-6xx
# n'y sont pas : ils sont en attente de construction, et c'est ce que « spécifiée seule »
# doit continuer de dire.
#
# format : IDENTIFIANT<TAB>motif
# — Cadre du chantier ECS : constats résolus, frontières tenues par absence, hors périmètre
ECS-001 constat résolu, négatif — reconfirmé contre le libnymea du build
ECS-002 négatif : ni integration-plugin, ni dépôt, ni ThingClass
ECS-003 découpage documentaire, pas une exigence de comportement
ECS-007 interdiction — aucune couche ECS ne décide de sa part du surplus
ECS-008 contrat d'un AUTRE produit (Héos consomme, l'ECS publie)
ECS-203 CLOS : aucune ThingClass exposée, donc aucune interface à implémenter
# — §1 : ce que le modèle EST, avant tout mécanisme
LM-100 structure du modèle — deux couches indépendantes
LM-101 structure du modèle — une charge choisit un domaine et un mécanisme
LM-102 négatif : aucune des deux couches ne répartit de budget
# — Négatifs et hors moule
LM-202 négatif : un thermostat de zone n'est PAS une charge
LM-403 négatif : le mode est une sortie, jamais une entrée
LM-405 hors périmètre : la décomposition en facettes vit côté ems
LM-406 négatif : sans chauffe-eau distinct, il n'y a pas de charge à créer
LM-700 hors moule : la batterie n'est pas une charge à rang (renvoi §14)
LM-701 hors moule : le smarthome ne se module pas en watts
# — §5/§6 : définitions et conventions de nommage
LM-500 définition — un groupe est une clé de tri, jamais un détenteur de budget
LM-503 définition — ce qu'un rang n'est pas
LM-504 convention de nommage du domaine hvac
LM-601 souhait de renommage, pas une exigence
# — Justifications et contrats clients
LM-1204 justification d'un ordre de travail, pas une exigence
LM-1205 constat — la machinerie d'échéance existe déjà
LM-1209-d contrat d'AFFICHAGE côté client ; le moteur n'a rien à porter
# — Ajouts du 2026-08-29, après lecture des 14 règles en territoire livré
ECS-004 invariant tenu par ABSENCE — aucun identifiant de relais ne franchit la frontière
ECS-005 idem ECS-004 (énoncé conjoint)
LM-404 hors périmètre déclaré — biais par consigne, à ne rouvrir que sur besoin
LM-501 justification de NE PAS bâtir les groupes tant que la liste plate suffit