You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ci(collision): le verdict terminal affirme « la substance est consommee » sur une observation de CHEMINS seuls — il fait fermer du travail valide (#15454) #15768
Pour une paire dont un cote est merge, l'organe rend le verdict TIER_TERMINAL (#15578) et affirme une conclusion semantique — « la substance est consommee », « du travail deja integre » — a partir d'une observation purement syntaxique : les deux PRs partagent des chemins de fichiers, et le recouvrement depasse TERMINAL_MIN_OVERLAP_RATIO = 0.5.
Or l'organe ne compare jamais le contenu des deux cotes. Mesure sur scripts/check_pr_path_collisions.py (origin/mainb5e15b39b5) : aucune occurrence de diff, patch, blob, hunk, additions, deletions. Les seules mesures sont l'ensemble des chemins partages et leur ratio.
Deux PRs peuvent donc partager 100 % de leurs chemins avec zero recouvrement de substance : l'une colore un bloc mermaid dans un README.md, l'autre segmente un paragraphe-mur du meme fichier. Le ratio mesure un recouvrement de chemins, jamais de substance — il ne discrimine pas ce cas.
Instance — mesuree firsthand
Quand (UTC)
Fait
2026-09-10T21:14:12Z
le garde rend sur #15454 : « #15502 est deja sur main, la substance est consommee... travail deja integre »
2026-09-11T04:17:52Z
#15502 merge — fix(probas,#15022) : couleur de texte explicite sur les noeuds mermaid styles — un fix de couleur
2026-09-11T23:39Z
ai-01 mesure : le paragraphe-mur fait 3246 c et il est integralement sur main
2026-09-12T00:17:28Z
#15454 merge (7e72a3d510) — docs(probas,#14871) : segmenter le paragraphe-mur de l'intro serie (3336 c -> 6 paragraphes aeres)
Mesure de cloture, sur origin/main : le paragraphe portant la phrase citee fait desormais 563 c (172 paragraphes, plus long : 2521 c). #15454 a donc livre sa substance 3 h apres que le garde l'ait declaree « deja integree ».
Une lane qui suivait le verdict fermait #15454 — seul correctif de #14871 — et la segmentation ne serait jamais arrivee. ai-01 a du poster une correction explicite (#15454 issuecomment-5641862746) pour l'empecher. Le garde n'est donc pas seulement imprecis : il est activement trompeur dans le seul sens non rattrapable (faire fermer du travail valide).
Le signal honnete etait disponible, et il est jete
L'organe a en main un discriminant honnete : common_issues, l'intersection des issues citees par les deux PRs — c'est deja lui qui separe TIER_STRONG de TIER_WEAK sur les paires ouvertes.
Sur une paire terminale, ce signal est calcule (l.488-490), stocke (PathCollision.common_issues) et serialise dans le JSON — puis jamais rendu dans le commentaire : la branche terminale du template (l.559-569) ne l'utilise pas, la branche ouverte (l.570-578) si. Le seul element qui rendrait la redondance plausible est donc ecarte en silence, precisement dans la branche qui l'affirme.
Correctif attendu
Le vocabulaire de sortie d'un organe ne doit pas contenir un verdict qu'il ne peut pas prouver.
Le verdict terminal reste (la paire est un fait a rendre visible) mais decrit ce que l'organe sait : « ces PRs touchent <chemins> ; #X est deja sur main ».
Retirer toute affirmation de consommation de substance. Sites concernes : docstring de module (l.63, 76-78), terminal_collisions (l.397), actionable_collisions (l.404-405), texte du commentaire (l.568), note de cloture (l.583-585), self-test (l.1084-1085), main() (l.1243).
Rendre common_issues sur une paire terminale au lieu de le jeter — deja mesure, c'est le signal qui rend la redondance plausible.
Ne pas relacher le tier des paires ouvertes.
Hors scope (deja nomme) : la similarite semantique (meme substance, chemins differents) reste un autre outil.
Acceptance
Aucune sortie de l'organe (rendu de commentaire, JSON, docstrings, self-test) n'affirme qu'une substance est consommee ou qu'un travail est « deja integre ».
Une paire dont un cote est merge sort toujours — le signal n'est pas perdu pour autant — nommee comme un fait : chemins partages + cote merge.
Residuel du commentaire ai-01 sur #15578 (instance #15454). #15578 lui-meme — vivier elargi aux mergees + verdict terminal — est resolu sur main par #15591 et close-ready. Ce defaut-ci est distinct : c'est la formulation du verdict introduit, pas son existence. Un Closes #15578 serait donc faux ; d'ou ce tracker separe.
Grain: MED/guard — lane myia-po-2023:CoursIA — prev: MED/guard #15765.
Acceptance, une par une :
Aucune sortie n'affirme une consommation de substance — le vocabulaire non prouvable est retire du module docstring, de la justification de la porte, de PathCollision, de terminal_collisions, de actionable_collisions, du template de commentaire, de la note de cloture, du self-test et de _cli. Controle a signature identique contre origin/main : meme entree, meme appel render_comment(...), l'origine rend la substance est consommee a ratio 1.00, le corrige aucune affirmation non prouvable.
La paire a cote merge sort toujours, nommee comme un fait (chemins partages + cote merge + ratio de chemins).
common_issues est rendu sur la paire terminale — instance vivante mesuree dans le pool du jour : [terminal] #15722/#15751 ... issues=#15452, ou le commentaire poste omettait #15452.
Mesure de fond ajoutee a la connaissance du module : les deux PRs de l'instance fondatrice touchent chacune un seul fichier, le meme — le ratio vaut donc 1.00, le maximum de la porte, et les livraisons sont quand meme disjointes. Aucun seuil sur cette quantite n'aurait pu les separer ; le commentaire de calibration note desormais que la mesure retenue admet ce cas mono-fichier parce qu'elle le doit (l'exclure rouvrirait la mutite que #15578 a fermee).
Une mise a jour unique des commentaires terminaux deja postes est assumee (le corps change) : elle est le but du correctif, ces corps affirmant aujourd'hui une consommation de substance.
Le defaut
Pour une paire dont un cote est merge, l'organe rend le verdict
TIER_TERMINAL(#15578) et affirme une conclusion semantique — « la substance est consommee », « du travail deja integre » — a partir d'une observation purement syntaxique : les deux PRs partagent des chemins de fichiers, et le recouvrement depasseTERMINAL_MIN_OVERLAP_RATIO = 0.5.Or l'organe ne compare jamais le contenu des deux cotes. Mesure sur
scripts/check_pr_path_collisions.py(origin/mainb5e15b39b5) : aucune occurrence dediff,patch,blob,hunk,additions,deletions. Les seules mesures sont l'ensemble des chemins partages et leur ratio.Deux PRs peuvent donc partager 100 % de leurs chemins avec zero recouvrement de substance : l'une colore un bloc mermaid dans un
README.md, l'autre segmente un paragraphe-mur du meme fichier. Le ratio mesure un recouvrement de chemins, jamais de substance — il ne discrimine pas ce cas.Instance — mesuree firsthand
fix(probas,#15022): couleur de texte explicite sur les noeuds mermaid styles — un fix de couleurmain7e72a3d510) —docs(probas,#14871): segmenter le paragraphe-mur de l'intro serie (3336 c -> 6 paragraphes aeres)Mesure de cloture, sur
origin/main: le paragraphe portant la phrase citee fait desormais 563 c (172 paragraphes, plus long : 2521 c). #15454 a donc livre sa substance 3 h apres que le garde l'ait declaree « deja integree ».Une lane qui suivait le verdict fermait #15454 — seul correctif de #14871 — et la segmentation ne serait jamais arrivee. ai-01 a du poster une correction explicite (
#15454 issuecomment-5641862746) pour l'empecher. Le garde n'est donc pas seulement imprecis : il est activement trompeur dans le seul sens non rattrapable (faire fermer du travail valide).Le signal honnete etait disponible, et il est jete
L'organe a en main un discriminant honnete :
common_issues, l'intersection des issues citees par les deux PRs — c'est deja lui qui separeTIER_STRONGdeTIER_WEAKsur les paires ouvertes.Sur une paire terminale, ce signal est calcule (l.488-490), stocke (
PathCollision.common_issues) et serialise dans le JSON — puis jamais rendu dans le commentaire : la branche terminale du template (l.559-569) ne l'utilise pas, la branche ouverte (l.570-578) si. Le seul element qui rendrait la redondance plausible est donc ecarte en silence, precisement dans la branche qui l'affirme.Correctif attendu
Le vocabulaire de sortie d'un organe ne doit pas contenir un verdict qu'il ne peut pas prouver.
<chemins>;#Xest deja surmain».terminal_collisions(l.397),actionable_collisions(l.404-405), texte du commentaire (l.568), note de cloture (l.583-585), self-test (l.1084-1085),main()(l.1243).common_issuessur une paire terminale au lieu de le jeter — deja mesure, c'est le signal qui rend la redondance plausible.Hors scope (deja nomme) : la similarite semantique (meme substance, chemins differents) reste un autre outil.
Acceptance
common_issuesapparait dans le rendu d'une paire terminale quand il est non vide.Provenance
Residuel du commentaire ai-01 sur #15578 (instance #15454). #15578 lui-meme — vivier elargi aux mergees + verdict terminal — est resolu sur
mainpar #15591 et close-ready. Ce defaut-ci est distinct : c'est la formulation du verdict introduit, pas son existence. UnCloses #15578serait donc faux ; d'ou ce tracker separe.Grain: MED/guard — lane à attribuer — prev: n/a