Constat
J'ai testé en live le mode --belt de #18836 à la tête 14f5856ca6, et deux écarts restent hors de cette PR.
1. La dernière visite n'est lue que sur 14 jours
last_delivery_per_issue est appelé avec days=DEFAULT_WINDOW_DAYS, qui vaut 14 (scripts/series_saturation.py:51). Une issue servie il y a plus de 14 jours n'a donc pas de last_delivery_stamp. belt_sort_key la classe alors à sa date de création, comme si elle n'avait jamais été servie.
Exemple mesuré : #1203 sort en tête du tapis, avec le libellé [NEVER] et 139 jours depuis la dernière livraison. Pourtant, des PRs mergées la citent : #15404 le 2026-09-09, #14984 et #13886 avant.
Conséquence : une vieille issue servie il y a 15 à 30 jours passe devant une issue créée en juin ou en août que personne n'a jamais servie. La règle de #18832 veut l'inverse. La file trie sur la dernière visite réelle, sinon sur la date de création.
Dans le régime visé (environ 100 grains par jour pour environ 500 issues), toute issue est revisitée en moins de 14 jours et l'écart disparaît. Mais il fausse l'ordre de démarrage, et tout régime plus lent. Il fausse aussi l'affichage : la colonne indique [NEVER] pour des issues déjà servies.
Attendu : en mode --belt, la dernière visite couvre tout l'historique des PRs mergées, ou au moins une fenêtre nettement plus longue qu'un tour complet de la file. Le libellé [NEVER] ne doit apparaître que pour une issue qu'aucune PR mergée ne cite.
Contrôle : après le correctif, --belt --json ne doit plus classer #1203 en tête. Son last_delivery_stamp doit valoir au moins 2026-09-09.
2. --json peut rendre deux objets à la suite
Pour une lane qui a des PRs rouges, la commande --belt --lane myia-po-2025:CoursIA --json imprime d'abord l'objet du garde rouge (lane, mode, assignment, red…), puis l'objet du tapis. json.load échoue avec Extra data. Un consommateur doit donc découper la sortie à la main.
Attendu : un seul document JSON sur la sortie, par exemple avec le garde rouge comme clé de l'objet du tapis.
Origine
Ces deux points ont été relevés pendant la levée de ma réserve sur #18836. Ils ne bloquent pas ce merge : ils sont reportés ici sciemment. Parent : #18832.
Constat
J'ai testé en live le mode
--beltde #18836 à la tête14f5856ca6, et deux écarts restent hors de cette PR.1. La dernière visite n'est lue que sur 14 jours
last_delivery_per_issueest appelé avecdays=DEFAULT_WINDOW_DAYS, qui vaut 14 (scripts/series_saturation.py:51). Une issue servie il y a plus de 14 jours n'a donc pas delast_delivery_stamp.belt_sort_keyla classe alors à sa date de création, comme si elle n'avait jamais été servie.Exemple mesuré : #1203 sort en tête du tapis, avec le libellé
[NEVER]et 139 jours depuis la dernière livraison. Pourtant, des PRs mergées la citent : #15404 le 2026-09-09, #14984 et #13886 avant.Conséquence : une vieille issue servie il y a 15 à 30 jours passe devant une issue créée en juin ou en août que personne n'a jamais servie. La règle de #18832 veut l'inverse. La file trie sur la dernière visite réelle, sinon sur la date de création.
Dans le régime visé (environ 100 grains par jour pour environ 500 issues), toute issue est revisitée en moins de 14 jours et l'écart disparaît. Mais il fausse l'ordre de démarrage, et tout régime plus lent. Il fausse aussi l'affichage : la colonne indique
[NEVER]pour des issues déjà servies.Attendu : en mode
--belt, la dernière visite couvre tout l'historique des PRs mergées, ou au moins une fenêtre nettement plus longue qu'un tour complet de la file. Le libellé[NEVER]ne doit apparaître que pour une issue qu'aucune PR mergée ne cite.Contrôle : après le correctif,
--belt --jsonne doit plus classer #1203 en tête. Sonlast_delivery_stampdoit valoir au moins2026-09-09.2.
--jsonpeut rendre deux objets à la suitePour une lane qui a des PRs rouges, la commande
--belt --lane myia-po-2025:CoursIA --jsonimprime d'abord l'objet du garde rouge (lane,mode,assignment,red…), puis l'objet du tapis.json.loadéchoue avecExtra data. Un consommateur doit donc découper la sortie à la main.Attendu : un seul document JSON sur la sortie, par exemple avec le garde rouge comme clé de l'objet du tapis.
Origine
Ces deux points ont été relevés pendant la levée de ma réserve sur #18836. Ils ne bloquent pas ce merge : ils sont reportés ici sciemment. Parent : #18832.