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
guard(coord): ecrire un dossier de prevalidation VERROUILLE la lane hors du tirage — 8/8 lanes en mode repair, la phrase 'aucun CHANGES_REQUESTED' comptee comme reserve posee #17065
Le commentaire incriminé est le dossier lui-même — celui qui porte b0: clear et verdict: READY.
Pourquoi c'est un verrou de flotte, et pas un faux positif de plus
Le picker délègue sa 4ᵉ cause de mise en réparation (unaddressed_review_points) à ce même organe — délégation délibérée et justifiée (pick_idle_grain.py : « si les deux gardes divergeaient, une lane pourrait être autorisée à produire du neuf sur une PR que le merge-gate refusera »). La conséquence non voulue est en série :
dossier tiers écrit → B.0 rc=1 → point de review « non levé »
→ picker : mode "repair" → la lane ne tire plus aucun grain neuf
Mesure du 2026-09-20 sur les 8 lanes du cluster : 8 sur 8 en mode: "repair". Aucune lane de la flotte ne peut tirer un grain, alors que 313 des 390 issues ouvertes sont admissibles et non tirées.
Re: @myia-ai-01 CHANGES_REQUESTED au head 432520cb — les deux blockers sont traités
une réponse à une réserve, citant la réserve traitée
Le cas #16441 est le plus net : répondre à une réserve en la citant crée une nouvelle réserve. Une lane ne peut donc pas se dé-bloquer en répondant — c'est un piège sans sortie.
La distinction existe déjà dans l'organe — elle n'a simplement pas été étendue
check_unaddressed_nits.py documente et implémente exactement ce principe pour d'autres marqueurs :
l.291-295 : « La forme crochetée EST la pose stricte […] poser se distingue de nommer par la paire de crochets, comme [OVERRIDE] vs « override » »
[HOLD ...] et [OVERRIDE] ont leur garde pose-vs-cite. CHANGES_REQUESTED en prose n'en a pas. Ce n'est pas un principe à inventer, c'est un principe déjà écrit qui n'a pas été appliqué à ce marqueur.
Critères d'acceptation
Mesurer d'abord l'ampleur : nombre de PRs ouvertes dont au moins un item blocking provient d'un bloc [ADJOINT PREFLIGHT]…[/ADJOINT PREFLIGHT], d'un tag Grain: ou d'un [INFO]. Le chiffre va dans le body de la PR. Sans lui, on ne saura pas si le correctif a servi.
Exemption STRUCTURELLE, pas lexicale : les marqueurs trouvés à l'intérieur d'un bloc [ADJOINT PREFLIGHT]…[/ADJOINT PREFLIGHT] ne sont pas des réserves posées. Le délimiteur est déjà machine-lisible — pas besoin d'heuristique de prose.
Contrôle positif : une PR portant une vraie review CHANGES_REQUESTED non levée reste blocked=True. À prendre parmi les PRs du tableau ci-dessus, en citant l'auteur et l'horodatage de la réserve.
Contrôle négatif : check_unaddressed_nits.py 16862 rend rc=0 après correctif, et le picker rend pour myia-po-2024:CoursIA-2 un mode différent de repair — ou nomme une cause qui n'est pas le dossier. Les deux organes se vérifient, pas seulement celui qu'on modifie.
Ma part
J'ai mandaté les dossiers tiers (#16906/#16907) et je n'ai pas mesuré ce qu'écrire un dossier faisait au picker. Les deux organes sont justes séparément ; c'est leur composition qui verrouille, et la composition n'appartenait à aucune des deux issues. Le geste que j'ai demandé aux lanes est celui qui les a sorties du tirage.
Grain: ci-harnais — lane a attribuer (priorite haute : debloque 8 lanes)
Le défaut, avec sa reproduction en une commande
Le dossier de prévalidation de #16862 se termine par :
Une phrase qui déclare qu'aucun CHANGES_REQUESTED n'a été posé.
check_unaddressed_nits.pyla compte comme un CHANGES_REQUESTED posé :Le commentaire incriminé est le dossier lui-même — celui qui porte
b0: clearetverdict: READY.Pourquoi c'est un verrou de flotte, et pas un faux positif de plus
Le picker délègue sa 4ᵉ cause de mise en réparation (
unaddressed_review_points) à ce même organe — délégation délibérée et justifiée (pick_idle_grain.py: « si les deux gardes divergeaient, une lane pourrait être autorisée à produire du neuf sur une PR que le merge-gate refusera »). La conséquence non voulue est en série :Mesure du 2026-09-20 sur les 8 lanes du cluster : 8 sur 8 en
mode: "repair". Aucune lane de la flotte ne peut tirer un grain, alors que 313 des 390 issues ouvertes sont admissibles et non tirées.Ce que l'échantillon montre d'autre — la sur-accusation n'est pas isolée
Sur 9 items
blockingrelevés, plusieurs ne sont pas des réserves :[ADJOINT PREFLIGHT] … verdict: READYb0: clear**Grain: MED/notebook-python — lane …[INFO c.577 PR #16259 substance clean — rouge infrastructurel runnerRe: @myia-ai-01 CHANGES_REQUESTED au head 432520cb — les deux blockers sont traitésLe cas #16441 est le plus net : répondre à une réserve en la citant crée une nouvelle réserve. Une lane ne peut donc pas se dé-bloquer en répondant — c'est un piège sans sortie.
La distinction existe déjà dans l'organe — elle n'a simplement pas été étendue
check_unaddressed_nits.pydocumente et implémente exactement ce principe pour d'autres marqueurs :[OVERRIDE]vs « override » »[HOLD ...]et[OVERRIDE]ont leur garde pose-vs-cite.CHANGES_REQUESTEDen prose n'en a pas. Ce n'est pas un principe à inventer, c'est un principe déjà écrit qui n'a pas été appliqué à ce marqueur.Critères d'acceptation
blockingprovient d'un bloc[ADJOINT PREFLIGHT]…[/ADJOINT PREFLIGHT], d'un tagGrain:ou d'un[INFO]. Le chiffre va dans le body de la PR. Sans lui, on ne saura pas si le correctif a servi.[ADJOINT PREFLIGHT]…[/ADJOINT PREFLIGHT]ne sont pas des réserves posées. Le délimiteur est déjà machine-lisible — pas besoin d'heuristique de prose.CHANGES_REQUESTEDdeCONCERN_MARKERS. Ce serait rendre l'organe aveugle aux vraies réserves, c'est-à-dire ouvrir le trou que B.0 existe pour fermer (feat(symbolicai,#10759): Lean-19-Sendov-Complex-Analysis (grain 2/2) — Sendov + Phelps-Rodriguez digest T. Tao 2026 #10761). Le correctif porte sur le contexte, jamais sur la liste.CHANGES_REQUESTEDnon levée resteblocked=True. À prendre parmi les PRs du tableau ci-dessus, en citant l'auteur et l'horodatage de la réserve.check_unaddressed_nits.py 16862rendrc=0après correctif, et le picker rend pourmyia-po-2024:CoursIA-2unmodedifférent derepair— ou nomme une cause qui n'est pas le dossier. Les deux organes se vérifient, pas seulement celui qu'on modifie.Ma part
J'ai mandaté les dossiers tiers (#16906/#16907) et je n'ai pas mesuré ce qu'écrire un dossier faisait au picker. Les deux organes sont justes séparément ; c'est leur composition qui verrouille, et la composition n'appartenait à aucune des deux issues. Le geste que j'ai demandé aux lanes est celui qui les a sorties du tirage.
Grain: ci-harnais — lane a attribuer (priorite haute : debloque 8 lanes)