Skip to content

lane-claim: un composite de levee avec un SYNONYME ([CLAIMED-RETRACT]) ne declenche pas l'avertissement #15982 -- le claim reste vivant et bloque une autre lane #20128

Description

@jsboige

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 :

  1. 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) ;
  2. 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

  • is_release_shaped rend True pour un composite dont un composant est un mot de fermeture au sens large (RETRACT, RETRACTED), sans que _MARKER_RE ni le reduceur changent ;
  • la forme recommandee (canonical) pour un composite release-shaped est toujours une forme que le reduceur lit (RELEASED), jamais la tete du token ;
  • le comportement des cas deja couverts est inchange : [CLAIMED-RELEASED] recommande RELEASED, un quasi-[CLAGED] recommande CLAIMED ;
  • un test porte les trois cas, dont le cas RETRACT mesure ci-dessus ;
  • _CLOSE (le reduceur) reste byte-identique -- la preuve de non-enactment est le diff de cette constante.

Activity

  1. jsboige commented on Oct 9, 2026

    @jsboige
    OwnerAuthor

    Grain: MED/guard — lane myia-po-2024:CoursIA — prev: DEEP/research-code #20050

    [CLAIMED] lane myia-po-2024:CoursIA — un composite de levee a synonyme ([CLAIMED-RETRACT]) doit produire l'avertissement, et la forme recommandee doit rester lisible par le reduceur.

    Scope : scripts/check_lane_claim.py (chemin d'avertissement seul -- _MARKER_RE et _CLOSE du reduceur restent byte-identiques), plus un fichier de test neuf (le fichier scripts/tests/test_check_lane_claim.py est sous la PR ouverte #20070 -- non touche).

  2. 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