Repository navigation
CI : 8 suites scripts/**/tests/ (649 tests) ne sont exécutées par aucun workflow — les câbler dans la jambe pytest de scripts-tests.yml #22735
Description
Grain de suite ouvert depuis la réserve de revue posée sur la PR #22719 (26/10/2026, 15:09Z) : le corpus Sudoku y est certifie par un test d'invariant, mais scripts/sudoku/tests/ n'est exécutée par aucun workflow — le test qui refute la hiérarchie de difficulté n'est rejoué par personne automatiquement.
Sans parent : grain de suivi d'infrastructure CI (la réserve porte sur le câblage, pas sur le contenu de la PR #22719, dont le corps Assume honnêtement l'absence de câblage).
Constat mesuré
Sur main au 2026-10-26, huit suites de tests existent sur le disque sous scripts/**/tests/ et ne sont exécutées par aucun workflow :
| Suite | fichiers de test | tests |
|---|---|---|
scripts/datasets/tests |
4 | 72 |
scripts/genai-stack/tests |
5 | 200 |
scripts/hashlife/tests |
8 | 152 |
scripts/i18n/tests |
1 | 50 |
scripts/qc-mcp-lite/tests |
1 | 58 |
scripts/smartcontracts/tests |
1 | 26 |
scripts/sudoku/tests |
3 | 60 |
scripts/validation/tests |
1 | 31 |
| total | 24 | 649 |
Elles sont absentes des deux points d'entrée de la CI :
pytest.ini→testpaths(13 entrées ; aucune de ces huit) ;- la commande
pytestde la jambeScripts & Notebook-Tools Testsde.github/workflows/scripts-tests.yml(13 suites ; aucune de ces huit).
grep -rn "<suite>" .github/workflows/ ne renvoie rien pour les huit : aucun autre workflow ne les collecte non plus.
Les comptes ci-dessus sont mesurés sur
mainau 2026-10-26 (avant la PR #22719, qui ajoute 22 tests àscripts/sudoku/tests— soit 82 pour cette suite).
Pourquoi c'est un défaut, pas une préférence
Une suite verte en local et jamais rejouée automatiquement vit comme le test_supervise_guards.sh de #22021 : elle certifie une propriété au moment où elle est écrite, et plus jamais. Le test d'invariant de hiérarchie du corpus Sudoku (scripts/sudoku/tests/test_core_corpus.py, ajouté par la PR #22719) est de cette famille : sans câblage, il ne refute rien en automatique — le défaut qu'il est censé traquer redeviendrait invisible.
La mesure « 82 passed en local » de la PR est donc une preuve de répétabilité, pas de protection : personne ne rejouera ce test sans intervention.
Périmètre proposé
- Câbler la jambe pytest de
scripts-tests.yml: une entrée par suite hermétique. Les dépendancesnumpy/pandas/scipysont déjà installées dans ce job (lignepip install numpy pandas scipy "pyarrow>=26" pytest) — le cassudokuest donc « ~1 ligne », comme l'annonce de la réserve le suggère. - Traiter les suites non hermétiques séparément :
scripts/genai-stack/tests(Docker) etscripts/qc-mcp-lite/tests(MCP) demanderont soit une jambe dédiée, soit un marqueur d'exclusion explicite ;scripts/hashlife/testsa un profil CPU long — à mesurer avant de l'ajouter à une jambe partagée. - Faire converger
pytest.iniet le workflow : aujourd'hui les deux listes divergent (letestpathsporteMyIA.AI.Notebooks/ML/DataScienceWithAgents/01-Python-For-Data-Science/tests, absent de la commande pytest du workflow). Le déclencheurscripts/**doit lancer la même collection que lepytest.ini— sinon le catalogue des suites et son exécution divergent à chaque ajout.
Critères d'acceptation
- Chaque suite câblée est verte sur le runner de la jambe (log de la CI à l'appui, pas un « vert local »).
pytest.ini'stestpathset la commandepytestdu workflow convergent — vérifiable par un organe, pas à l'œil.- Le test d'invariant du corpus Sudoku apparaît dans le log de la jambe : il est rejoué par la CI, pas seulement par une main.
- Un contrôle positif : un contrôle qui ne peut pas rougir n'est pas un contrôle — voir le point 2 de la liste de contrôle ci-dessous.
Note de méthode (l lessons du repo)
Un « absent des testpaths » se mesure ; il ne se devine pas. La détection doit être un organe (un script qui compare les suites présentes sur le disque aux suites effectivement invoquées par la CI) et non une relecture de workflow — c'est exactement la leçon de scripts/ci/check_output_collapse.py et de ses voisins : un défaut d'inventaire invisible dans un workflow de 600 lignes ne se voit pas à la lecture, il se voit par confrontation de deux listes.
Créé par myia-po-2028:CoursIA-2 le 2026-10-26.
Activity
jsboige commentedon Oct 26, 2026
[CLAIMED] lane myia-po-2028:CoursIA-2 -- paths: .github/workflows/scripts-tests.yml, pytest.ini, scripts/ci/check_ci_test_suites.py -- grain MED/guard : cabler les 8 suites pytest de scripts/**/tests/ dans la CI et poser l'organe de confrontation disque/ci
jsboige commentedon Oct 26, 2026
[CLAIMED-AMEND] lane myia-po-2028:CoursIA-2 -- paths: .github/workflows/scripts-tests.yml, pytest.ini, scripts/ci/check_ci_test_suites.py, scripts/ci/ci_test_suites.json, scripts/ci/tests/test_check_ci_test_suites.py, docs/reference/scripts-reference.md -- grain MED/guard : perimetre complet du cablage des 8 suites pytest de scripts/**/tests/
jsboige commentedon Oct 26, 2026
[DELIVERED] lane myia-po-2028:CoursIA-2 -- PR #22796
Fix(ci,#22735): desambiguise les noms de modules pytest (collision te…
Fix(ci,#22735): la suite qc-mcp-lite part dans un job isole (SDK MCP …