Sans parent : la classe a trois issues de provenance, toutes CLOSED -- #12624 (quasi-marqueur non signale), #11239 (CLAIMED sans crochets), #15982 (marqueur compose [CLAIMED-RELEASED], corrigee par #15986). Ceci est un residu de cette classe que le correctif de #15982 ne couvre pas.
Le defaut
L'avertissement construit par #15982 (scripts/ci/lane_claim_required.py:328-338) se declenche sur un marqueur compose de forme levee :
for s in clc._find_suspected_typo_markers(payload):
if s["kind"] != "compose" or not clc.is_release_shaped(s):
continue
et is_release_shaped (scripts/check_lane_claim.py:2197) delegue a _close_keyword, qui cherche dans :
_CLOSE = {"RELEASED", "CANCELLED", "ABANDONED", "DONE", "DELIVERED"}
Le mot RETRACT n'y est pas. Un composite qui leve le grain en le disant -- [CLAIMED-RETRACT] -- a donc is_release_shaped == False, l'avertissement est saute en silence, et il ne reste que le message generique « Release with [RELEASED] … or wait 48h », qui ne dit pas a la lane que son propre geste n'a pas ete lu.
La mesure, firsthand (2026-10-09, issue #20083)
_find_suspected_typo_markers voit le token -- le detecteur n'est pas en cause :
token='CLAIMED-RETRACT' kind='compose' author='jsboige'
canonical='CLAIMED' nearest='CLAIMED' is_release_shaped=False
-> WARN emis ? False
_CLOSE = ['ABANDONED', 'CANCELLED', 'DELIVERED', 'DONE', 'RELEASED']
'RETRACT' dans _CLOSE ? False
'RETRACTED' dans _CLOSE ? False
active: {'myia-po-2024:CoursIA-3': '2026-10-09T12:03:07Z',
'myia-po-2027:CoursIA-2': '2026-10-09T12:31:12Z'}
Deux defauts dans la meme sortie :
- l'avertissement ne part pas -- la lane
myia-po-2027:CoursIA-2 a poste [CLAIMED-RETRACT] a 12:32:10Z en croyant rendre le grain ; le reduceur garde son claim actif (12:31:12Z) ;
- la forme recommandee est
[CLAIMED] -- c'est-a-dire reprendre le grain que la lane vient de rendre. C'est exactement le mauvais conseil que le docstring de _close_keyword (check_lane_claim.py:2180-2182) nomme comme ce qu'il faut eviter, et il est reproduit en direct sur ce cas.
L'impact, mesure aujourd'hui
La PR #20084 (lane myia-po-2024:CoursIA-3, brique 4 de #19821) est bloquee a 14:02:59Z par l'organe bloquant Always-on guards :
##[error]collision de lane sur une reference fermante: #20083: lane myia-po-2027:CoursIA-2
holds an active claim (since 2026-10-09T12:31:12Z)
Le claim que l'erreur declare vivant est exactement celui que sa lane a retracte 40 minutes plus tot. La PR de tiers porte donc un rouge dont la cause est un mot absent d'un ensemble de cinq.
Ce qui n'est PAS demande
Ne pas ajouter RETRACT au reduceur. _MARKER_RE (check_lane_claim.py:143-146) est l'alternation qui enacte ; la doctrine #12624 est explicite -- on signale, on n'enacte pas. Un [CLAIMED-RETRACT] ne doit pas devenir une levee valide : il doit produire le meme avertissement que [CLAIMED-RELEASED], qui dit a l'auteur de reposter [RELEASED].
Acceptance
Sans parent : la classe a trois issues de provenance, toutes CLOSED -- #12624 (quasi-marqueur non signale), #11239 (CLAIMED sans crochets), #15982 (marqueur compose
[CLAIMED-RELEASED], corrigee par #15986). Ceci est un residu de cette classe que le correctif de #15982 ne couvre pas.Le defaut
L'avertissement construit par #15982 (
scripts/ci/lane_claim_required.py:328-338) se declenche sur un marqueur compose de forme levee :et
is_release_shaped(scripts/check_lane_claim.py:2197) delegue a_close_keyword, qui cherche dans :Le mot
RETRACTn'y est pas. Un composite qui leve le grain en le disant --[CLAIMED-RETRACT]-- a doncis_release_shaped == False, l'avertissement est saute en silence, et il ne reste que le message generique « Release with[RELEASED]… or wait 48h », qui ne dit pas a la lane que son propre geste n'a pas ete lu.La mesure, firsthand (2026-10-09, issue #20083)
_find_suspected_typo_markersvoit le token -- le detecteur n'est pas en cause :Deux defauts dans la meme sortie :
myia-po-2027:CoursIA-2a poste[CLAIMED-RETRACT]a 12:32:10Z en croyant rendre le grain ; le reduceur garde son claim actif (12:31:12Z) ;[CLAIMED]-- c'est-a-dire reprendre le grain que la lane vient de rendre. C'est exactement le mauvais conseil que le docstring de_close_keyword(check_lane_claim.py:2180-2182) nomme comme ce qu'il faut eviter, et il est reproduit en direct sur ce cas.L'impact, mesure aujourd'hui
La PR #20084 (lane
myia-po-2024:CoursIA-3, brique 4 de #19821) est bloquee a 14:02:59Z par l'organe bloquantAlways-on guards:Le claim que l'erreur declare vivant est exactement celui que sa lane a retracte 40 minutes plus tot. La PR de tiers porte donc un rouge dont la cause est un mot absent d'un ensemble de cinq.
Ce qui n'est PAS demande
Ne pas ajouter
RETRACTau reduceur._MARKER_RE(check_lane_claim.py:143-146) est l'alternation qui enacte ; la doctrine #12624 est explicite -- on signale, on n'enacte pas. Un[CLAIMED-RETRACT]ne doit pas devenir une levee valide : il doit produire le meme avertissement que[CLAIMED-RELEASED], qui dit a l'auteur de reposter[RELEASED].Acceptance
is_release_shapedrendTruepour un composite dont un composant est un mot de fermeture au sens large (RETRACT,RETRACTED), sans que_MARKER_REni le reduceur changent ;canonical) pour un composite release-shaped est toujours une forme que le reduceur lit (RELEASED), jamais la tete du token ;[CLAIMED-RELEASED]recommandeRELEASED, un quasi-[CLAGED]recommandeCLAIMED;RETRACTmesure ci-dessus ;_CLOSE(le reduceur) reste byte-identique -- la preuve de non-enactment est le diff de cette constante.