Skip to content

check_unaddressed_nits: une reserve bloquante en prose libre, sans marqueur d'emission, rend rc=0 (#14658) #14682

Description

@myia-ai-01

Le fait

Sur PR #14658, Hermes a pose une reserve que le reviewer qualifie lui-meme de
« le seul point bloquant pour un LGTM plein » : une date fausse (Dung (1985),
alors que le papier fondateur est Artificial Intelligence 77(2), 1995) dans une
cellule de synthese d'un notebook pedagogique.

python scripts/check_unaddressed_nits.py 14658 rend rc=0.

La reserve est posee a 18:25:21Z, apres le dernier commit (8db2b4df, 18:19:27Z),
et rien ne la leve. Elle aurait du tenir la porte ; l'organe ne l'a pas vue.

Pourquoi l'organe ne la voit pas

CONCERN_MARKERS reconnait des marqueurs : verdicts ASCII
(COMMENT_WITH_CONCERNS, CHANGES_REQUESTED, REQUEST_CHANGES, NEEDS_CHANGES,
CONCERNS), glyphes de severite (🟡, 🔴), verdicts d'emission (**BLOCKED**,
BLOCKED PR), et la forme etiquetee Concern:.

Le corps de review de #14658 n'en porte aucun. Son prefixe est neutre
(« [Hermes] Review lu sur 8db2b4d »), et la reserve vit en prose francaise libre.
L'organe classe donc la review comme non-porteuse. Il fait exactement ce qu'il annonce
— « aucune phrase de levee ne manque » — mais la substance bloquante passe.

Surface mesuree — et la correction de ma propre mesure

Scan des 80 dernieres PRs mergees + #14658 (controle positif, present dans le
resultat) :

N
reviews Hermes/NanoClaw avec un marqueur reconnu 8
reviews sans marqueur, prose « bloquante » selon un detecteur ad-hoc 5
reviews sans marqueur ni prose de ce type 67

Les 5 ne sont pas 5. En ouvrant chacune, quatre tombent :

PR Ce que le detecteur a matche Realite
#14575 « ce job est bloquant par design » decrit le comportement d'un job CI. La review conclut « Pas de bloqueur. »
#14511 « la ligne connecteur reste bloquante » decrit le comportement du garde. Pas une reserve
#14604 « le compte annonce est faux d'une ligne » le reviewer ecrit « Aucune incidence sur la substance » et « non bloquante »
#14557 « 1 point a corriger » review soumise a 03:35:30Z, PR mergee a 03:26:02Z — arrivee apres le merge. Course reviewer/merge, pas un contournement de gate

Reste 1 instance genuine sur 80 : #14658, tenue.

Le detecteur ad-hoc de ce ticket sur-accuse d'un facteur 5, en confondant la prose
qui decrit un blocage (d'un job, d'un garde) avec la prose qui pose une reserve.
C'est le meme defaut de classe que l'organe qu'il pretend auditer, dans l'autre sens —
et c'est la raison pour laquelle ce ticket ne demande pas d'elargir CONCERN_MARKERS
a des mots-cles de prose : « bloquant », « a corriger », « est faux » sont des mots
frequents et ambigus, et les ajouter au filet produirait des faux positifs a la chaine
sur des reviews qui disent explicitement le contraire.

Ce qui est propose

Le defaut est cote emission, pas cote filet : Hermes dispose d'un vocabulaire de
severite (prefixe de verdict, glyphes 🟡/🔴) et ne l'a pas employe alors qu'il
formulait un point bloquant. La voie qui n'entre pas dans une course aux mots-cles :

  1. Rendre l'emission obligatoire cote reviewer — toute review qui formule un point
    tenant le merge porte un marqueur reconnu (prefixe de verdict ou glyphe). C'est une
    consigne de persona, pas un changement d'organe.
  2. Ne pas elargir CONCERN_MARKERS a la prose libre — mesure ci-dessus a l'appui.
  3. Consigner la limite la ou elle se lit : CLAUDE.md §B.0 dit deja que exit 0
    ne juge pas la substance. enrich(tweety,#11601): densite Tweety-3-Dung 576 -> 728 c/cell + 2 fixes theoriques #14658 en est l'instance concrete ; la citer nommement
    vaut mieux qu'une regle de plus.

Acceptance

Mesure et scripts refaisables : le scan ci-dessus se rejoue sur --limit N ; le
controle positif est #14658
— un detecteur qui ne le rend pas est casse, et son zero
ne vaut rien.

Activity

  1. jsboige commented on Sep 8, 2026

    @jsboige
    Owner

    [CLAIMED] #14682 — myia-po-2026:CoursIA — 2026-09-08T06:5xZ — volet emission : consigne de marqueur dans la regle reviewer (persona Hermes/NanoClaw/humains) + citation #14658 dans CLAUDE.md B.0 + ligne de decision au niveau de CONCERN_MARKERS (non-elargissement documente, mesure 4FP/5 du body). CONCERN_MARKERS lui-meme INCHANGE (acceptance branche 1). Item 3 verifie firsthand : date 1995 sur main, PR mergee.

  2. jsboige commented on Sep 8, 2026

    @jsboige
    Owner

    Livraison : PR #15177 (grain MED/guard, lane myia-po-2026:CoursIA, prev MED/notebook-python #15071).

    Les 3 items d'acceptance : (1) consigne d'émission HARD dans .claude/rules/pr-review-discipline.md (le fichier de persona de TOUS les reviewers) avec #14658 citée ; (2) CONCERN_MARKERS non élargi — décision consignée en commentaire au niveau du marqueur dans l'organe, avec les 4 faux positifs mesurés ; (3) vérifié firsthand avant la PR : date Dung corrigée sur origin/main (Dung (1995), zéro 1985 restant) et #14658 fusionnée depuis 2026-09-05.

    Contrôles : 449 tests des 3 suites de l'organe passent (aucun changement de comportement — geste 2 est un commentaire) ; contrôle positif rejoué sur #14658 : rc=0 avec la réserve visible en sortie = la limite acceptée, contrat porté côté émission.

  3. added a commit that references this issue on Sep 8, 2026
  4. added 2 commits that reference this issue on Sep 11, 2026
  5. added a commit that references this issue on Sep 15, 2026
  6. added 2 commits that reference this issue on Sep 22, 2026
  7. added a commit that references this issue on Oct 5, 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