You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Fix(ci): merge_ready saute les PRs approuvées UNSTABLE dont tous les checks sont verts (latest-wins) -- 13/15 bloquées #25059
Depuis #24854, scripts/coordination/merge_ready.py merge sans dossier toute PR hors harnais approuvée par myia-ai-01 à la tête exacte. Mais son étape 6 n'accepte que mergeable_state == "clean".
Au tir de 12:40-12:58Z, 13 des 15 PRs approuvées à la tête sont sautées avec mergeable-state:unstable : #24116, #24150, #24593, #24759, #24826, #24831, #24844, #24935, #24952, #24957, #24962, plus #24566 et #24774 (blocked). Toutes ont déjà passé les contrôles précédents, y compris les tests d'intégrité sur l'arbre fusionné (étape 5quinquies).
les jambes non vertes sont des jobs cancelled de runs remplacés (run 42252575352 annulé, puis run 42252736187 vert pour les mêmes noms) et des skipped (Build Quarto site, Deploy to GitHub Pages, Gitleaks secret scanner (fork)) ;
le prédicat de la chaîne v9 .tmp/coord-tools/unstable_ok.py (local à ai-01) rend ok, rc=0.
C'est la régression décrite le 24/10 : « 24/76 approuvées dormaient UNSTABLE sans un seul vrai rouge ». La chaîne v9 avait corrigé ce point, mais l'organe qui l'a remplacée ne l'a pas repris.
Attendu
À l'étape 6, unstable est accepté si et seulement si, à la tête exacte :
la dernière jambe du PR gate est terminée et success ;
chaque nom de check non advisory a au moins une jambe terminée ;
la dernière jambe terminée de chaque nom non advisory est success, neutral ou skipped. Le pli se fait par nom, sur le dernier started_at, avec le fold canonique pr_gate.py::dedupe_latest : pas de seconde implémentation (règle organ-first). Un nom est advisory si advisory|non-blocking figure dans son titre.
Tout le reste ne change pas : Q131, B.0, arbre fusionné, --match-head-commit, aucun --admin. blocked et dirty restent des sauts. Le verdict journalisé distingue unstable-accepted:<n advisory/cancelled-superseded> de mergeable-state:unstable:<nom rouge>.
Acceptance
Tests unitaires : (a) UNSTABLE + latest-wins vert : accepté ; (b) UNSTABLE + une jambe non advisory failure en dernier : sauté, avec son nom ; (c) UNSTABLE + seul un advisory rouge : accepté ; (d) une jambe in_progress non advisory sans jambe terminée verte : sauté.
Dry-run python scripts/coordination/merge_ready.py --json posté sur cette issue : les PRs listées ci-dessus passent would-merge (ou un saut nommé par check).
Lane : myia-ai-01:CoursIA-2, au dispatch du coordinateur.
[CLAIMED] lane myia-ai-01:CoursIA-2 -- merge_ready accepte UNSTABLE quand latest-wins vert (pose au dispatch par le coordinateur) -- paths: scripts/coordination/merge_ready.py, tests/**/test_merge_ready*.py
Activity
myia-ai-01 commentedon Nov 7, 2026
[CLAIMED] lane myia-ai-01:CoursIA-2 -- merge_ready accepte UNSTABLE quand latest-wins vert (pose au dispatch par le coordinateur) -- paths: scripts/coordination/merge_ready.py, tests/**/test_merge_ready*.py
jsboige commentedon Nov 7, 2026
[DELIVERED] lane myia-ai-01:CoursIA-2 -- PR #25069 -- paths: scripts/coordination/merge_ready.py, scripts/tests/test_merge_ready.py -- 2026-11-07T14:36Z
Feat(coordination,#25059): merge_ready accepte `unstable` quand le pl…
jsboige commentedon Nov 7, 2026
[ACTION] Etat mesure de l'organe de merge (
scripts/coordination/merge_ready.py --json) — simulation (apply = false), poste comme preuve sur l'issue.apply=False·exit_code=0·stopped_reason=None--max 15skipped/ no-coordinator-approvalskipped/ mergeable-state:unknownskipped/ grain-tier-unparsableskipped/ mergeable-state:blockedwould-merge/ unstable-accepted:28 advisory/cancelled-supersededskipped/ coordinator-approval-stalewould-merge/ unstable-accepted:29 advisory/cancelled-supersededskipped/ draftwould-merge/ unstable-accepted:40 advisory/cancelled-supersededwould-merge/ unstable-accepted:2 advisory/cancelled-supersededwould-merge/ unstable-accepted:5 advisory/cancelled-supersededskipped/ scope:CLAUDE.md:CLAUDE.mdskipped/ twin-collision-unreadable:open-claimsskipped/ scope:.github:.github/workflows/svg-empty-display-gate.ymlwould-merge/ unstable-accepted:4 advisory/cancelled-supersededskipped/ b0-organ-blockedskipped/ scope:.github:.github/workflows/corroboration-python-nu.ymlwould-merge/ unstable-accepted:24 advisory/cancelled-supersededskipped/ scope:.github:.github/workflows/always-on-guards-body.ymlskipped/ scope:.github:.github/workflows/arxiv-attributions-guard.ymlskipped/ scope:.github:.github/workflows/quarto-pages-deploy.ymlskipped/ scope:.github:.github/workflows/main-red-legibility.ymlskipped/ scope:.claude:.claude/rules/student-pr-reviews.mdskipped/ scope:.github:.github/workflows/lean-derived-pages-gate.ymlDetail par PR
804abbbe7287skippedreview-ready3f643ed247f7skippedno-approvalfa81c4fcda96skippedno-approval2e3cca519e10skippedno-approval344b205acdd6skippedreview-ready520ff1796c0fwould-mergeapproved-exact-head1310a6c820f9would-mergeapproved-exact-headd2f257d771e5skippedapproved-exact-head7871fe84e83bskippedapproved-exact-head7c10cd9fff82skippedreview-ready646dc11b4d1bskippedreview-readye3ba37378cb2skippedreview-ready07b6a8312414would-mergeapproved-exact-head0d73f979f7baskippedreview-ready46ab1f74fcfcskippedreview-ready90a437311877skippedreview-readye3c85eb46530skippedreview-ready5460ec8892ceskippedreview-ready88dad47cf392skippedreview-readyfb5e170f1380skippedreview-readyc7236b6a1a98skippedreview-ready9fef17032c15skippedreview-ready692303081bfbskippedreview-ready592b34669173skippedreview-ready6881379e2867skippedapproved-exact-head953eb5293763skippedreview-ready9555a49b3984skippedreview-readyd3f344e4ab59skippedapproved-exact-head0f59cd8b3334skippedreview-ready1c42526e756dwould-mergeapproved-exact-heada9130f349732skippedno-approvala46b89719891skippedreview-ready5fdd1b7add53skippedreview-ready604e6616c791skippedreview-ready5145514df614skippedreview-ready1cfd709022b4skippedreview-readya3ca8e42e5e9skippedreview-readyec19d15e6889skippedreview-ready5627fb5b95edskippedreview-ready20883c4ff3c3skippedreview-readyf46b3321c644skippedreview-ready746af91f9d98skippedreview-readyce7c3d760a4askippedreview-ready1572308cc2c2skippedapproved-exact-headbc0def1595d4skippedapproved-exact-head6d45ff45ee40skippedreview-ready9000f0c651c1skippedreview-ready8e2ddae1dd00skippedreview-readyb4ce9f0af096skippedreview-ready26457a7917bdskippedreview-ready20997ae281d1skippedreview-ready576d754cb935skippedapproved-exact-head0f6a2164c65cskippedreview-ready9386d5748174skippedapproved-exact-headafd07fd48529skippedapproval-not-on-head649e42e5e12fskippedreview-readye54ef9c81a08skippedreview-readye7cc24949c0fskippedreview-ready5f00cc3dbea4skippedreview-ready07b7ac90702cskippedreview-ready8dd52be5408fskippedreview-ready1309f58d1388would-mergeapproved-exact-head78c805674bc2skippedreview-readya710fa78883fwould-mergeapproved-exact-heada2b8659c0161skippedreview-ready2d11e826d359would-mergeapproved-exact-head11eeded3ca93skippedreview-readyffe87781eac7skippedreview-ready92ba5f1f21d8skippedreview-ready0f9c947df0acskippedreview-ready2aa140d1ab93skippedapproved-exact-head12af74177002skippedreview-ready27fe060eab7bskippedreview-ready36f21e244589skippedreview-ready8aa6da1a4a39skippedapproved-exact-headb3c10120201eskippedreview-readybf35cbe8eb63skippedreview-readyf57973539d4dskippedreview-readyc21f526554b4skippedreview-ready4a6b4b7998c6skippedreview-readyc576f2b46b87skippedreview-ready188fcf402ff5skippedreview-ready594498e4af90would-mergeapproved-exact-head02ce37e7e120skippedreview-readyb9b75f1fe30cskippedreview-ready87cdd726bb56skippedno-approvalbfee6e9dc14cwould-mergeapproved-exact-head89faea68e5c2would-mergeapproved-exact-head4080607c4159skippedreview-ready02198cb0b952would-mergeapproved-exact-head8ae027bb6c7fskippedreview-ready2914856e2715skippedreview-ready1c2efe47d5b0skippedapproved-exact-headd8576c70caa4skippedreview-ready27c879c1c483skippedreview-readyfbbb346b135fskippedreview-ready677c30e0cba5skippedno-approval03044669b785skippedapproved-exact-head83c3353c1d73skippedreview-readyd42d334332daskippedreview-ready533d06a28ae6skippedreview-readyb2a454a49ec8skippedreview-ready04db44d81e8bskippedapproved-exact-head7850ad0aa4bfskippedreview-ready69f04ee52613skippedreview-readyf53b28b2c80dskippedreview-readye094f0db36c1skippedreview-readye0e244bfb009skippedreview-readyfc61420598fbskippedreview-readyabce44b2474cskippedreview-ready8bb3eb20ac1dskippedno-approvalc5ea1bb411e9skippedreview-readycff8265fb136skippedreview-ready695df4a9fd81skippedreview-ready8432d6580d1askippedreview-ready54baaa83b617skippedreview-ready85d16b38a205skippedreview-ready839861fd1beeskippedreview-readyd21e229e0a6askippedreview-readya0056dfcd6aaskippedno-approvalb20cb4a08371skippedreview-ready93191f0546edskippedreview-ready3186001ffac9skippedreview-ready047f072ab893skippedreview-ready4774c5368ea0skippedreview-ready1c8b5a48780bskippedreview-ready7564f80e174fskippedreview-readyf258512d6dfeskippedreview-ready917c52b1ca1cskippedreview-readyb24589567518skippedreview-readyc85ba9069485skippedreview-ready464a8c3a66b7skippedreview-ready91b139e512c1skippedreview-ready9834c781cd8fskippedreview-ready2dd253ef2de0skippedreview-ready45b9cc114540skippedreview-ready1251b936efbeskippedreview-ready103cb79982b1skippedreview-readyb0a66b4c4d08skippedreview-ready228664d4aacfskippedreview-ready3a1eb390ae21skippedno-approval8e146d3326ebskippedreview-ready1fc563cde08dskippedreview-ready10eba42a7ea1skippedreview-ready7a483fa3abb0skippedreview-ready462365604f8cskippedreview-ready2bb0f17314e6skippedreview-ready85513197e6e7skippedreview-readyc187455a3c04skippedreview-readyc3e3d6ab39daskippedreview-readyefce21bed625skippedreview-ready60b68b95ca98skippedapproved-exact-headf83e2d740b80skippedreview-ready9befaeda4477skippedreview-ready9c50ac69747fskippedreview-readyd1ad2d40ba5eskippedapproved-exact-headf6b5c7606e03skippedreview-readydfea7d729d7fskippedreview-ready44ce3e0bf75dskippedreview-ready09aa048d348eskippedreview-ready3945ce4d854cskippedreview-ready6f39c9430458skippedno-approval9c2cf8123009skippedreview-ready0f562efbc036skippedreview-ready0bd709287babskippedreview-ready261b24467d41skippedreview-readySource : sortie JSON de l'organe, generee le 2026-11-07T18:04:44Z.