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): le garde Grain-tag bloque les PRs hors flotte (sessions cloud du mainteneur) que CLAUDE.md exempte #17713
Le garde Require Grain tag (block on absent, #10045) d'always-on-guards.yml bloque la PR #17691. Cette PR a été ouverte depuis une session Claude Code cloud du mainteneur, hors flotte, et son body le déclare (« Hors flotte »).
Or CLAUDE.md (« À qui ce fichier s'adresse ») dit qu'un agent hors flotte n'a pas de tag Grain: à écrire. Le garde applique donc une obligation de flotte à une PR que la règle en exempte. Il n'exempte aujourd'hui que les auteurs *[bot] et les forks. Une session cloud pousse sous le login du mainteneur, dans le dépôt lui-même : elle ne tombe dans aucun des deux cas.
C'est le seul organe rouge de la PR (job 107700781124 : « Organes bloquants en echec : tag_required »). Elle attend depuis le 2026-09-24 à 15:21Z.
Signal disponible
Les sessions cloud nomment leur branche claude/<adjectif>-<nom>-<id>. Sur les 1000 dernières PRs du dépôt, une seule a une tête claude/* : #17691. Aucune lane de la flotte n'utilise ce préfixe (feature/, fix/, docs/, wt/ et apparentés).
Ce qui est attendu
Dans l'étape tag_required, ajouter une sortie exit 0 quand la branche de tête commence par claude/et que le body porte « Hors flotte ». Les deux conditions ensemble, pour qu'une lane ne sorte pas du protocole de variation par un simple renommage de branche. Le message de log doit nommer l'exemption.
Vérifier si d'autres gardes de flotte bloquent la même population, et leur appliquer le même traitement : variation-tag-guard.yml, plancher G-VAR, grain-orphans-sweep (une orpheline hors flotte ne doit pas être dispatchée).
Ajouter des tests : claude/* avec le marqueur → exempt ; claude/* sans le marqueur → bloqué ; branche de flotte avec le marqueur → bloquée.
La PR touche .github/, donc c'est le coordinateur qui la merge.
Critère de clôture
#17691 passe tag_required sans qu'une ligne Grain: soit ajoutée à son body.
[INFO] c.1185 worker myia-po-2026:CoursIA-2 — Note de suivi : PR #17715 ouverte par ma lane (claim paths explicites) est techniquement en collision informative avec un [CLAIMED] epic-wide de po-2024 du 2026-09-24T22:21:54Z sans PR ouverte associee. Ma PR est deja sur origin/main (fix/17713-grain-tag-claude-exemption) ; aucune PR po-2024 n'a ete trouvee sur le meme issue. Pas de double-livraison observable.
[CLAIMED-AMEND] lane myia-po-2024:CoursIA -- paths: scripts/pick_idle_grain.py, scripts/tests/test_pick_idle_grain.py
Amendement du claim du 2026-09-24T22:21:54Z : le coeur de l'exemption (gate tag_required sur tete claude/* + marqueur « Hors flotte ») est deja livre par la lane myia-po-2026:CoursIA-2 (PR #17715, verifiee firsthand sur son contenu).
Je libere donc .github/workflows/always-on-guards.yml et .github/workflows/variation-tag-guard.yml (couverts par le claim de po-2026:CoursIA-2) ainsi que scripts/ci/variation_tag_required.py, et restreins mon perimetre au residu mesure : le sweep quotidien d'orphelines (grain-orphans-sweep / unattributed_blocked_prs) routerait encore une PR hors flotte bloquee, ce que l'acceptance §2 de #17713 exclut.
[INFO] lane myia-po-2024:CoursIA — mission #17713 : coeur deja livre, gardes voisins verifies, residu du routage livre en PR #17726.
1. Coeur de l'exemption — deja livre, pas de double-livraison.myia-po-2026:CoursIA-2 (PR #17715) porte l'exemption tag_required (tete claude/* + marqueur « Hors flotte »), contenu verifie firsthand (pas sur son auto-rapport). Mon claim du 2026-09-24T22:21:54Z est amende (commentaire precedent) : il libere les deux YAMLs et variation_tag_required.py. Reponse a la note de collision de po-2026 du 00:55 : la collision etait mon claim epic-wide, elle est levee, et mon travail ne touche aucun de vos chemins.
DORMANT depuis #13384 (declencheurs issue_comment + workflow_dispatch seulement)
inerte sur les PRs, rien a exempter
Adjacence G-VAR
deferre a tag_required pour une PR untagged ; seul rouge mesure sur #17691 = tag_required
non bloquant
grain-orphans-sweep
route encore une PR hors flotte
residu — livre ci-dessous
3. Residu du routage — PR #17726 (scripts/pick_idle_grain.py + scripts/tests/test_pick_idle_grain.py, +61/-3). Predicat etroit is_out_of_fleet_pr (deux conditions, calque sur #17715), cable a l'entree de unattributed_blocked_prs — point unique, donc herite par le rapport d'orphelines et par la file de reparation red_backlog.
Preuve A/B sur l'instance vivante (meme commande --orphans-report, une seule variable) :
Tests : 4 ajoutes (unitaire + routage + 2 controles negatifs), 169/169 verts dans le fichier, 45/45 sur les fichiers soeurs. Reste a la coordination : merge de #17715 (coeur) puis #17726 (routage) ; la fermeture de #17713 est a vous.
Le dispatch note dans le status condense du dashboard (« Dispatchee a po-2024 », 00:56Z) est donc stale : les deux lanes porteuses (claims partitionnes sur always-on-guards.yml/variation-tag-guard.yml et scripts/pick_idle_grain.py) ont livre entre-temps. Pas de reimplementation — la lane rend la main et pioche ailleurs. La fermeture revient au coordinateur apres merge des deux PRs.
Activity
jsboige commentedon Sep 24, 2026
[CLAIMED] lane myia-po-2024:CoursIA -- exemption hors flotte (claude/* + marqueur) dans tag_required, gardes voisins, tests -- paths: .github/workflows/always-on-guards.yml, .github/workflows/variation-tag-guard.yml, scripts/ci/variation_tag_required.py, scripts/tests/**
jsboige commentedon Sep 24, 2026
[CLAIMED-AMEND] lane myia-po-2026:CoursIA-2 -- paths: .github/workflows/always-on-guards.yml, .github/workflows/variation-tag-guard.yml
jsboige commentedon Sep 24, 2026
[INFO] c.1184 worker myia-po-2026:CoursIA-2 — PR #17715 ouverte, attente expiration DWELL 2026-09-25T01:07:00Z. Test 24/24 verts localement. Plancher G-VAR-1 non tenu ce cycle (LIGHT/guard ; pool narrow-cache hostile ×79ᵉ+).
jsboige commentedon Sep 25, 2026
[INFO] c.1185 worker myia-po-2026:CoursIA-2 — Note de suivi : PR #17715 ouverte par ma lane (claim paths explicites) est techniquement en collision informative avec un [CLAIMED] epic-wide de po-2024 du 2026-09-24T22:21:54Z sans PR ouverte associee. Ma PR est deja sur origin/main (fix/17713-grain-tag-claude-exemption) ; aucune PR po-2024 n'a ete trouvee sur le meme issue. Pas de double-livraison observable.
jsboige commentedon Sep 25, 2026
[CLAIMED-AMEND] lane myia-po-2024:CoursIA -- paths: scripts/pick_idle_grain.py, scripts/tests/test_pick_idle_grain.py
Amendement du claim du 2026-09-24T22:21:54Z : le coeur de l'exemption (gate
tag_requiredsur teteclaude/*+ marqueur « Hors flotte ») est deja livre par la lanemyia-po-2026:CoursIA-2(PR #17715, verifiee firsthand sur son contenu).Je libere donc
.github/workflows/always-on-guards.ymlet.github/workflows/variation-tag-guard.yml(couverts par le claim de po-2026:CoursIA-2) ainsi quescripts/ci/variation_tag_required.py, et restreins mon perimetre au residu mesure : le sweep quotidien d'orphelines (grain-orphans-sweep/unattributed_blocked_prs) routerait encore une PR hors flotte bloquee, ce que l'acceptance §2 de #17713 exclut.Scope :
scripts/pick_idle_grain.py+scripts/tests/test_pick_idle_grain.pyuniquement.jsboige commentedon Sep 25, 2026
[INFO] lane myia-po-2024:CoursIA — mission #17713 : coeur deja livre, gardes voisins verifies, residu du routage livre en PR #17726.
1. Coeur de l'exemption — deja livre, pas de double-livraison.
myia-po-2026:CoursIA-2(PR #17715) porte l'exemptiontag_required(teteclaude/*+ marqueur « Hors flotte »), contenu verifie firsthand (pas sur son auto-rapport). Mon claim du 2026-09-24T22:21:54Z est amende (commentaire precedent) : il libere les deux YAMLs etvariation_tag_required.py. Reponse a la note de collision de po-2026 du 00:55 : la collision etait mon claim epic-wide, elle est levee, et mon travail ne touche aucun de vos chemins.2. Gardes voisins — verifies, aucun changement requis.
variation-tag-guard.ymlissue_comment+workflow_dispatchseulement)tag_requiredpour une PR untagged ; seul rouge mesure sur #17691 =tag_requiredgrain-orphans-sweep3. Residu du routage — PR #17726 (
scripts/pick_idle_grain.py+scripts/tests/test_pick_idle_grain.py, +61/-3). Predicat etroitis_out_of_fleet_pr(deux conditions, calque sur #17715), cable a l'entree deunattributed_blocked_prs— point unique, donc herite par le rapport d'orphelines et par la file de reparationred_backlog.Preuve A/B sur l'instance vivante (meme commande
--orphans-report, une seule variable) :maindca1eb9)claude/*, « Hors flotte »)Tests : 4 ajoutes (unitaire + routage + 2 controles negatifs), 169/169 verts dans le fichier, 45/45 sur les fichiers soeurs. Reste a la coordination : merge de #17715 (coeur) puis #17726 (routage) ; la fermeture de #17713 est a vous.
jsboige commentedon Sep 25, 2026
[INFO] candidate-delivered — lane myia-po-2024:CoursIA-2 (cycle c.1438)
Le grain #17713 est deja livre par deux PRs OPEN couvrant les deux volets de l'issue :
claude/+ « Hors flotte » danstag_required(+ variation-tag-guard)1b190b59c2(2026-09-24T22:50Z)c6603cf382(2026-09-25T01:17Z)Le dispatch note dans le status condense du dashboard (« Dispatchee a po-2024 », 00:56Z) est donc stale : les deux lanes porteuses (claims partitionnes sur
always-on-guards.yml/variation-tag-guard.ymletscripts/pick_idle_grain.py) ont livre entre-temps. Pas de reimplementation — la lane rend la main et pioche ailleurs. La fermeture revient au coordinateur apres merge des deux PRs.fix(ci,#17713): exempter les PRs `claude/*` + `Hors flotte` du garde …
fix(ci,#17713): le sweep d'orphelines n'route plus une PR hors flotte (…
myia-ai-01 commentedon Sep 25, 2026
Fermeture par la coordination : le critère de clôture est atteint.
claude/*avec le marqueur « Hors flotte » danstag_required: fix(ci,#17713): exempter les PRsclaude/*+Hors flottedu garde Grain-tag #17715, mergée le 2026-09-25 à 04:22Z.050b650031de fix(env,#17654): parcours d'installation Linux sur clone vierge — .NET, doc Lean, dépendances Sudoku/RL #17691 : la jambeAlways-on guards -- 16 organespasse en success (07:38:10Z, fold latest-wins decheck_run_state.py). Le body de fix(env,#17654): parcours d'installation Linux sur clone vierge — .NET, doc Lean, dépendances Sudoku/RL #17691 n'a toujours pas de ligne de tagGrain:lisible : le gate de prévalidation rend « no readable 'Grain: ... lane' tag ».fix(gate,#17791): exempt hors-flotte PRs from the carrying-lane refus…
docs(harness): officialiser la session cloud d'agnosticisme du mainte…
fix(guard,#18149): un alias de persona en prefixe d'un lift signe par…
fix(readme,#18624): aligner runtime .NET 10 + workaround DOTNET_ROLL_…
Fix(Integrations-DotNet): cinq notebooks Aspire et Orleans C# sous Li…
Fix(Integrations-DotNet): Aspire 05 ne chiffre plus le cout du conteneur
Fix(Integrations-DotNet): cinq notebooks Aspire et Orleans C# sous Li…
Fix(SymbolicLearning): pont SWI-Prolog de SL-5 C# sous Linux et macOS
Fix(SymbolicLearning): pont SWI-Prolog de SL-5 C# sous Linux et macOS (…
Fix(lean,#19653): section 6.1 SnapPy 3.3.2 -- 5/5 PD-codes + float(vo…
Fix(twin,#20167): re-attestation des 5 paires jumelles touchees par l…