État vérifié
cli/auteur.py itère sur discover_labs(), donc sur les labs déjà chargés
avec succès. Un lab.yaml qui lève au parsing n'y figure pas : il traverse la
validation sans un mot.
CatalogScan existe pourtant depuis un moment et conserve les labs rejetés
avec leur raison — mais validate-structure ne l'utilise pas (grep négatif
sur illisibles et CatalogScan dans cli/auteur.py).
D'où la règle que la documentation auteur doit enseigner aujourd'hui :
dsoxlab list-labs d'abord, validate-structure ensuite.
C'est une règle qu'un utilisateur ne devrait pas avoir à connaître. Le validateur
devrait être l'outil qui dit la vérité sur le catalogue, pas celui qui suppose
qu'elle a déjà été établie.
Ce que ça change concrètement
Un auteur dont le lab.yaml a une faute de syntaxe obtient
« ✔ Tous les labs sont valides » — sur un catalogue amputé de ce lab. C'est
exactement le motif que le lot 0.1.84 a corrigé partout ailleurs : un contrôle
qui n'a pas pu regarder ne conclut pas au vert.
Critères d'acceptation
Suite naturelle
CatalogScan gagnerait à devenir le résultat standard de la découverte :
discover_labs() a 6 appelants, et chacun voit uniquement les survivants sans
que rien ne le lui rappelle. À traiter séparément, sans casser l'API existante.
Relevé en confrontant au code une analyse externe du dépôt, le 2026-08-24.
État vérifié
cli/auteur.pyitère surdiscover_labs(), donc sur les labs déjà chargésavec succès. Un
lab.yamlqui lève au parsing n'y figure pas : il traverse lavalidation sans un mot.
CatalogScanexiste pourtant depuis un moment et conserve les labs rejetésavec leur raison — mais
validate-structurene l'utilise pas (grep négatifsur
illisiblesetCatalogScandanscli/auteur.py).D'où la règle que la documentation auteur doit enseigner aujourd'hui :
C'est une règle qu'un utilisateur ne devrait pas avoir à connaître. Le validateur
devrait être l'outil qui dit la vérité sur le catalogue, pas celui qui suppose
qu'elle a déjà été établie.
Ce que ça change concrètement
Un auteur dont le
lab.yamla une faute de syntaxe obtient« ✔ Tous les labs sont valides » — sur un catalogue amputé de ce lab. C'est
exactement le motif que le lot 0.1.84 a corrigé partout ailleurs : un contrôle
qui n'a pas pu regarder ne conclut pas au vert.
Critères d'acceptation
validate-structurerapporte leslab.yamlprésents sur disque mais nonchargeables, avec la raison, et sort en échec.
meta.yml: sections[].labs[]mais absent du disque estsignalé lui aussi — c'est l'autre moitié du même angle mort.
list-labsd'abord ».schema_versiontrop récent, lab déclaré et absent.
Suite naturelle
CatalogScangagnerait à devenir le résultat standard de la découverte :discover_labs()a 6 appelants, et chacun voit uniquement les survivants sansque rien ne le lui rappelle. À traiter séparément, sans casser l'API existante.
Relevé en confrontant au code une analyse externe du dépôt, le 2026-08-24.