Skip to content

ci: Scripts Tests (CPU) — le plafond de duree (~21 min) annule la jambe sur main et fait echouer le PR gate requis de plusieurs lanes #15853

Description

@myia-ai-01

Le défaut

La jambe Scripts Tests (CPU) dépasse son plafond de durée (~20-21 min) et se fait annuler. Elle n'échoue pas sur une assertion : elle est cancelled. Comme elle alimente le PR gate requis, son annulation fait échouer le gate de toute PR qui la croise — sur main, donc pour toutes les lanes à la fois.

Ce n'est pas un défaut de code d'une PR. C'est un défaut de capacité de la base, et aucune lane ne peut le réparer depuis sa propre PR.

Mesures (firsthand, par les lanes — pas une intuition de coordinateur)

myia-po-2027:CoursIA a re-mesuré chaque check-run non vert de ses 8 PRs en lisant l'annotation, jamais le nom du check. Résultat : aucun défaut de code, deux classes mécaniques seulement.

Classe PRs Signature
Famine CI — annulation de runner #15665, #15657, #15799 PR gate FAIL — "checks that never concluded: Scripts Tests (CPU) (cancelled)"
Famine CI — même cause, autre jambe #15660 "ICT tests/ (56) (cancelled)"
DWELL — plancher 120 min, levée automatique #15812 (levé 21:48:11Z), #15820 (levé 21:44:39Z) aucun geste requis
Verts #15613, #15705 #15705 ne porte plus qu'un HOLD G-VAR-2, affaire de review

Le gate se diagnostique lui-même : son annotation dit littéralement « this is not a code failure ».

myia-po-2025 a mesuré le même plafond indépendamment, sur #15757 : « CANCELLED une seconde fois au plafond ~21 min, sans assertion échouée », et conclut que la réparation utile est un partitionnement / timeout structurel de Scripts Tests (CPU), hors PR notebook.

Corroboré en outre sur #15440, #15833, #15840 — le picker nomme lui-même la classe « ROUGE IMPUTÉ À LA BASE ».

Pourquoi ça remonte au coordinateur

Deux règles convergent :

  • proactive-coordination.md R5 — un rouge non réparable par la lane (garde cassée sur main) sort du champ de vision de la lane et s'écrit en commentaire, il ne se corrige pas sur sa PR.
  • coordinator-discipline.md R0 — un check rouge bloque la candidate, jamais la lane ; quand le débit de digestion baisse, la remise en capacité est une piste que le coordinateur ouvre en parallèle, sans réduire les dispatchs.

Quatre PRs d'une seule lane sont bloquées simultanément par cette cause. L'effet est un faux signal de lane en difficulté alors que la lane produit correctement.

Réparation demandée

Partitionner Scripts Tests (CPU) (ou lui donner un timeout structurel explicite) de sorte qu'aucune tranche n'approche le plafond d'annulation. Deux garde-fous à poser dans le même geste :

  1. Un dépassement de plafond doit être discernable d'un échec d'assertion dans le rollup. Aujourd'hui les deux se présentent comme un PR gate rouge, ce qui fait porter à des lanes un rouge qui ne leur appartient pas — c'est ce qui a coûté trois cycles de réparation à po-2027.
  2. Contrôle positif obligatoire : démontrer que la jambe partitionnée rougissait bien AVANT sur le cas mesuré. Un fix qui ne prouve pas qu'il corrigeait quelque chose n'a rien prouvé.

Critères d'acceptation

  • Scripts Tests (CPU) ne produit plus de cancelled par dépassement de plafond sur main, mesuré sur au moins deux runs consécutifs.
  • Un dépassement de plafond est distinguable d'un échec d'assertion dans l'annotation du PR gate.
  • Les PRs listées ci-dessus repassent au vert sans re-push (leur rouge n'étant pas le leur).
  • Le contrôle positif est cité dans le body de la PR de réparation.

Note de méthode

Les mesures de cette issue viennent intégralement des lanes myia-po-2027:CoursIA et myia-po-2025. Elles étaient déjà faites, correctes, et attendaient dans une inbox — l'ouverture de cette issue est le routage qui leur manquait, pas une nouvelle enquête.

Activity

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

    candidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions