Repository navigation
feat(validate-structure): la doc du moteur recopiée dans un catalogue et devenue fausse se signale ; le squelette renvoie au moteur (#201) - #374
Merged
Conversation
… et devenue fausse se signale ; le squelette renvoie au moteur (#201) Un inventaire du 2026-11-14 a trouvé 50 fichiers faux dans 21 catalogues, nés pour la plupart du squelette de `new catalog`. - le README généré ne recopie plus le contrat ni le cycle de vie d'un lab : une section « Le moteur, documenté là où il vit » renvoie à contract-v1, commands, learner et catalog-author ; le commentaire du workflow CI généré ne dit plus que validate-structure ne voit que ce qui a chargé ; - nouvelle famille stale_doc dans validate-structure : des phrases connues pour être fausses, dans les Markdown versionnés hors labs/ et solution/, CHANGELOG exclus. Mesuré : 38 fichiers dans 18 catalogues, aucun faux positif ; - la doc du moteur corrigée : lab.<lang>.yaml surcharge aussi les libellés de critères, et dans machine-output `status` est l'état du lab, la joignabilité étant `infra status`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
13 of 19 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Engine part of #201. An inventory of the catalogues, run read-only on 2026-11-14, found the following:
labs/;Most of these were born from the
new catalogskeleton, which copied the contract and a lab's lifecycle on the day the catalogue was created.The skeleton links instead of copying. The generated README section "The declarative contract" and "The lab lifecycle" become one section, "The engine, documented where it lives", in EN and FR. It links to
contract-v1,commands,learnerandcatalog-author. The generated CI workflow comment no longer says thatvalidate-structureonly sees what loaded, which has been false since 0.1.97.New
validate-structurefamily:stale_doc. It finds known false sentences in versioned Markdown outsidelabs/andsolution/. CHANGELOGs are excluded, since a dated log may legitimately quote old behaviour. Four rules:doc_perimee_list_labs_avant: "runlist-labsbeforevalidate-structure", or that the validator misses unloadable or missing labs. False since 0.1.97.doc_perimee_status_joignabilite:dsoxlab statuspresented as the host reachability test. That isdsoxlab infra status.doc_perimee_runtime_host: "everyruntime.hostpoints to a host". That field was never read.doc_perimee_fixtures_a_plat: fixtures "copied flat". They keep their declared path since 0.1.37.Measured on every catalogue on disk: 38 files in 18 catalogues, no false positive. The first version of the
runtime_hostrule hit an iam note that states the truth ("runtime.hostdoes not exist"). It was narrowed, and that case is now a test.Two false statements in the engine's own docs are fixed:
lab.<lang>.yamlalso overrides each criterion'slabel, not onlytitleanddescription;docs/machine-output,dsoxlab statusis the state of a lab, while reachability isdsoxlab infra status.validate-structure --json:countsgainsstale_doc(an additive key). The doc said "six families" while there were seven; it now says eight.Merge order matters. Catalogue CIs install the latest engine. As soon as 0.9.3 is published, the 18 catalogues that carry these sentences turn red. The per-catalogue doc PRs (second half of #201) must therefore be merged before the 0.9.3 tag.
Type of change
stale_docfamily)Checklist
Always
ruff check src/dsoxlab tests tests_e2e fuzz scripts: passedmypy src/dsoxlab: no issues in 124 filespytest: 2,300 passed.tests/test_doc_moteur_perimee.py(9 tests) covers each rule, a sentence cut by a line break, a true sentence never reported, the exclusion oflabs/,solution/and CHANGELOGs, and the rule that only versioned files count. It also checks that a brand-newnew catalogscaffold is clean.test_socle_du_catalogue.pynow expects 13 sections and adds a test that the README links to the engine instead of copying it. Both fail on the previous scaffold.pytest tests_e2e: run by CIgenerer-doc.py --verifierandcomplexite.py --verifier: passedsrc/When behavior changes
CHANGELOG.md/CHANGELOG.fr.md:[Unreleased], Changed and Fixed, to ship in 0.9.3When a command or option is added, removed or changed
docs/catalog-author(.fr).md(the coverage test enforces it)Workflows / contract
N/A: no workflow touched;
meta.ymlandlab.yamlare unchanged.🤖 Generated with Claude Code