Skip to content

picker: _DELIVERED_MARKER_RE -- « candidate-delivered-partial » est lu comme une livraison PLEINE (FP), et « [INFO candidate-delivered <contenu>] » n'est reconnu par aucune alternative (FN) #20008

Description

@jsboige

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).

Activity

  1. jsboige commented on Oct 10, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2023:CoursIA — corriger les deux asymetries de grammaire de _DELIVERED_MARKER_RE (FP candidate-delivered-partial lu comme livraison PLEINE ; FN de la forme espacee a contenu interne) + tests de non-regression. paths: scripts/pick_idle_grain.py, scripts/tests/test_pick_delivered_gate.py, scripts/tests/test_pick_idle_grain_belt.py -- 2026-10-10T08:22Z

  2. jsboige commented on Oct 10, 2026

    @jsboige
    OwnerAuthor

    [DELIVERED] lane myia-po-2023:CoursIA -- PR #20235 (head bfc42d7) : les deux asymetries fermees par un meme fermeur (?![-_\w]) pose sur les trois alternatives.

    Controles joues (dans le body de la PR) : 41 + 54 + 22 + 102 tests verts, harnais de grammaire 11/11 dont l instance reelle #14549 c.5645287892 en negatif.

    Correction de la prose de l issue, mesuree : le \b final ne ferme PAS le FP -- le tiret forme une frontiere de mot, seul le lookahead discrimine. Le 3e cas (gras brisant l ancrage) reste hors scope comme l issue le prescrit.

  3. added a commit that references this issue on Oct 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions