Skip to content

fix(ci,#19180): merge_dwell -- un run timed_out sur main est un rouge - #19192

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/19180-merge-dwell-timed-out
Oct 5, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/19180-merge-dwell-timed-out

Conversation

@myia-ai-01

Copy link
Copy Markdown
Collaborator

Grain: MED/guard — lane myia-ai-01:CoursIA — prev: MED/guard #19147

Le défaut

_main_red_motif (scripts/ci/merge_dwell.py) lit les dix derniers runs conclus du workflow surveillé sur main. Il retient le premier dont la conclusion vaut success ou failure. Les runs cancelled et skipped sont sautés à raison (#19069) : ils n'ont pas de verdict. Mais timed_out et startup_failure étaient sautés de la même façon, alors qu'ils sont des rouges : le workflow n'a pas rendu de vert.

Conséquence : avec un dernier run timed_out précédé d'un success, l'organe remontait jusqu'au vert et déclarait main vert. La dérogation de plancher merge-dwell-waived restait fermée sur un main rouge.

Le correctif

  • MAIN_RED_CONCLUSIONS = ("failure", "timed_out", "startup_failure") ; les verdicts sont ces trois conclusions plus success.
  • Toute autre conclusion reste sans verdict et se saute, comme avant.
  • Le motif de dérogation nomme la conclusion quand ce n'est pas un failure (« en echec (timed_out) »). Celui d'un failure garde sa forme : un test l'épingle mot pour mot.

Validation

  • Rouge avant le correctif : pytest -k 19180 → 2 échecs (timed_out, startup_failure), 2 succès (contrôle négatif et motif inchangé).
  • Vert après : pytest scripts/tests/test_merge_dwell.py scripts/tests/test_dwell_rule_matches_organ.py scripts/tests/test_pr_gate.py → 215 passed.
  • Contrôle négatif : cancelled puis success donne toujours « vert », le comportement merge_dwell: un run cancelled masque le verdict de main (derogation muette apres une passe de merge) #19069 ne change pas.
  • Grep du dépôt : aucune autre surface ne décrivait le filtre success/failure à mettre à jour.

Périmètre

Deux fichiers : l'organe et ses tests. Aucun workflow, aucune règle.

Closes #19180

🤖 Generated with Claude Code

`_main_red_motif` ne retenait que les conclusions `success`/`failure`.
Un `timed_out` (ou `startup_failure`) etait saute comme un `cancelled`,
et l'organe remontait jusqu'au vert precedent : main declare vert alors
que son dernier verdict etait rouge.

Les deux conclusions rejoignent `MAIN_RED_CONCLUSIONS`. Le motif de
derogation les nomme ; celui d'un `failure` garde sa forme.

Tests : rouge avant le correctif (2 echecs), vert apres ; controle
negatif `cancelled` puis `success` toujours vert (#19069 inchange).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@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 5, 2026
@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-ai-01:CoursIA a deja consomme son budget LIGHT du jour (#19149 (merge a 2026-10-05T00:29:39Z)).
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 trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) label Oct 5, 2026
@github-actions

github-actions Bot commented Oct 5, 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 81 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 commented Oct 5, 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 5, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19192 (fix(ci,#19180): merge_dwell -- un run timed_out sur main est un rouge) 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.

@jsboige

jsboige commented Oct 5, 2026

Copy link
Copy Markdown
Owner

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 19192
head: b4f8cac
complete: true
body: read
comments-reviewed: 4
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: b7d457587dae2d84309a538b01bf8425a143a91a9d136c46ed80845869d5ab75
diff-files: 2
diff-additions: 75
diff-deletions: 6
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19192
organ-rc: 0
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit 57be875 into main Oct 5, 2026
19 of 20 checks passed
@jsboige
jsboige deleted the fix/19180-merge-dwell-timed-out branch October 7, 2026 07:56
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-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(ci): merge_dwell — un run timed_out sur main est un rouge, pas un run sans verdict

2 participants