You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
guard check_unaddressed_nits : documenter la capture positionnelle de A+ et temoigner la frontiere 60 chars de D+ (obs 2 et 3 de la review sur #12881) #13474
Les observations 2 et 3 de la review NanoClaw du 2026-08-26T16:48:51Z sur #12881 n'ont jamais recu de phrase — ni reponse, ni thread resolu, ni issue.
Seule l'observation 1 a ete traitee (#13425, implementee par 7dbeedac72b).
Constate au merge-gate de #12881 : check_unaddressed_nits rendait OK, ce qui
repond « aucune phrase de levee ne manque » et rien d'autre — pas « la
substance est traitee ». Les deux points ci-dessous sont donc reportes
sciemment, avant fusion, et non oublies.
Aucun des deux n'est un defaut de correction : les trois FP du contrat #12871
sont neutralises et les trois contre-exemples tiennent. Ce sont deux dettes de lisibilite sur un garde que d'autres lanes devront relire.
Observation 2 -- la capture A+ est positionnee sur le PREMIER caps-token
Le groupe de capture est ancre juste apres la parenthese ouvrante : il prend le premier token en capitales, pas « le verdict ». Verifie de premiere main sur
la tete de branche.
Consequence sur l'exemple de NanoClaw, (BOT_CONCERTATION a propos du BOT_CONCERN) : c'est BOT_CONCERTATION qui est capture, donc le vrai marqueur BOT_CONCERNsurvit — le garde reste bruyant. La direction de l'echec est
donc la bonne (fail-loud), et c'est pourquoi ce n'est pas un bug.
Mais rien dans le commentaire ne dit que la capture est positionnelle. Un
lecteur qui suppose « le motif capture le verdict » raisonnera faux sur le
prochain cas. Forme du fix : une ligne de commentaire, pas un changement de
motif.
Observation 3 -- D+ et E se chevauchent, la frontiere 60 chars n'est pas testee
FP3 est couvert a la fois par D+ (ref nue dans la fenetre 60 chars
post-verdict) et par E (verdict en tete apres review/revue, fenetre 200
chars). Pas de bug : un chevauchement de couverture est sur.
Le trou est ailleurs : la frontiere des 60 chars n'a pas de temoin. Si D+
devient un jour suffisant, E ne sert plus que pour les refs de plus de 60
chars — et personne ne saura que cette frontiere existe le jour ou elle bougera.
Forme du fix : un test de frontiere a exactement 60 chars (un cas a 60, un
cas a 61), qui ECHOUE si la fenetre est modifiee. Le test vaut ici plus que le
commentaire : c'est une constante numerique, la seule chose qui la protege est
un temoin.
Acceptance
Une ligne de commentaire sur A+ disant que la capture est positionnelle
(premier caps-token) et que la consequence est fail-loud.
Deux cas de test encadrant la frontiere 60 chars de D+, valides par leur faux negatif : ils doivent echouer si la fenetre est changee.
Delivre par PR #13481 (lane myia-po-2026:CoursIA). Note honnete : la « frontiere 60 chars » de l'acceptance heritait du commentaire D+ — le code enforce {0,12} (mesure : gap 12 matche, 13 ne matche plus). Les temoins encadrent la borne REELLE 12/13, valides par mutation ({0,13}? tue le temoin hors-borne, {0,10}? tue le temoin dans-borne). Commentaires corriges en consequence.
Activity
jsboige commentedon Aug 29, 2026
[CLAIMED] lane myia-po-2026:CoursIA -- paths: scripts/check_unaddressed_nits.py, scripts/tests/test_check_unaddressed_nits.py -- 2026-08-29T09:25Z
jsboige commentedon Aug 29, 2026
Delivre par PR #13481 (lane myia-po-2026:CoursIA). Note honnete : la « frontiere 60 chars » de l'acceptance heritait du commentaire D+ — le code enforce {0,12} (mesure : gap 12 matche, 13 ne matche plus). Les temoins encadrent la borne REELLE 12/13, valides par mutation ({0,13}? tue le temoin hors-borne, {0,10}? tue le temoin dans-borne). Commentaires corriges en consequence.
fix(guard,#13474): document A+ positional capture, witness real D+ fr…