Tell c.870-L1 MAJEUR — régression introduite par PR #13951 (Concern 1 NanoClaw fix)
Symptôme
Un commentaire PR légitime qui paraphrase structurellement un verdict reviewer en mentionnant les CONCERN_MARKERS (par exemple « Concern 1 », « avant merge », « CHANGES_REQUESTED ») est classifié BOT-CONCERN par check_unaddressed_nits.classify(), alors que l'auteur du commentaire n'a pas émis lui-meme la réserve.
Cause racine
Le fix Concern 1 (PR #13951, commit fdd589cac) ajoute _sole_live_concern_is_comment_prefix(body) ligne 1126 de scripts/check_unaddressed_nits.py qui vérifie not has_live_marker(residuel, CONCERN_MARKERS) après strip du préfixe CWC.
Mais has_live_marker matche les chaînes brutes, pas l'intention. Un commentaire qui cite ou paraphrase les marqueurs techniques de Hermes/NanoClaw (par exemple « vérifier que la préoccupation est levée » ou « avant merge ») déclenche la classification BOT-CONCERN à tort.
Cas empirique c.871
- Mon commentaire paraphraseur c.869 (
issuecomment-5506801880) cite « Concern 1 », « avant merge », « CHANGES_REQUESTED » verbatim → classifié BOT-CONCERN.
- Mon commentaire c.871 (
issuecomment-5507385171) ne cite AUCUN de ces marqueurs verbatim → classifié rien (empiriquement valide la contre-mesure).
Fix suggéré (à valider)
Renforcer _sole_live_concern_is_comment_prefix (ou l'étape has_live_marker) pour distinguer :
- Concordance faible : les marqueurs apparaissent dans des citations verbatim (
> Concern 1 :, > blocs de citation).
- Concordance forte : les marqueurs apparaissent dans la prose d'auteur.
Option 1 : étendre _strip_quoted pour couvrir les citations de verdict avant has_live_marker.
Option 2 : introduire une heuristique « au moins un verbe d'évaluation (lever, vérifier, corriger) → citation probable ».
References
Acceptance
- Tests dans
scripts/tests/test_check_unaddressed_nits.py qui verrouillent la classification correcte pour les 3 corps (paraphrase CONCERN_MARKERS verbatim, paraphrase sans marqueurs, verdict verbatim).
pytest -k '13951 or 14130' -v : 100% PASSED.
python scripts/check_unaddressed_nits.py 13951 post-fix : 1 nit restant (NanoClaw verdict COMMENTED original, non lié à cette régression).
Tell c.870-L1 MAJEUR — régression introduite par PR #13951 (Concern 1 NanoClaw fix)
Symptôme
Un commentaire PR légitime qui paraphrase structurellement un verdict reviewer en mentionnant les CONCERN_MARKERS (par exemple « Concern 1 », « avant merge », « CHANGES_REQUESTED ») est classifié
BOT-CONCERNparcheck_unaddressed_nits.classify(), alors que l'auteur du commentaire n'a pas émis lui-meme la réserve.Cause racine
Le fix Concern 1 (PR #13951, commit
fdd589cac) ajoute_sole_live_concern_is_comment_prefix(body)ligne 1126 descripts/check_unaddressed_nits.pyqui vérifienot has_live_marker(residuel, CONCERN_MARKERS)après strip du préfixe CWC.Mais
has_live_markermatche les chaînes brutes, pas l'intention. Un commentaire qui cite ou paraphrase les marqueurs techniques de Hermes/NanoClaw (par exemple « vérifier que la préoccupation est levée » ou « avant merge ») déclenche la classificationBOT-CONCERNà tort.Cas empirique c.871
issuecomment-5506801880) cite « Concern 1 », « avant merge », « CHANGES_REQUESTED » verbatim → classifié BOT-CONCERN.issuecomment-5507385171) ne cite AUCUN de ces marqueurs verbatim → classifié rien (empiriquement valide la contre-mesure).Fix suggéré (à valider)
Renforcer
_sole_live_concern_is_comment_prefix(ou l'étapehas_live_marker) pour distinguer :> Concern 1 :,>blocs de citation).Option 1 : étendre
_strip_quotedpour couvrir les citations de verdict avanthas_live_marker.Option 2 : introduire une heuristique « au moins un verbe d'évaluation (
lever,vérifier,corriger) → citation probable ».References
Acceptance
scripts/tests/test_check_unaddressed_nits.pyqui verrouillent la classification correcte pour les 3 corps (paraphrase CONCERN_MARKERS verbatim, paraphrase sans marqueurs, verdict verbatim).pytest -k '13951 or 14130' -v: 100% PASSED.python scripts/check_unaddressed_nits.py 13951post-fix : 1 nit restant (NanoClaw verdict COMMENTED original, non lié à cette régression).