Repository navigation
fix(tooling,#15512): detect_paragraph_length mesure chaque item de liste seul (94 fichiers de-signales, 0 vrai positif perdu) - #16283
Conversation
…ste seul Un run d'items de liste contigus etait somme en un bloc unique : six champs de provenance d'un `assets/readme/MANIFEST.md` (chacun <= 1600 c) totalisaient 3457 c et declenchaient un finding. Les 9 findings de la tranche « Probas » recommandee par #15512 sont tous de cette classe -- aucun item du corpus ne depasse le seuil, seul leur somme le fait. Un item de liste ouvre desormais son propre bloc, y compris quand il suit une phrase d'introduction. C'est l'intention deja documentee du module (« un item de liste de 10k caracteres est un mur aussi ») : l'implementation la respecte au lieu de mesurer la concatenation. Mesure sur le corpus suivi (`git ls-files '*.md'`), versions pre/post chargees et comparees : 375 blocs / 124 fichiers -> 157 blocs / 30 fichiers. L'ensemble des 12 fichiers de vrais murs de prose est **identique** -- 0 vrai positif perdu, 0 fichier nouvellement signale, 94 fichiers de-signales. Controles : le temoin fondateur (paragraphe 3336 c sur une ligne physique) tire toujours ; le controle de faux positif verifie d'abord que le run depasse le seuil *en somme* (sinon il serait vacuement vert) ; un temoin positif epingle qu'un item unique long tire encore. Le residu est du signal reel : 12 transcripts `Roo-Code/**/roo_task_*.md` (murs structurellement legitimes, deja hors scope de #15512) et 9 paragraphes de prose multi-lignes. Le seuil 2000 est inchange. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels |
Path-collision (organ #13359/#13615)Cette PR #16283 (
|
Grain: DEEP/tooling — lane myia-po-2026:CoursIA — prev: DEEP/genai-content #16282
Ce que cette PR corrige
La tranche « Probas (5 fichiers) », que #15512 recommande de traiter en premier, n'a rien à corriger : ses 9 findings sont des faux positifs, et la cause est dans l'organe, pas dans les fichiers.
iter_paragraphs()définissait un paragraphe comme « une suite de lignes contiguës non-vides ». Dans unassets/readme/MANIFEST.md, six champs- **Source** : …/- **Poids** : …se suivent sans ligne vide : ils étaient donc additionnés. Mesure :DecisionTheory/PyMC/…PyMC/…Probas/…Zéro item ne dépasse 2000 c — seul leur somme le fait. C'est en contradiction avec l'intention écrite du module (« un item de liste de 10k caracteres est un mur aussi » — un item) et avec le rendu : markdown produit six
<li>distincts, qu'aucun lecteur ne parcourt d'un trait.Conséquence évitée : « corriger » cette tranche aurait consisté à scinder des champs de provenance structurés et curés (
Source/Poids/Verdict) — du churn sur des données auditées, sans gain de lisibilité. Aucune PR de sweep n'est donc produite sur ces fichiers (protocole de réévaluation d'audit #499 : pas de PR sur un finding faux).Le correctif
Un item de liste ouvre désormais son propre bloc, y compris quand il suit une phrase d'introduction (la phrase ferme le bloc précédent). Le seuil 2000 est inchangé ; c'est la segmentation qui change, pas la barre.
Mesure corpus-entier (avant / après)
Sur le corpus suivi (
git ls-files '*.md'), les deux versions du module chargées côte à côte puis comparées :set ==vérifié en chargeant la versionorigin/maindu module. 0 vrai positif perdu, 0 fichier nouvellement signalé ;assets/readme/MANIFEST.mdde la flotte.Le résidu restant est du signal réel, pas des faux positifs :
GenAI/Vibe-Coding/Roo-Code/**/roo_task_*.md— murs structurellement légitimes, déjà déclarés hors scope par docs: sweep de résorption des 112 fichiers markdown portant un paragraphe > 2000 c (paragraph-length advisory #15507) #15512 elle-même ;Contrôles (le point sensible : ne pas éteindre le détecteur)
Le risque d'un tel correctif est de rendre l'organe muet. Trois contrôles l'encadrent :
3251 c;--self-testembarque (6) et (7) ; la suite pytest passe de 12 à 16 tests.Grounding
Les deux documents qui décrivent le signal portent la même précision, avec la re-mesure datée :
scripts/notebook_tools/README.mdet l'en-tête de.github/workflows/paragraph-length-advisory.yml(dont le texte citait déjà le signal « single run of non-empty lines »). Le workflow est advisory et inchangé fonctionnellement — seul son commentaire de calibration est réaligné, pour ne pas laisser une mesure périmée décrire la nouvelle sémantique.Périmètre
4 fichiers, 1 sujet (la sémantique de segmentation de l'organe), 0 notebook, 0 catalogue.
See #15512 — la PR ne clôt pas l'issue : le sweep garde les 9 paragraphes de prose réels, et le comptage de l'issue (112 fichiers) demande à être re-scopé sur la mesure ci-dessus.
🤖 Generated with Claude Code