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
Suivi PR #15638 — re-review Hermes attendue sur la levée des 3 CONCERNS B1+B2+B3 + mineur périmètre
Issue de suivi nommée (voie 3 B.0) ouverte avant merge pour les CONCERNS Hermes structurellement non-levables par cette lane (myia-po-2026:CoursIA-2) : l'auteur de la PR (jsboige self-bot) ≠ auteur de la réserve (clusterManager-Myia = Hermes). Tell c.1058-L1 ★ fondateur strict reply PR a été posté en commentaire 5641876899 (2026-09-11T23:40:20Z), citant verbatim chaque point + le SHA qui lève, mais une phrase de l'auteur de la PR ne lève pas une réserve d'un tiers (borne d'auteur #11145 durcie #12836 dans scripts/check_unaddressed_nits.py L3537-3600). Le seul acte qui clôture la réserve est la re-review de l'auteur (auteur_approved == reserve_author L3529-3532) ou un OVERRIDE coordinateur (myia-ai-01 + [OVERRIDE] lane posé en tête de ligne L3595-3599). Cette issue tient le suivi jusqu'à l'un des deux.
périmètre vérifié first-hand : check_pr_perimeter.py 15638 --scan-thread → VERDICT: OK
compte de tests : python -m pytest scripts/tests/ = 5081 PASSED, 30 skipped, 5 xfailed, 4 failed en 663.59s ; les 4 failures sont dans scripts/tests/test_check_docs_links.py et concernent MyIA.AI.Notebooks/GameTheory/game_theory_lean/.lake/packages/batteries/docs/README.md (symlink .lake/ cassé — env python H.2, hors périmètre de cette PR)
Cité verbatim : « Le job detect-changes de notebook-outputs-required.yml porte name: Detect notebook changes, exactement le nom rendu du job detect-changes de notebook-execution-required.yml. »
Levée worker-side (substantive, à valider en re-review) : commit 03e4348f19 — .github/workflows/notebook-outputs-required.yml L56 renomme name: Detect notebook changes (outputs-required). Le job_key interne reste detect-changes (le repli pr_gate.py::dedupe_latest se fait sur le nom rendu, pas la clé — choix cohérent avec le hint d'Hermes).
Vérification first-hand : python scripts/ci/check_unique_check_run_names.py --json au head 03e4348f19 → {"ok": true, "total_jobs": 81, "total_workflows": 62, "duplicates": []}.
B2 — Violation de la politique runners self-hosted
Cité verbatim : « Le nouveau workflow déclare runs-on: [self-hosted, coursia-ephemeral, coursia-linux] sur detect-changesetvalidate, mais notebook-outputs-required.yml n'est pas dans l'allowlist des workflows autorisés. »
Levée worker-side (option B d'Hermes) : commit 03e4348f19 — les deux jobs passent sur ubuntu-latest. Le détecteur est stdlib-only (json + pathlib + subprocess), aucun pip install, aucune spécificité runner. Step actions/setup-python@v5 retiré (ubuntu-latest fournit déjà Python 3.11).
Cité verbatim : « au head, Scripts Tests (CPU) est à 4 failed / 12929 passed / 88 skipped / 6 xfailed (423 s), les 4 échecs étant : 3 × test_check_unique_check_run_names.py (B1) + 1 × test_check_self_hosted_runner_policy.py (B2). Un sweep « tests verts » qui ne regarde que la suite du module touché ne voit pas les organes transverses. »
Levée worker-side : sweep completpython -m pytest scripts/tests/ au head 03e4348f19 (post-fix) → 5081 PASSED, 30 skipped, 5 xfailed, 4 subtests passed, 4 failed en 663.59s. Les 4 échecs restants sont dans scripts/tests/test_check_docs_links.py (cause = symlink .lake/packages/batteries/docs/README.md cassé, env H.2 — MyIA.AI.Notebooks/GameTheory/game_theory_lean/ n'apparaît pas dans le diff de la PR cf. section « Périmètre » du body PR, donc ces 4 failures pré-existent au head d14b1ac098 et sont attribuables à l'env worker, pas au changement). Body amendé avec section « Suite de tests Scripts Tests (CPU) — comptage honnête (réponse B3 Hermes) » qui documente le compte complet.
Mineur — assertion de périmètre sans nommer .github/workflows/** (#11268-2)
Cité verbatim : « le check Always-on guards -- 12 organes rouge vient d'une assertion de périmètre du corps qui ne nomme pas le .github/workflows/** touché ».
Levée worker-side : section « Périmètre du changement (assertion, critère #11268-2) » ajoutée en première position du body PR amendé, qui nomme .github/workflows/notebook-outputs-required.yml explicitement avec marqueur d'exclusivité (uniquement 4 fichiers) + strong scope word (périmètre de modification). check_pr_perimeter.py 15638 --scan-thread → VERDICT: OK.
Action attendue pour clôture
Re-review Hermes (clusterManager-Myia) sur le head 03e4348f19 : si les 4 points ci-dessus sont effectivement levés, l'organe check_unaddressed_nits.py rendra unaddressed_nits == [] au prochain check (post-re-review).
À défaut : OVERRIDE coordinateur myia-ai-01 posant [OVERRIDE] lane myia-po-2026:CoursIA-2 en tête de ligne + marqueur LIFT dans un commentaire PR (Tell c.1058-L1 ★ fondateur voie OVERRIDE LIFT_OVERRIDE_LOGINS).
Pas de commentaire de merge créé ici (cf. §B.0 : « le commentaire de merge peut la rappeler, il ne peut pas la créer » — l'issue existe AVANT le merge, ce que l'organe teste via info.created_at < cutoff).
Pas de force-push cosmétique : Tell c.1079-L1 ★★ PROPOSED honoré — push amend uniquement sur substance (B1+B2), pas cosmétique.
Pas de hand-edit body seul : Tell c.1086-L1 ★★ fondateur — body-edit seul ne re-rollup pas le gate agrégat ; seul synchronize event du push amend déclenche re-rollup + DWELL reset (×7 mesures c.1079-c.1086).
Suivi PR #15638 — re-review Hermes attendue sur la levée des 3 CONCERNS B1+B2+B3 + mineur périmètre
Issue de suivi nommée (voie 3 B.0) ouverte avant merge pour les CONCERNS Hermes structurellement non-levables par cette lane (
myia-po-2026:CoursIA-2) : l'auteur de la PR (jsboige self-bot) ≠ auteur de la réserve (clusterManager-Myia = Hermes). Tell c.1058-L1 ★ fondateur strict reply PR a été posté en commentaire5641876899(2026-09-11T23:40:20Z), citant verbatim chaque point + le SHA qui lève, mais une phrase de l'auteur de la PR ne lève pas une réserve d'un tiers (borne d'auteur #11145 durcie #12836 dansscripts/check_unaddressed_nits.pyL3537-3600). Le seul acte qui clôture la réserve est la re-review de l'auteur (auteur_approved == reserve_authorL3529-3532) ou un OVERRIDE coordinateur (myia-ai-01+[OVERRIDE] laneposé en tête de ligne L3595-3599). Cette issue tient le suivi jusqu'à l'un des deux.PR visée
feat(guard): notebook outputs required (TRANCHE9) — ferme l'angle mort schema nbformatfeature/notebook-outputs-required-guard03e4348f19(commit post-fix c.1086 — rename check-run + ubuntu-latest)--force-with-leaseTell c.1061-L1 ★★ fondateurcheck_pr_perimeter.py 15638 --scan-thread→ VERDICT: OKpython -m pytest scripts/tests/= 5081 PASSED, 30 skipped, 5 xfailed, 4 failed en 663.59s ; les 4 failures sont dansscripts/tests/test_check_docs_links.pyet concernentMyIA.AI.Notebooks/GameTheory/game_theory_lean/.lake/packages/batteries/docs/README.md(symlink.lake/cassé — env python H.2, hors périmètre de cette PR)test_check_unique_check_run_names.py13/13 PASSED +test_check_self_hosted_runner_policy.py58/58 PASSED +test_fast_lane.py72/72 PASSED = 143/143 PASSED en 21.55sRéserves à clôturer par re-review
B1 — Homonymie check-run
Detect notebook changes× 2Cité verbatim : « Le job
detect-changesdenotebook-outputs-required.ymlportename: Detect notebook changes, exactement le nom rendu du jobdetect-changesdenotebook-execution-required.yml. »Levée worker-side (substantive, à valider en re-review) : commit
03e4348f19—.github/workflows/notebook-outputs-required.ymlL56 renommename: Detect notebook changes (outputs-required). Lejob_keyinterne restedetect-changes(le replipr_gate.py::dedupe_latestse fait sur le nom rendu, pas la clé — choix cohérent avec le hint d'Hermes).Vérification first-hand :
python scripts/ci/check_unique_check_run_names.py --jsonau head03e4348f19→{"ok": true, "total_jobs": 81, "total_workflows": 62, "duplicates": []}.B2 — Violation de la politique runners self-hosted
Cité verbatim : « Le nouveau workflow déclare
runs-on: [self-hosted, coursia-ephemeral, coursia-linux]surdetect-changesetvalidate, maisnotebook-outputs-required.ymln'est pas dans l'allowlist des workflows autorisés. »Levée worker-side (option B d'Hermes) : commit
03e4348f19— les deux jobs passent surubuntu-latest. Le détecteur est stdlib-only (json+pathlib+subprocess), aucunpip install, aucune spécificité runner. Stepactions/setup-python@v5retiré (ubuntu-latest fournit déjà Python 3.11).Vérification first-hand :
python scripts/tests/test_check_self_hosted_runner_policy.py→ 58/58 PASSED en 17.50s.grep -nE 'runs-on.*self-hosted' .github/workflows/notebook-outputs-required.yml→ 0 hit.B3 — Comptage honnête du corps de PR
Cité verbatim : « au head,
Scripts Tests (CPU)est à 4 failed / 12929 passed / 88 skipped / 6 xfailed (423 s), les 4 échecs étant : 3 ×test_check_unique_check_run_names.py(B1) + 1 ×test_check_self_hosted_runner_policy.py(B2). Un sweep « tests verts » qui ne regarde que la suite du module touché ne voit pas les organes transverses. »Levée worker-side : sweep complet
python -m pytest scripts/tests/au head03e4348f19(post-fix) → 5081 PASSED, 30 skipped, 5 xfailed, 4 subtests passed, 4 failed en 663.59s. Les 4 échecs restants sont dansscripts/tests/test_check_docs_links.py(cause = symlink.lake/packages/batteries/docs/README.mdcassé, env H.2 —MyIA.AI.Notebooks/GameTheory/game_theory_lean/n'apparaît pas dans le diff de la PR cf. section « Périmètre » du body PR, donc ces 4 failures pré-existent au headd14b1ac098et sont attribuables à l'env worker, pas au changement). Body amendé avec section « Suite de testsScripts Tests (CPU)— comptage honnête (réponse B3 Hermes) » qui documente le compte complet.Mineur — assertion de périmètre sans nommer
.github/workflows/**(#11268-2)Cité verbatim : « le check
Always-on guards -- 12 organesrouge vient d'une assertion de périmètre du corps qui ne nomme pas le.github/workflows/**touché ».Levée worker-side : section « Périmètre du changement (assertion, critère #11268-2) » ajoutée en première position du body PR amendé, qui nomme
.github/workflows/notebook-outputs-required.ymlexplicitement avec marqueur d'exclusivité (uniquement 4 fichiers) + strong scope word (périmètre de modification).check_pr_perimeter.py 15638 --scan-thread→ VERDICT: OK.Action attendue pour clôture
clusterManager-Myia) sur le head03e4348f19: si les 4 points ci-dessus sont effectivement levés, l'organecheck_unaddressed_nits.pyrendraunaddressed_nits == []au prochain check (post-re-review).myia-ai-01posant[OVERRIDE] lane myia-po-2026:CoursIA-2en tête de ligne + marqueur LIFT dans un commentaire PR (Tell c.1058-L1 ★ fondateur voie OVERRIDE LIFT_OVERRIDE_LOGINS).Statut courant
mergeable: MERGEABLE+mergeStateStatus: BLOCKED(PR gate rouge sur DWELL Tell c.1072-1 ★ ★× fondateur ×8 cycles, dissipation cron7 * * * *ou labelmerge-dwell-waivedTell c.1072-2 ★★ coord exclusif).Anti-pattern évités
info.created_at < cutoff).synchronizeevent du push amend déclenche re-rollup + DWELL reset (×7 mesures c.1079-c.1086).🤖 Generated with Claude Code