Skip to content

Fix(18279): le kernelspec python3 n'est plus une condition de skip - #19738

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/18279-skipif-visibilite
Oct 7, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/18279-skipif-visibilite

Conversation

@jsboige

@jsboige jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner

Grain: MED/guard — lane myia-po-2026:CoursIA — prev: LIGHT/docs #19542

Résumé

Le job Scripts & Notebook-Tools Tests n'enregistre aucun kernelspec python3. Les deux tests d'integration de scripts/tests/test_papermill_meta_strip.py etaient donc sautes en silence sur les runners sans kernel, via un skipif. Consequence mesuree (#18279) : la panne « kernel mort au spawn » n'existait plus que sur le sous-ensemble de machines qui avaient le kernel — machine-specifique en apparence, filtree en realite. C'est ce filtrage qui a fait suivre pendant dix jours un axe de diagnostic .NET alors qu'aucun noyau .NET n'est lance par ces tests.

Deux changements, un seul sujet :

  1. .github/workflows/scripts-tests.yml — pip install ipykernel. Regle F : un environnement se repare, il ne se contourne pas par un skip. Meme convention que nbconvert (feat(notebook_tools): nbconvert render tool — sortie pandoc pour notebooks à output massif #10969) et pyjwt[crypto] (GitHub Apps par lane : les comptes machine sont bridés au tarif anonyme (60 req/h, GraphQL 0) et hors-limite CGU #17437), deja commentes dans ce bloc d'installation.
  2. scripts/tests/test_papermill_meta_strip.py — le skipif est remplace par une garde de visibilite, test_python3_kernelspec_is_registered, qui rougit avec le message d'installation si le kernelspec disparait a nouveau ; les deux tests d'integration perdent leur decorateur et tournent partout.

Validation (relancee apres le dernier commit)

kernelspec present : python -m pytest scripts/tests/test_papermill_meta_strip.py -q
                     -> 7 passed in 5,61 s

kernelspec absent  : PYTHONPATH=<scratch> python -m pytest -p nokernel scripts/tests/test_papermill_meta_strip.py -q
                     (plugin jetable qui vide KernelSpecManager.find_kernel_specs)
                     -> 1 failed, 6 passed
                     AssertionError: kernelspec `python3` non enregistre :
                       pip install ipykernel (#18279 -- ce skip masquait la panne
                       sur les machines sans kernel)

Le second run est le controle negatif : la garde rougit la ou l'ancien skipif disparaissait. Hooks pre-commit verts (gitleaks Passed ; H.3 sans objet — aucun notebook touche).

Portee — ce que cette PR ne fait pas

Risque declare

Les deux tests d'integration vont tourner pour la premiere fois dans l'environnement CI. S'ils meurent au spawn, la jambe rougira : c'est le signal que l'issue demande, mais c'est un rouge de plus avant que le fond soit traite. Le resultat sera mesure sur la CI de cette PR et rapporte, sans interpretation.

Rouge de base — a ne pas confondre avec cette PR

main porte deux journaux d'index 0019 dans scripts/notebook_tools/twin_pairs.d/search-03-informed/ : les 2 organes de garde du registre twin echouent sur main (2 failed, 57 passed en local), et le workflow Scripts & Notebook-Tools Tests est rouge sur main (3 echecs consecutifs sur push : 14:24:35Z, 14:32:43Z, 14:45:14Z). La correction est #19723. Le signal propre de cette PR se lit donc dans le detail du job, sur les noms de tests test_papermill_meta_strip.py — pas dans la conclusion de la jambe.

Part of #18279

🤖 Generated with Claude Code

Le job `Scripts & Notebook-Tools Tests` n'enregistrait aucun kernelspec
`python3` : les deux tests d'integration de test_papermill_meta_strip.py se
sautaient en silence, si bien que la panne « kernel mort au spawn » n'existait
plus que sur les runners qui avaient le kernel. Le defaut paraissait
machine-specifique alors qu'il etait FILTRE — c'est ce filtrage qui a fait
suivre un axe de diagnostic .NET pendant dix jours alors qu'aucun noyau .NET
n'est lance par ces tests.

- job CI : `pip install ipykernel` — regle F : un environnement se repare, il
  ne se contourne pas par un skip (meme convention que nbconvert #10969 et
  pyjwt #17437 dans le meme bloc) ;
- tests : le `skipif` est remplace par `test_python3_kernelspec_is_registered`,
  qui rougit avec le message d'installation si le kernelspec disparait ;
- les deux tests d'integration tournent desormais sans decorateur.

Verifie dans les deux etats : kernelspec present -> 7 passed ; kernelspec
simule absent (plugin jetable) -> le test de visibilite echoue avec le
message, la ou l'ancien skipif disparaissait.

Part of #18279

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19738 (Fix(18279): le kernelspec python3 n'est plus une condition de skip) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou au coordinateur.

@github-actions github-actions Bot added the variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) label Oct 7, 2026
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-po-2026:CoursIA a deja consomme son budget LIGHT du jour (#19542 (merge a 2026-10-07T02:19:55Z)).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour,
toutes categories LIGHT confondues
(guard, doc, refs, ... partagent un seul budget) :
c'est un RATIO, pas un plafond plat. La decision de merge reste au coordinateur.

@github-actions github-actions Bot added the variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) label Oct 7, 2026
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2026:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-10-07) :

  • CAP-EXCEEDED-BY-GENRE : light_genre > cap partage G-VAR-2 (tally : declared=2 genre=3 cap=1)

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions github-actions Bot added the trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) label Oct 7, 2026
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Trivial-diff advisory (#15740, non bloquant).
genre guard dans la famille META (docs/guard/ledger/readme/test) + diff de 62 lignes changees (<= 100) + aucune exception ecrite dans le body : le litmus de la trivialite (une douzaine d'instances scannees a la suite) est credible. Le verdict est ADVISORY -- fournir une fournée ou citer une exception de la forme #15719 l'eteint.
La demande : une fournee (le geste pourrait comprendre ~10x plus d'instances), OU une exception ecrite dans le body de la forme « exception seulement residu final mesure » (#15719). Editer le body re-deroule cet organe et retire le label.

@github-actions github-actions Bot added the variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory) label Oct 7, 2026
@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19738
head: a049638
complete: true
body: read
comments-reviewed: 5
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 3c6443b5d565177dfa409b74087320bb25e863d3db277b88c1534db8c708cf72
diff-files: 2
diff-additions: 48
diff-deletions: 14
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19738
organ-rc: 0
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit 6f5d3af into main Oct 7, 2026
24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants