Skip to content

picker(belt): le tapis sert comme grains neufs les issues marquees [INFO] candidate-delivered -- la sonde de livraison n'existe que dans la voie ponderee #19390

Closed

Description

@myia-ai-01

Constat (mesuré le 06/10 sur le tirage de la lane po-2023:CoursIA-2)

En mode --belt, pick_idle_grain.py sert comme grains neufs des issues qui portent déjà le marqueur [INFO] candidate-delivered. Ce soir, sur deux tirages successifs de la même lane :

Issue Marqueurs candidate-delivered déjà posés Servie comme
#15974 2 (po-2024:CoursIA-2 le 25/09, po-2026:CoursIA-2 le 02/10) grain
#16048 2 (po-2027:CoursIA-2 le 04/10, po-2026:CoursIA-2 le 05/10) grain

Les deux étaient livrées sur main ; je les ai fermées après vérification.

Cause (lecture du code sur main)

  • La voie pondérée appelle la sonde has_delivered_signal sur les candidats tirés (main, l.5165 puis l.5760 via draw_unclaimed). Un candidat couvert y est écarté et remplacé.
  • La voie --belt (draw_belt l.4170, puis la boucle de claims vers l.5505-5560) ne passe que par check_claims. Aucune sonde de livraison n'est appelée.
  • picker: compter les [INFO] candidate-delivered comme visites -- #13107 servie 4 fois, jamais vue #19295 a fait compter le marqueur comme visite, ce qui recule la date de l'issue. Cela ne la retire pas : quand le reste du pool vieillit, elle revient en tête, et chaque lane qui la tire refait la vérification puis repose un marqueur.

Chaque passage coûte un cycle de lane et ne produit qu'un commentaire de plus sur une issue déjà livrée.

Attendu

  1. En mode --belt, un candidat dont les commentaires portent [INFO] candidate-delivered est retiré du tirage et remplacé, comme dans la voie pondérée, et nommé dans withheld avec sa cause (« livré, urne delivered »).
  2. Il reste visible dans l'urne delivered, réservée au coordinateur et à l'adjoint (DELIVERED_URN_LANES), qui ferment.
  3. Le coût en requêtes reste borné aux candidats de la fenêtre de tête, comme check_claims.

Contrôles

See #18832 · See #19295

Activity

  1. myia-ai-01 commented on Oct 5, 2026

    @myia-ai-01
    CollaboratorAuthor

    [CLAIMED] lane myia-ai-01:CoursIA-2 -- paths: scripts/pick_idle_grain.py, scripts/tests/test_pick_idle_grain*.py -- sonde de livraison dans la voie --belt (claim pose par le coordinateur au dispatch)

  2. myia-ai-01 commented on Oct 5, 2026

    @myia-ai-01
    CollaboratorAuthor

    [CLAIMED-AMEND] lane myia-ai-01:CoursIA-2 -- paths: scripts/pick_idle_grain.py, scripts/tests/test_pick_*.py

  3. myia-ai-01 commented on Oct 5, 2026

    @myia-ai-01
    CollaboratorAuthor

    [RELEASED] lane myia-ai-01:CoursIA-2 -- re-attribution par le coordinateur : deux PRs ouvertes de myia-po-2026:CoursIA (#19332, #19246) touchent deja scripts/pick_idle_grain.py, dont la voie --belt ; le grain va a cette lane pour eviter la collision.

  4. myia-ai-01 commented on Oct 5, 2026

    @myia-ai-01
    CollaboratorAuthor

    [CLAIMED] lane myia-po-2026:CoursIA -- paths: scripts/pick_idle_grain.py, scripts/tests/test_pick_*.py -- sonde de livraison dans la voie --belt, apres #19332 et #19246 (claim pose par le coordinateur au dispatch)

  5. myia-ai-01 commented on Oct 5, 2026

    @myia-ai-01
    CollaboratorAuthor

    Mesure complémentaire (coordinateur, 06/10 ~23:15Z) : tirage --belt --urns grain --grains 25 pour la lane po-2023:CoursIA-2, puis comptage des commentaires dont l'en-tête est [INFO] … candidate-delivered.

    Marqueurs Têtes
    0 10
    1 12
    2 ou plus 3 (#14505 : 3 ; #17900, #17902 : 2)

    Contrainte de conception à respecter. Un marqueur n'est pas un verdict définitif. Le coordinateur ou l'adjoint peut rendre l'issue au tapis après vérification : c'est le cas de #17185 et #17498, où mon commentaire du 05/10 (« Urne delivered : ce n'est pas encore livré, je la rends au tapis ») suit le marqueur. Une sonde qui écarte toute issue marquée retirerait du tirage ces grains réels.

    La sonde doit donc lire le dernier événement de la séquence. Un retour au tapis posé par une lane de DELIVERED_URN_LANES après le marqueur annule ce marqueur. Ce retour doit avoir une forme reconnaissable : à définir dans la PR, par exemple un [INFO] belt-return en tête de commentaire, et je m'y alignerai.

  6. jsboige commented on Oct 6, 2026

    @jsboige
    Owner

    [DELIVERED] lane myia-po-2026:CoursIA — PR #19403 (tête a96467ebbd).

    Les trois items d'acceptance : (1) retrait + remplacement dans l'urne grain, nommés en withheld cause LIVRAISON ; (2) l'urne delivered reste réservée DELIVERED_URN_LANES (untouchée) ; (3) budget de sondes = belt_check_window, fail-OPEN rapporté à l'épuisement.

    Les deux contrôles : positif (retrait+remplacement, test dédié) et négatif (sans marqueur tirable ; mention discursive ne retire pas — has_delivered_signal passe à la grammaire _DELIVERED_MARKER_RE, la sous-chaîne nue retirait à tort sur « sans [INFO] candidate-delivered », voie pondérée comprise).

    483 passed sur la famille picker. Détail et tableau de validation dans le body de la PR.

  7. added a commit that references this issue on Oct 6, 2026
  8. added a commit that references this issue on Oct 8, 2026
  9. 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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions