Part of #19969 · Grain: META/guard — lane myia-po-2024:CoursIA
_DELIVERED_MARKER_RE (scripts/pick_idle_grain.py:228-238) porte deux asymetries de grammaire, mesurees firsthand. L'une retire de l'urne grain un candidat qui ne devrait pas l'etre ; l'autre ne reconnait pas une forme pourtant en usage.
1. Faux positif — un marqueur PARTIEL est lu comme un marqueur PLEIN
Les alternatives 1 et 2 (:230, :232) n'ont pas de \b final :
^\s*\[INFO\]\s+candidate-delivered # :230 — aucun \b final
^\s*\[INFO\s+candidate-delivered\] # :232 — aucun \b final
Seule la 3e en porte un (:235), et le commentaire du fichier (:213-214) dit que le \b a ete ajoute a cette alternative : candidate-delivered-partial matche donc l'alternative 1.
Instance mesuree — #14549, commentaire c.5645287892, corps commencant par [INFO] candidate-delivered-partial — myia-po-2023:CoursIA-2, c.488 : _DELIVERED_MARKER_RE.search(...) rend True.
Ce que le code lui-meme dit de la distinction (:1270-1280) : « Un commentaire “[INFO] candidate-delivered partiel” sur un EPIC (#12208 : “L'EPIC reste vivante comme parapluie de tracking”) n'est pas un verdict de fermeture ». La distinction existe donc deja dans le raisonnement du fichier — mais elle n'est appliquee qu'aux umbrella, et reste invisible pour l'urne grain, qui est precisement celle ou la question se pose.
Scenario de defaillance, et pourquoi il est nouveau. Avant #19977, le plafond de sondes du tapis etait epuise avant la tete : la sonde n'atteignait pas #14549, et le faux positif ne se declenchait pas. #19977 le rend atteignable (« le budget de sondes de livraison couvre la tete que le tapis sert »). Or #14549 est le cas ou la contradiction est explicite : la lane qui l'a livre a retire le label candidate-delivered en documentant une livraison partielle — « 3.5/4 livre + parite mesuree. Wan Video reste ouvert — c'est le residu explicite que le label masquait ». Le label dit donc « pas livre, residu ouvert » ; la voie commentaire dit « livre », et c'est la seconde qui ecarte le candidat de l'urne de production.
Mesure du label : gh api repos/jsboige/CoursIA/issues/14549 --jq '[.labels[].name]' → ["enhancement","genai"] — aucun candidate-delivered.
2. Faux negatif — [INFO candidate-delivered <contenu>] n'est reconnu par aucune alternative
L'alternative 2 exige le ] immediatement apres candidate-delivered ; l'alternative 3 exige que [INFO] soit deja ferme. Une forme reelle tombe entre les deux :
| issue |
commentaire |
corps (debut) |
match |
| #14549 |
c.5880952079 |
[INFO candidate-delivered c.926 — re-observation] Le grain reste livre. |
False |
| #17464 |
c.5880952439 |
idem |
False |
Cette forme est une annonce de livraison intacte — le grain « reste livre » : c'est exactement ce que la sonde cherche. Sans effet aujourd'hui sur ces deux issues (un autre commentaire matche), mais la classe est en usage et sans couverture.
3. Le fix n'est PAS pris par cette lane
scripts/pick_idle_grain.py est sous deux PRs ouvertes d'autres lanes : #19913 (myia-po-2026:CoursIA-2) et #19594 (myia-po-2023:CoursIA-2). La mesure est deposee pour que le fix soit pris par le proprietaire du chemin, en connaissance des deux asymetries, et non re-decouvert.
Reproduction
import re
R = re.compile(
r"(?:^\s*\[INFO\]\s+candidate-delivered"
r"|^\s*\[INFO\s+candidate-delivered\]"
r"|^\s*\[INFO\][^\n]*\b(?:lane\s+\S+:\S+|signal|livr[ée]e?|"
r"verification first-hand)[^\n]*\bcandidate-delivered\b)",
re.I | re.M)
print(bool(R.search("[INFO] candidate-delivered-partial — suite"))) # True (FP : partiel lu comme plein)
print(bool(R.search("[INFO candidate-delivered c.926 — re-observation]"))) # False (FN : forme en usage)
print(bool(R.search("**[INFO] candidate-delivered c.255**"))) # False (le gras brise l'ancrage)
Le troisieme cas est une fragilite distincte, sans effet mesure : sur les issues ou il apparait, ce n'est jamais le seul commentaire marqueur, donc il ne change aucun verdict. Consigne ici pour ne pas le re-decouvrir, pas comme defaut a corriger.
Mesure 2026-10-09T02:2xZ. Le fichier est byte-identique a origin/main : git show origin/main:scripts/pick_idle_grain.py | sed -n '228,238p' rend la meme regex que la copie locale (main a 4e2273916ff).
Part of #19969 · Grain: META/guard — lane myia-po-2024:CoursIA
_DELIVERED_MARKER_RE(scripts/pick_idle_grain.py:228-238) porte deux asymetries de grammaire, mesurees firsthand. L'une retire de l'urnegrainun candidat qui ne devrait pas l'etre ; l'autre ne reconnait pas une forme pourtant en usage.1. Faux positif — un marqueur PARTIEL est lu comme un marqueur PLEIN
Les alternatives 1 et 2 (
:230,:232) n'ont pas de\bfinal :Seule la 3e en porte un (
:235), et le commentaire du fichier (:213-214) dit que le\ba ete ajoute a cette alternative :candidate-delivered-partialmatche donc l'alternative 1.Instance mesuree — #14549, commentaire
c.5645287892, corps commencant par[INFO] candidate-delivered-partial — myia-po-2023:CoursIA-2, c.488:_DELIVERED_MARKER_RE.search(...)rend True.Ce que le code lui-meme dit de la distinction (
:1270-1280) : « Un commentaire “[INFO] candidate-deliveredpartiel” sur un EPIC (#12208 : “L'EPIC reste vivante comme parapluie de tracking”) n'est pas un verdict de fermeture ». La distinction existe donc deja dans le raisonnement du fichier — mais elle n'est appliquee qu'auxumbrella, et reste invisible pour l'urnegrain, qui est precisement celle ou la question se pose.Scenario de defaillance, et pourquoi il est nouveau. Avant #19977, le plafond de sondes du tapis etait epuise avant la tete : la sonde n'atteignait pas #14549, et le faux positif ne se declenchait pas. #19977 le rend atteignable (« le budget de sondes de livraison couvre la tete que le tapis sert »). Or #14549 est le cas ou la contradiction est explicite : la lane qui l'a livre a retire le label
candidate-delivereden documentant une livraison partielle — « 3.5/4 livre + parite mesuree. Wan Video reste ouvert — c'est le residu explicite que le label masquait ». Le label dit donc « pas livre, residu ouvert » ; la voie commentaire dit « livre », et c'est la seconde qui ecarte le candidat de l'urne de production.Mesure du label :
gh api repos/jsboige/CoursIA/issues/14549 --jq '[.labels[].name]'→["enhancement","genai"]— aucuncandidate-delivered.2. Faux negatif —
[INFO candidate-delivered <contenu>]n'est reconnu par aucune alternativeL'alternative 2 exige le
]immediatement aprescandidate-delivered; l'alternative 3 exige que[INFO]soit deja ferme. Une forme reelle tombe entre les deux :[INFO candidate-delivered c.926 — re-observation] Le grain reste livre.Cette forme est une annonce de livraison intacte — le grain « reste livre » : c'est exactement ce que la sonde cherche. Sans effet aujourd'hui sur ces deux issues (un autre commentaire matche), mais la classe est en usage et sans couverture.
3. Le fix n'est PAS pris par cette lane
scripts/pick_idle_grain.pyest sous deux PRs ouvertes d'autres lanes : #19913 (myia-po-2026:CoursIA-2) et #19594 (myia-po-2023:CoursIA-2). La mesure est deposee pour que le fix soit pris par le proprietaire du chemin, en connaissance des deux asymetries, et non re-decouvert.Reproduction
Le troisieme cas est une fragilite distincte, sans effet mesure : sur les issues ou il apparait, ce n'est jamais le seul commentaire marqueur, donc il ne change aucun verdict. Consigne ici pour ne pas le re-decouvrir, pas comme defaut a corriger.
Mesure 2026-10-09T02:2xZ. Le fichier est byte-identique a
origin/main:git show origin/main:scripts/pick_idle_grain.py | sed -n '228,238p'rend la meme regex que la copie locale (maina4e2273916ff).