2 Commits

Author SHA1 Message Date
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
Patrick Schurig
2ee6807c27 tools: la classe « cadrage » — et « spécifiée seule » veut enfin dire quelque chose
Le premier usage de l'index avait donné 70 règles « spécifiée seule », un nombre
qui ne voulait rien dire : il mélangeait « 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, et la compter comme un trou de couverture
invite à boucher un trou qui n'existe pas.

tools/rules-noncode.txt déclare 22 règles de cadrage, chacune avec son motif :
constats résolus, interdictions, structure du modèle, hors-périmètre, conventions
de nommage, justifications, et un contrat d'affichage client. §10, §14, ECS-5xx
et ECS-6xx n'y sont PAS : ils attendent d'être construits, et c'est ce que
« spécifiée seule » doit continuer de dire.

Résultat : 41 « spécifiée seule » au lieu de 70, dont 27 en territoire non
construit. Restent ~14 règles en territoire livré que rien ne cite — un nombre
qu'on peut lire une par une.

LE GARDE-FOU, éprouvé et non supposé : le générateur CASSE si une règle de
cadrage acquiert une citation de code ou de test. Vérifié en ajoutant une
citation de LM-202 dans un en-tête — RC=1, la règle nommée, le fichier et la
ligne donnés. Même mécanique que le refus de redéfinir un numéro retiré.

Et la réparation est TOUJOURS la même : retirer la ligne. Deux cas la
déclenchent — la règle a été implémentée depuis, ou elle est citée pour expliquer
une absence — et dans les deux « citée par le code » est plus vrai que
« cadrage ». La liste ne peut donc que RÉTRÉCIR : elle ne sait pas mentir dans le
sens qui compte. C'est ce qui rend une liste tenue à la main acceptable ici.

ci-quality 3/3.

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