Set-OPS-Public/scripts/tests
Mathieu Benoit 1d07a6cf80 runbooks : la recette tranche, le registre ne se compare plus a lui-meme
Un outil tiers veut n'offrir de ce moteur que ce qui n'agit pas. Le seul champ
qui le lui dise est `nature`. Il fallait donc qu'il ne mente pas, et il mentait
dans les deux sens.

`filiation` → `emancipation-prouver` se declarait « mesure » en portant
`fixes: {CONFIRMER: "true"}`. La cible tranche elle-meme — son refus dit
« cette preuve COUPE l'amont quelques secondes pour mesurer ». Un constat
rapporte ne rend pas inerte le geste qui l'obtient : l'etape passe a
`ecriture`.

Dans l'autre sens, trois cibles — flotte-creer, deployer-tout, reconstruire —
refusent sans confirmation sans que le registre le declare : un assistant les
lancait telles quelles, et sortait en 2. Comparer `nature` a `fixes` ne les
voyait pas, car c'est comparer deux champs ecrits par la meme main. `verifier`
lit desormais la RECETTE, qui ne ment pas.

Effet de bord traite : une etape qui agit barre celles qui la suivent dans la
console, alors qu'une « mesure » se debloque d'office. `depots-perimes` est
marque `facultative` — il nettoie ce que la filiation a laisse, il n'en est pas
le prealable.

`lister --json` rend le registre assemble d'un bloc, et le drapeau est refuse
hors de son action : rendre la prose humaine a qui demande du JSON est pire
qu'un refus. L'affichage humain ne bouge pas, et la preuve mesure ce qu'il
PORTE — un identifiant, un libelle, les marques de nature — et non seulement
qu'il n'est pas du JSON.

Valide : `verifier` a 0 ecart, test_runbooks.py 25/25, et sept des neuf
epreuves de `make test` ; test_raser et test_raser_resultat echouent sur
« Aucune instance montee », avant comme apres. Mesure : 127 etapes, dont 84 de
nature « mesure » — la surface qui n'agit pas.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RbXr5vv4Rat6PCPGG9GoG8
2026-09-25 17:54:03 -04:00
..
test_adressage_derive.py insemination : declarer le lien, l'emettre d'un seul cote, et un test rouge 2026-08-28 13:09:28 -04:00
test_devis_placement.py placement : le devis validait un pont que la flotte n'utilise pas 2026-08-20 21:39:26 -04:00
test_ecriture_atomique.py plan : l ecriture des registres devient atomique — tout, ou rien 2026-09-08 14:57:57 -04:00
test_ecriture_plan.py plan : sauvegarder n emportait plus quarante lignes de commentaire 2026-09-08 17:54:49 -04:00
test_gui_intrants.py resolveur : un par tenant, et non plus un par machine 2026-08-24 16:59:34 -04:00
test_inventory_host.py clonage : le plancher se perdait au troisieme maillon 2026-09-13 20:10:24 -04:00
test_nomenclature_ecriture.py GUI : la vue Nomenclature, et deux fautes que mes bancs ne voyaient pas 2026-09-08 17:08:45 -04:00
test_portee_console.py la console mesure le pouvoir sur la voute, pas sur la carte 2026-09-20 20:12:18 -04:00
test_raser.py portabilite : monter un SECOND tenant revele trois defauts invisibles 2026-08-10 11:18:14 -04:00
test_raser_resultat.py raser : lire le RESULTAT de la destruction, pas son accuse de reception 2026-08-10 22:47:28 -04:00
test_rendu_gui.py console : un tronc, deux branches — assembler deux fois est ce qui fait deriver 2026-09-20 21:55:49 -04:00
test_runbooks.py runbooks : la recette tranche, le registre ne se compare plus a lui-meme 2026-09-25 17:54:03 -04:00
test_sonder.py sonder : rapporter ce qui distingue, au lieu d un echec 2026-08-28 17:02:20 -04:00