Organe : scripts/review_coverage.py (tracker d'origine #11232, CLOSED — livré). Label large-pr-no-review, seuil 300 additions, balayage quotidien.
Défaut 1 — faux négatif prouvé : le périmètre est reviews[] seul
fetch_open_prs() projette number,title,isDraft,baseRefName,additions,reviews,author,url et classify() décide sur len(pr["reviews"]) > 0. Une passe de review publiée en commentaire d'issue n'existe donc pas pour l'organe — or c'est un mode d'émission documenté dans ce cluster (précédent #3612 : la couverture se lit reviews ∪ issues/N/comments, attribution par tag d'abord, login en repli).
Deux cas mesurés firsthand le 15/09 :
| PR |
passe taguée dans le fil |
l'organe publie |
| #16133 |
VERDICT: CONCERNS **[Hermes]** — 2026-09-14T12:29:47Z |
« n'a reçu aucune review — ni bot, ni humaine » — 12:38:21Z (+9 min) |
| #16145 |
VERDICT: LGTM **[Hermes]** — 2026-09-14T12:31:38Z |
« aucune review » — 12:38:10Z (+6 min) |
Les deux portent toujours le label à l'instant de ce ticket.
Défaut 2 — le label survit à une review (promesse plus fine que le mécanisme)
Le commentaire promet « Le label sera retiré dès qu'une review arrive ». La mécanique est un balayage quotidien.
Conséquence opérationnelle (la plus coûteuse)
Le commentaire de l'organe invite à agir « il faut obtenir une review (Hermes, ai-01, ou review humaine) » — sur des PR déjà revues. C'est une fabrique de doublons, exactement ce que le garde anti-doublon #3476 protège par l'autre bout de la chaîne.
Ampleur mesurée
Label large-pr-no-review, state=open, au 2026-09-15 : 8 PR — #16145, #16136, #16133, #16082, #16054, #16029, #15981, #15942.
→ 2 fausses prouvées, 2 périmées probables, 4 cohérentes. Soit 50 % du jeu labellisé qui ne décrit pas l'état de la PR.
Remède proposé (pas de nouvelle mesure, un périmètre)
- Compter
reviews ∪ issues/N/comments dans classify() (tag d'abord, login en repli), puis re-dériver les 8 labels.
- Aligner la cadence de retrait sur la promesse du commentaire, ou reformuler la promesse (« retiré au prochain balayage »).
Ce que ce ticket n'est pas
Il ne porte pas la dette de review des PR concernées. #16136, #16082, #15981, #15942 ne portent aucune passe taguée dans les deux surfaces (reviews ∪ commentaires) à ce constat — une passe non taguée n'est pas exclue par cette mesure ; c'est un fait de file, à traiter par la lane review, indépendamment de ce défaut d'organe.
— Constat du cycle review NanoClaw (myia-ai-01), 2026-09-15 10:15Z, sur signal de la lane myia-po-2026 (stock « jamais revues »).
Organe :
scripts/review_coverage.py(tracker d'origine #11232, CLOSED — livré). Labellarge-pr-no-review, seuil 300 additions, balayage quotidien.Défaut 1 — faux négatif prouvé : le périmètre est
reviews[]seulfetch_open_prs()projettenumber,title,isDraft,baseRefName,additions,reviews,author,urletclassify()décide surlen(pr["reviews"]) > 0. Une passe de review publiée en commentaire d'issue n'existe donc pas pour l'organe — or c'est un mode d'émission documenté dans ce cluster (précédent #3612 : la couverture se litreviews ∪ issues/N/comments, attribution par tag d'abord, login en repli).Deux cas mesurés firsthand le 15/09 :
VERDICT: CONCERNS **[Hermes]**— 2026-09-14T12:29:47ZVERDICT: LGTM **[Hermes]**— 2026-09-14T12:31:38ZLes deux portent toujours le label à l'instant de ce ticket.
Défaut 2 — le label survit à une review (promesse plus fine que le mécanisme)
Le commentaire promet « Le label sera retiré dès qu'une review arrive ». La mécanique est un balayage quotidien.
reviews[] > 0(donc classeclearpour le prédicat de l'organe lui-même) et le label est toujours posé.Conséquence opérationnelle (la plus coûteuse)
Le commentaire de l'organe invite à agir « il faut obtenir une review (Hermes, ai-01, ou review humaine) » — sur des PR déjà revues. C'est une fabrique de doublons, exactement ce que le garde anti-doublon #3476 protège par l'autre bout de la chaîne.
Ampleur mesurée
Label
large-pr-no-review,state=open, au 2026-09-15 : 8 PR — #16145, #16136, #16133, #16082, #16054, #16029, #15981, #15942.→ 2 fausses prouvées, 2 périmées probables, 4 cohérentes. Soit 50 % du jeu labellisé qui ne décrit pas l'état de la PR.
Remède proposé (pas de nouvelle mesure, un périmètre)
reviews ∪ issues/N/commentsdansclassify()(tag d'abord, login en repli), puis re-dériver les 8 labels.Ce que ce ticket n'est pas
Il ne porte pas la dette de review des PR concernées. #16136, #16082, #15981, #15942 ne portent aucune passe taguée dans les deux surfaces (reviews ∪ commentaires) à ce constat — une passe non taguée n'est pas exclue par cette mesure ; c'est un fait de file, à traiter par la lane review, indépendamment de ce défaut d'organe.
— Constat du cycle review NanoClaw (myia-ai-01), 2026-09-15 10:15Z, sur signal de la lane myia-po-2026 (stock « jamais revues »).