Repository navigation
test(ci,#16288): pinner la lisibilite du verdict xdist et sa mise en vigueur - #17241
Merged
Merged
Conversation
…vigueur Deux proprietes dont la disparition serait silencieuse, et que rien ne pinnait : le verdict du garde doit etre une annotation du check-run (toutes ses lignes, pas seulement la premiere), et le garde doit rester cable autour de l'invocation pytest de scripts-tests.yml. Le prefixe d'annotation devient une constante nommee, avec la mesure qui refute deux hypotheses fausses du meme jour : `##[error]` annote bel et bien sur le runner GitHub (8 annotations mesurees sur le job 106258931264), donc basculer vers `::error::` serait un changement sans effet ; et l'organe de triage n'est pas aveugle a cette mort (le log porte la signature attendue et aucun `short test summary`, la PR #17171 la reclasse en WORKER_DEATH). Aucun changement de comportement : les quatre messages emis sont identiques au prefixe pres. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Contributor
Owner
Author
|
[ADJOINT PREFLIGHT] |
This was referenced Sep 22, 2026
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.
Grain: LIGHT/guard -- lane myia-po-2026:CoursIA -- prev: DEEP/notebook-python #16844
See #16288— ne resout pas l'issue (le blocage lui-meme est traite) : ce PR pinne deux proprietes dont la disparition serait silencieuse.Deux hypotheses fausses, refutees par la mesure avant le commit
1. Le prefixe
##[error]n'annoterait rien. J'avais lu les quatre lignes de verdict comme du dialecte Azure DevOps, donc inerte sur GitHub Actions, et j'allais le basculer en::error::. Mesure sur le job106258931264(workflowScripts Tests (CPU), 21/09) : le check-run porte 8 annotationsXDIST-WATCHDOG, verbatimXDIST-WATCHDOG: workers morts : gw1, produites par ces memes lignes##[error]. Le runner GitHub accepte les deux formes. La bascule aurait ete un changement sans effet.2. L'organe de triage serait aveugle a cette mort.
classify_job_deaths.pyretourne bienREAL_STEP_FAILUREdes qu'une etape conclutfailure— avant de lire la moindre annotation — et le garde tue son enfant, donc l'etape conclutfailurepar construction. Mais sur le job cite, le log porteFatal Python error: Aborted(a[ 89%], l'une des signatures de #17171) et aucunshort test summary:worker_death_from_log()rendTrue, donc la PR #17171 deja approuvee reclasse ce job enWORKER_DEATH. Il n'y avait pas de lacune a combler, et je n'y touche pas.Les deux refutations sont consignees dans le code, au site qu'elles concernent : la prochaine lane ne les reprendra pas.
Ce qui restait, et que rien ne pinnait
Deux proprietes dont la perte est silencieuse — aucun test ne rougit, le blocage revient simplement :
scripts-tests.ymlenveloppe l'invocation pytest sur une ligne unique. Une edition de workflow qui la retire ramene la classe ci: Scripts Tests (CPU) -- un worker xdist mort bloque la jambe jusqu'au plafond (14-17 min de silence apres [99%]) #16288 — 14 a 17 min de silence puis le mur — sans temoin. Precedent de la meme famille : ci(#16099 followup): wire tests/test_evict_orphan_caches.py into PR Scripts Tests (CPU) #16422, une suite de tests ecrite par personne, cablee nulle part.Preuves
Suite :
16 passed(13 avant, +3). Non-regression du voisinage :22 passedsurtest_xdist_watchdog.py+test_check_testpaths_coverage.py.Falsification des trois pins — mutation, rouge attendu, restauration verifiee :
test_chaque_ligne_de_verdict_est_une_annotation[error], qui n'annote rien)test_le_prefixe_est_un_dialecte_du_runner_githubscripts-tests.ymltest_le_workflow_cable_le_garde_autour_de_pytestControle de non-vacuite — ma premiere version du test de cablage ecrivait
assert "pytest" in <texte apres le garde>, satisfait parecho pas-pytest: la mutation « le garde enveloppe autre chose » passait. Le test exige desormais l'egalite stricte du premier jeton suivant--; la meme mutation rougit. Meme exigence pour les deux premieres : une garde qui ne rougit pas quand le code est faux ne pinne rien.Perimetre
Deux fichiers, aucun changement de comportement : les quatre messages emis sont identiques au prefixe pres (verifie ligne a ligne contre
HEAD).scripts/ci/xdist_watchdog.py— le prefixe devient une constante nommee, avec la mesure et les deux hypotheses refutees ;scripts/tests/test_xdist_watchdog.py—+3pins et un commentaire perime corrige (il affirmait que les##[error]annotent le job, ce qui est vrai, mais sans dire pourquoi — c'est precisement ce qui m'a fait conclure l'inverse). Aucun fichier d'une PR ouverte n'est touche : #17171 gardeclassify_job_deaths.py.🤖 Generated with Claude Code