Skip to content

Tirage des grains : six angles morts mesurés — mentions de bots comptées comme activité, EPIC hors balayage, corps d'EPIC périmés, tirages sans trace #18203

Description

@myia-ai-01

Grain: MED/tooling

Question de départ

Le 28/09, le mainteneur a demandé si certaines issues sont rarement tirées pendant que d'autres avancent vite, et si des issues souvent citées donnent l'illusion d'avancer. Mesure faite le même jour sur les 468 issues ouvertes.

Ce qui est mesuré (28/09/2026, vers 10:30Z)

Fenêtre : les 1000 PRs mergées du 17/09 11:38Z au 28/09 10:10Z. Le plafond de gh pr list est atteint : la fenêtre effective fait environ 11 jours.

  1. Une queue froide existe. Sur 201 issues ouvertes depuis au moins 14 jours, 80 (40 %) n'ont reçu, sur la fenêtre, ni PR mergée qui les cite (titre ou corps, parseur series_saturation.cited_issues) ni [CLAIMED]. Âge médian : 24 jours. 20 d'entre elles n'ont jamais été réclamées.

  2. Les issues d'outillage refroidissent plus que les autres : 25 des 46 issues CI / harnais / outil de plus de 14 jours sont dans cette queue (54 %, contre 40 % en moyenne) ; 18 des 55 EPIC (33 %). Hypothèse : le tirage double le poids du contenu (G-VAR-1), et le harnais revient à ai-01, dont le cycle est absorbé par les merges. Si elle se confirme, c'est une dette du coordinateur, pas des lanes.

  3. Les mentions écrites par les bots se lisent comme de l'activité. Sur les issues ouvertes, GitHub affiche 1857 événements « mentioned this » venus de PRs mergées, pour 703 citations réelles (titre ou corps de PR). Les gabarits de commentaires de bots écrivent #N en clair, ce qui crée une mention sur l'issue à chaque PR :

    Issue mentions affichées citations réelles
    harness: plafond commentaires-pompage vs actions réparatrices (cas #14821 — 31 commentaires / 5 jours / toujours OPEN) #15511 85 1
    check_pr_path_collisions : le garde s'eteint quand un cote merge — la collision terminale sort en "faible", puis disparait #15578 76 0
    [EPIC] CoursIA -> reference publique : open-courseware fiabilise, fini, publie, multilingue #4208 52 0
    Proposition de regle : avant de reimplementer une operation dans ICT, nommer l'organe natif de la serie qui la possede deja (5 questions) — sign-off requis #13564 36 2

    Sources localisées : le commentaire Golden-Set (.github/workflows/notebook-execution-required.yml:283, « axe A [EPIC] CoursIA -> reference publique : open-courseware fiabilise, fini, publie, multilingue #4208 ») et celui de .github/workflows/organ-duplication-advisory.yml:118 (« tooling(#13564): organe de la regle organ-first — detect_organ_duplication.py (index API series, scan diff, exemption declaree) #16776 / Proposition de regle : avant de reimplementer une operation dans ICT, nommer l'organe natif de la serie qui la possede deja (5 questions) — sign-off requis #13564 »). Les autres restent à localiser.

    Le facteur « délaissement » du tirage (weight() dans scripts/pick_idle_grain.py, jours depuis updatedAt) est trompé par la même classe : un commentaire de bot, un ping de dispatch ou un claim remettent updatedAt à zéro sans qu'aucune livraison ait eu lieu. 11 des 80 issues froides avaient un updatedAt de moins de 3 jours.

  4. Le balayage des EPIC délaissées n'en voit qu'un quart. scripts/epic_neglect_sweep.py (cron quotidien, rapport sur [EPIC-neglect] Un balayage quotidien qui NOMME les EPICs qu'aucune PR mergee ne cite — 13/28 mesurees le 2026-08-30 #13653) ne retient que le label EPIC : 19 issues. Le tirage (label ou titre) en compte 73, et scripts/epic_body_staleness.py 76.

  5. Les corps d'EPIC ne reflètent plus la livraison. epic_body_staleness.py, sur 800 PRs mergées (21/09 → 28/09) : 54 des 76 EPIC ouvertes sont citées par des PRs mergées que leur corps ne mentionne pas. Cet organe n'est branché sur aucun workflow. Un worker qui lit le corps y lit un état ancien (règle 5 de verify-before-claiming).

  6. « Proposée puis écartée » ne se mesure pas. Le tirage ne laisse aucune trace : une issue proposée à dix lanes et écartée dix fois ne se distingue pas d'une issue jamais proposée.

Ce qui n'est pas établi

  • Qu'une issue froide soit mal servie : certaines attendent légitimement (dépendance, arbitrage). Le compte est un signal de tri, pas un verdict.
  • La cause du point 2 : c'est une hypothèse, à confirmer en rejouant weight() sur le pool.

Gestes proposés (une PR par geste, dans cet ordre)

  1. Gabarits de bots : écrire les numéros d'issue dans un bloc de code (`#4208`). GitHub n'y crée pas de lien, donc pas de mention. Contrôle : refaire la mesure mentions / citations une semaine après.
  2. epic_neglect_sweep.py : même règle d'appartenance que le tirage (label ou titre).
  3. weight() : mesurer le délaissement sur la dernière livraison (dernière PR mergée qui cite l'issue, ou dernier claim), et non plus sur updatedAt.
  4. epic_body_staleness.py : le brancher sur le balayage quotidien, en advisory, à côté du rapport de [EPIC-neglect] Un balayage quotidien qui NOMME les EPICs qu'aucune PR mergee ne cite — 13/28 mesurees le 2026-08-30 #13653.
  5. Journal des tirages : chaque tirage consigne la lane, les candidats et le grain retenu. Le lieu reste à décider (commentaire marqueur sur une issue de rendez-vous, ou artefact de workflow). Sans ce journal, le point 6 reste aveugle.

No activity

Activity on this issue will appear here.

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions