Skip to content

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

Open

Description

@jsboige

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 pytest de la jambe Scripts & Notebook-Tools Tests de .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 main au 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é

  1. Câbler la jambe pytest de scripts-tests.yml : une entrée par suite hermétique. Les dépendances numpy / pandas / scipy sont déjà installées dans ce job (ligne pip install numpy pandas scipy "pyarrow>=26" pytest) — le cas sudoku est donc « ~1 ligne », comme l'annonce de la réserve le suggère.
  2. Traiter les suites non hermétiques séparément : scripts/genai-stack/tests (Docker) et scripts/qc-mcp-lite/tests (MCP) demanderont soit une jambe dédiée, soit un marqueur d'exclusion explicite ; scripts/hashlife/tests a un profil CPU long — à mesurer avant de l'ajouter à une jambe partagée.
  3. Faire converger pytest.ini et le workflow : aujourd'hui les deux listes divergent (le testpaths porte MyIA.AI.Notebooks/ML/DataScienceWithAgents/01-Python-For-Data-Science/tests, absent de la commande pytest du workflow). Le déclencheur scripts/** doit lancer la même collection que le pytest.ini — sinon le catalogue des suites et son exécution divergent à chaque ajout.

Critères d'acceptation

  1. Chaque suite câblée est verte sur le runner de la jambe (log de la CI à l'appui, pas un « vert local »).
  2. pytest.ini's testpaths et la commande pytest du workflow convergent — vérifiable par un organe, pas à l'œil.
  3. 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.
  4. 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

  1. jsboige commented on Oct 26, 2026

    @jsboige
    OwnerAuthor

    [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

  2. jsboige commented on Oct 26, 2026

    @jsboige
    OwnerAuthor

    [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/

  3. jsboige commented on Oct 26, 2026

    @jsboige
    OwnerAuthor

    [DELIVERED] lane myia-po-2028:CoursIA-2 -- PR #22796

  4. added 2 commits that reference this issue on Oct 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions