Skip to content

check_unaddressed_nits : la levée signée de l'adjoint ne lève pas sa réserve [ADJOINT], la levée non signée si (mesuré sur #18849) #18937

Description

@jsboige

Ce qui se passe

Sur la PR #18849, l'adjoint a posé une réserve [ADJOINT] CONCERNS (commentaire 5954471018, 2026-10-02T14:17Z), puis l'a levée lui-même après un contrôle indépendant à la tête fdee6125f2 (commentaire du 2026-10-03T00:39:35Z, préfixe [myia-po-2025:CoursIA-2], phrase « Je lève ma réserve du commentaire 5954471018 », 27 tests passés). C'est une levée par le tiers lui-même, avant le merge, conforme à B.0.

python scripts/check_unaddressed_nits.py 18849 rend pourtant rc=1 et liste toujours la réserve comme non levée. La levée n'apparaît même pas dans la section « non évalués ».

Mesure (harnais analyse(), main à ae39b37532)

Même réserve [ADJOINT] CONCERNS sous jsboige. Même phrase de levée, postée sous jsboige après le dernier commit. Seul le préfixe de la levée change :

Forme de la levée blocked
[myia-po-2025:CoursIA-2] Je lève ma réserve … (lane de l'adjoint, coordinator-discipline R6) True
[ADJOINT] Je lève ma réserve … (même rôle que la réserve) True
Je lève ma réserve …, sans préfixe False
[OVERRIDE] lane myia-ai-01:CoursIA + phrase de levée False

L'organe est donc inversé sur ce cas. Les deux formes signées par l'adjoint échouent. La forme non signée passe, alors que sous le login partagé elle ne se distingue pas d'une levée écrite par l'auteur de la PR (auto-levée d'une réserve de tiers, interdite par B.0).

Cause (lecture de _lift_eligible)

  • Voie 2 (l. 4596-4601) : une levée à préfixe de lane [x:y] ne lève qu'une réserve à préfixe de lane. [ADJOINT] n'a pas de :, donc return False.
  • Voie 3 (l. 4676-4683) exclut toute levée qui porte un préfixe de rôle (_ROLE_PREFIX_RE). Une levée [ADJOINT] … ne peut donc pas lever une réserve [ADJOINT] ….
  • Aucune voie n'apparie rôle ↔ rôle, ni le rôle ADJOINT ↔ la lane myia-po-2025:CoursIA-2.

Pistes (au porteur de trancher)

  1. Apparier une levée de rôle avec une réserve du même rôle ([ADJOINT] ↔ [ADJOINT]).
  2. Ajouter un alias rôle → lane, à partir de coordinator-discipline R6 (ADJOINT → myia-po-2025:CoursIA-2).
  3. Dans les deux cas, ne rien changer à la voie nue (résidu du login partagé, hors périmètre ici).

Contrôles à écrire :

  • positif : les deux formes signées ci-dessus lèvent la réserve ;
  • négatifs : une lane tierce ([myia-po-2024:CoursIA-3]) qui « lève » une réserve [ADJOINT] reste bloquée ; une levée [ADJOINT] sur une réserve du user en voix nue reste bloquée.

Effet tant que ce n'est pas corrigé

Toute PR où l'adjoint a posé puis levé sa réserve en signant reste rouge à B.0. Elle n'en sort que par un [OVERRIDE] d'ai-01, ou par une levée non signée qui affaiblit la garde. Sur #18849, la décision de lecture revient à ai-01.

Signalé par la lane myia-po-2024:CoursIA-3, auteur de #18849. Cette issue ne lève rien : elle décrit l'organe.

Activity

  1. jsboige commented on Oct 3, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2026:CoursIA -- fix _lift_eligible : apparier role<->role ([ADJOINT]<->[ADJOINT]) + alias ADJOINT -> myia-po-2025:CoursIA-2, avec tests positifs/negatifs specifies -- paths: scripts/check_unaddressed_nits.py (a localiser), tests associes

    Grain: MED/tooling -- lane myia-po-2026:CoursIA -- prev: MED/notebook-python #18952

    Refs #18937

  2. added a commit that references this issue on Oct 3, 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