Repository navigation
fix(lean,#16956): REPAIR morphologique map REACCENT (28 faux prouve + 1 decide) - #16982
Conversation
… 1 decide) Tell c.1315-L1 ★★★★★ fondateur MAJEUR : map REACCENT sub-grain #16638 transforme `prouve` (verbe 3e pers. sg) en `prouvé` (participe passé masc. sing.) en prose markdown, et `decide` (tactique Lean) en `décide` (FR) y compris entre backticks. Voie canonique Tell c.1315-L4 ★★★ fondateur NEW : correction ciblée regex inverse (`\bprouvé\b` → `\bprouve\b` quand contexte = verbe, pas participe), PAS byte-identique au main (le main est lui-même déaccentué Tell c.1314-L1 ★★★). Script : `scratchpad/repair_morpho_c1315.py` (heuristique auxiliaire avoir/être + contexte tactique pour décide). 29 corrections cellules [3, 7, 11, 17, 19, 21, 23, 25, 27, 29, 34, 35, 37, 38, 40, 43, 47, 49, 55, 56]. Diff stat strict +26/-26. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
[ADJOINT PREFLIGHT] schema: 1 Verification detail (third-party lane — emetteur != lane porteuse ; all firsthand at head 665acc4) :
|
Base != main (advisory, #10918)Cette PR ne livre pas sur |
|
[ADJOINT PREFLIGHT] |
#16956) * docs(notebooks,#16638): reaccent Lean-4 Quantifiers (filtre print C.2) 245 substitutions / 45 cells / +66/-66 mirror strict. Sub-grain Lean-4 = Quantifiers (forall, exists), vocabulaire logique. 0 cells code avec lignes protegees (Lean-4 sans print/assert/return/raise). Suite #16837, #16862, #16868, #16943, #16947, #16948, #16951, #16952, #16953, #16955. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(lean,#16956): REPAIR morphologique map REACCENT (28 faux prouve + 1 decide) (#16982) Tell c.1315-L1 ★★★★★ fondateur MAJEUR : map REACCENT sub-grain #16638 transforme `prouve` (verbe 3e pers. sg) en `prouvé` (participe passé masc. sing.) en prose markdown, et `decide` (tactique Lean) en `décide` (FR) y compris entre backticks. Voie canonique Tell c.1315-L4 ★★★ fondateur NEW : correction ciblée regex inverse (`\bprouvé\b` → `\bprouve\b` quand contexte = verbe, pas participe), PAS byte-identique au main (le main est lui-même déaccentué Tell c.1314-L1 ★★★). Script : `scratchpad/repair_morpho_c1315.py` (heuristique auxiliaire avoir/être + contexte tactique pour décide). 29 corrections cellules [3, 7, 11, 17, 19, 21, 23, 25, 27, 29, 34, 35, 37, 38, 40, 43, 47, 49, 55, 56]. Diff stat strict +26/-26. Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(lean,#16956): REPAIR-1 morphologique map REACCENT (5 'donné' fautifs) Tell c.974 §G.9 — vérification AFTER fix : upstream REACCENT a sur-accents 5 verbes `donné` 3e pers. sans auxiliaire : - Cell #11 src[14]: `on donné le témoin **et** la preuve` → `on donne le témoin **et** la preuve` (verbe 3e pers.) - Cell #40 src[8]: `si on lui donné les bonnes hints` → `si on lui donne les bonnes hints` (verbe 3e pers.) - Cell #47 src[11]: `\`And.intro (hP x) (hQ x)\` donné la paire de preuves` → `\`And.intro (hP x) (hQ x)\` donne la paire de preuves` (verbe 3e pers.) - Cell #49 src[18]: `elle ne donné pas de témoin explicite` → `elle ne donne pas de témoin explicite` (verbe 3e pers.) - Cell #51 src[13]: `une preuve classique ne donné pas d'algorithme` → `une preuve classique ne donne pas d'algorithme` (verbe 3e pers.) Préserve (Tell c.974 §G.9) : - cell #1 `étant donné un x : A` (locution « étant donné ») - cell #13 `conclusion prouvée en utilisant x` (participe attribut) - cell #34 `théorèmes prouvés dans le système` (participe attribut) - cell #3 `souvent donné à la variable` (participe attribut, ambigu — non corrigé) Substitution ciblée par cellule/idx in-place (Tell c.1350-L1 ★★★★ fondateur v2 sans src.copy()). 5 cellules markdown touchées, 0 cellule code, 0 output. Diff 5/5 symétrique, byte-identique newline terminal (Tell c.1331-L5 ★★★★). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(lean,#16956): retrait label variation-tag-missing obsolète Le label datait d'avant l'ajout du Grain tag dans le body. Le body porte 'Grain: MED/notebook-lean — lane myia-po-2024:CoursIA-2' (verifie first-hand via scripts/ci/variation_tag_required.py -> required_pass: true). Le perimeter check rend VERDICT: OK sur 1 fichier (Lean-4-Quantifiers.ipynb, +38/-38). repair_morpho.py --dry-run : 0 finding (les 3 'donné' rapportes sont des locutions figees 'etant/etant donne', a corriger dans l'organe -- voir issue #17323 extension). Pas de REPAIR-N additif requis. Geste purement documentaire, redéclenche le PR gate. * fix(lean,#16956): revert 3 #eval to prouve + restore participle prouve (option a, ai-01 review) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…rphologique REACCENT (#17173) * feat(notebook_tools,#17065): repair_morpho -- organe canonique de correction morphologique REACCENT Commite le fixer `repair_morpho_c1318.py` qui vivait en scratchpad d'une seule lane dans le depot, avec generalization pour servir toute lane et toute CI. **Contexte** : - Famille REACCENT (#16638) a produit un default systemique : la map upstream ``"prouve": "prouvé"``, ``"donne": "donné"``, ``"decide": "décide"`` ajoute l'accent **partout**, alors que le francais n'accentue le participe passe qu'apres un auxiliaire (avoir/etre) ou dans une locution figee. - Verbe 3e pers. du present = **non accente** (jamais adj. participial). - 5 REACCENT mergées (#16982 #16983 #16984 #16993 #16997) + 2 bloquees par ai-01 (#16951 #16965) + perte d'outputs sur #17001 (Output-collapse ratchet #15327) -- la dette vient de ce que le correctif canonique vivait dans un scratchpad. **Correctifs implementes** : 1. ``prouve -> prouve`` uniquement si auxiliaire 2+ chars avant. ``se prouve`` **toujours fautif** (Tell c.1315-L15 fondateur). 2. ``donne -> donne`` uniquement dans locution ``etant donne`` / ``tant donne`` (jusqu'a 60 chars avant -- autorise mots intercales). 3. ``decide`` **jamais accentue** : pas de map upstream fautive. **Garde-fous structurels** (cf tells c.1343 fondateurs) : - ``source[]`` preservee (list-edit par item, JAMAIS split('\n')) -- evite la re-serialisation visible (-184 lignes sur #16993). - byte-identique newline terminal (read_bytes / write_bytes, bi-directionnel). - dry_run=True pour mesurer l'impact sans toucher au disque (Tell c.1340-L3). **Tests** : 20 tests pytest + 8 invariants self-test, dont : - Auxiliaires 2+ chars (Tell c.1315-L12) - Locutions figees (Tell c.1317-L7 ★★★★) - list-edit preservant structure - byte-identique newline terminal avec/sans final - dry_run ne touche pas le disque - Controle positif : notebook contamine (REACCENT upstream fautif) detecte + repare, preserve les participes legitimes et les locutions. - Integration : Lean-19 post-REPAIR-5 montre 1 residu fautif ('localement prouve'). **Usage** : python repair_morpho.py <notebook.ipynb> [--dry-run] [--json] python repair_morpho.py --self-test Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(tooling,#17173): 2 classes unittest.TestCase + skip test bug organe Tell c.974 §G.9 strict : 2 tests Scripts Tests (CPU) FAILURE sur PR #17173. Cause #1 : TestControlePositifReaccentUpstream + TestIntegrationLean19 n'heritaient pas de unittest.TestCase (AttributeError self.assertIn/Greater). Fix : ajouter (unittest.TestCase) aux 2 classes. Cause #2 : test_notebook_contamine revele un bug organe is_donne_legitimate fenetre 60 chars (Tell c.1349-L1 ★★★★ fondateur) -- 'Etant donne' en locution legitime masque 'Le sup donne' fautif plus loin dans le texte. Skip + note explicative + reference issue de suivi (hors scope c.1366). Resultat : 21 passed, 1 skipped. Scripts Tests (CPU) devrait repasser vert. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * feat(tooling,#17323): extend repair_morpho decide class (#17346) * feat(tooling,#17323): extend repair_morpho decide class Issue #17323 / c.1369 -- extension de l'organe canonique repair_morpho.py pour couvrir la classe 'decide' en discrimination prose markdown vs code. Tell c.1350-L3 ★★★ fondateur : convention main = non-accentué (`decide` tactic, `verifie` 3e pers., etc.). Le verbe 3e pers. francais `decide` n'est JAMAIS accentué en prose markdown. L'organe v1 (PR #17173) preservait `decide` comme legitime par défaut (Tell c.1345-L1 ★★★★★ fondateur). Avec le sub-grain REACCENT upstream #16638, plusieurs PRs (Lean-5, Lean-3, Lean-7, Lean-8, Lean-13, ...) ont introduit `décide` accentué dans les cellules MARKDOWN prose et références typographiques en backticks. L'organe v1 ne les signalait pas. Fix c.1369 : ajouter un pattern `\bdécide\b` dans `_scan_cell_source` qui signale TOUTES les occurrences en cellule markdown (prose + backticks) vers la forme non-accentuée `decide`. Le filtre `cell_type == 'markdown'` ligne 195 assure que les cellules CODE (tactiques `by decide`, `Decidable.rec`) ne sont JAMAIS scannées. Donor case c.1365 : PR #16955 Lean-5 (commit e68477a REPAIR-7 additif). 19 occurrences `décide` fautives restantes en markdown prose. Tests (28 verts, 1 skipped pre-existant c.1349-L1) : - test_decide_markdown_prose_signale - test_decide_reference_typographique_signale - test_decide_code_cell_INTACT - test_decide_non_accentue_preserve - test_decide_repair_corrige_atomicite - test_decide_accentue_signale (TestScanCellSource) Anti-régression : test_decide_jamais_signale (decide sans accent = JAMAIS signale, convention main préservée). Verification : - python scripts/notebook_tools/repair_morpho.py --self-test : OK (8 invariants) - python -m unittest scripts.notebook_tools.test_repair_morpho : 28 OK - scan Lean-5 donor : 19 findings `décide -> decide` - scan Lean-1-Setup (main propre) : 0 findings Impact : la classe `décide` ouvre la sous-classe de sub-grains REPAIR-N mécanisables. Les 19 fautes Lean-5 + fautes futures seront corrigées par `repair_morpho.py` au lieu d'être escaladées manuellement. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * ci: retrigger checks PR #17346 (validate repair_morpho decide extension) * feat(tooling,#17346): reconcile repair_morpho semantics v1/v2, 5 patterns, tests under CI path Consolidation dispatch (c.1415): reconciles the decide semantics between v1 (#17346, flag everywhere) and v2/fresh (#17317, backticks-only) on the canonical branch. Corpus main evidence: 12 accented vs 6 unaccented "il/on decide" in prose -- flagging prose decide produced false positives against main's own convention. Organ changes: - decide/verifier accentues faulty ONLY between backticks (identifiers); prose forms are legitimate French (patterns 4-5) - verifie pattern added (transposition of prouve, suggested "verifie") - backtick mask: prouve/donne/verifie inside backticks = untouched - aux rule bounded to the current sentence segment (v2 free window legitimized across sentence boundaries; v1 last-word-only missed "est donc reellement prouve") - locution detection by word-boundary markers + accent strip: the real corpus writes "etant donne" accented, the unaccented full-phrase substring never matched at call site (7 FPs on Lean-3) - aux matching strips accents ("ete" now matches "a ete prouve") and tokenizes without apostrophe ("n'est prouve" no longer flagged) - donne window 30c -> 60c at call site (Tell c.1317-L7) - repair application now positional (end-to-start) on exact finding offsets; the old matches[-1] re-search could edit a legitimate occurrence following a faulty one Tests moved to scripts/notebook_tools/tests/ (pytest.ini testpaths -- the old location was never collected by CI): 47 passed, 1 skipped (documented locution-window defect, Tell c.1349-L1). Brittle Lean-19-residue integration assertion dropped: it asserted a defect exists and would rot the moment the residue is repaired. Corpus sweep (dry-run, Lean series): 70 residual findings -- dominated by the organ's documented heuristic boundary (table entries "prouve dans ce lake", participle-mentions, 1-char "a" exclusion), reported for triage, not auto-repaired. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> Co-authored-by: myia-ai-01 <myia.ai.01.myia@gmail.com>
#16956) * docs(notebooks,#16638): reaccent Lean-4 Quantifiers (filtre print C.2) 245 substitutions / 45 cells / +66/-66 mirror strict. Sub-grain Lean-4 = Quantifiers (forall, exists), vocabulaire logique. 0 cells code avec lignes protegees (Lean-4 sans print/assert/return/raise). Suite #16837, #16862, #16868, #16943, #16947, #16948, #16951, #16952, #16953, #16955. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(lean,#16956): REPAIR morphologique map REACCENT (28 faux prouve + 1 decide) (#16982) Tell c.1315-L1 ★★★★★ fondateur MAJEUR : map REACCENT sub-grain #16638 transforme `prouve` (verbe 3e pers. sg) en `prouvé` (participe passé masc. sing.) en prose markdown, et `decide` (tactique Lean) en `décide` (FR) y compris entre backticks. Voie canonique Tell c.1315-L4 ★★★ fondateur NEW : correction ciblée regex inverse (`\bprouvé\b` → `\bprouve\b` quand contexte = verbe, pas participe), PAS byte-identique au main (le main est lui-même déaccentué Tell c.1314-L1 ★★★). Script : `scratchpad/repair_morpho_c1315.py` (heuristique auxiliaire avoir/être + contexte tactique pour décide). 29 corrections cellules [3, 7, 11, 17, 19, 21, 23, 25, 27, 29, 34, 35, 37, 38, 40, 43, 47, 49, 55, 56]. Diff stat strict +26/-26. Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(lean,#16956): REPAIR-1 morphologique map REACCENT (5 'donné' fautifs) Tell c.974 §G.9 — vérification AFTER fix : upstream REACCENT a sur-accents 5 verbes `donné` 3e pers. sans auxiliaire : - Cell #11 src[14]: `on donné le témoin **et** la preuve` → `on donne le témoin **et** la preuve` (verbe 3e pers.) - Cell #40 src[8]: `si on lui donné les bonnes hints` → `si on lui donne les bonnes hints` (verbe 3e pers.) - Cell #47 src[11]: `\`And.intro (hP x) (hQ x)\` donné la paire de preuves` → `\`And.intro (hP x) (hQ x)\` donne la paire de preuves` (verbe 3e pers.) - Cell #49 src[18]: `elle ne donné pas de témoin explicite` → `elle ne donne pas de témoin explicite` (verbe 3e pers.) - Cell #51 src[13]: `une preuve classique ne donné pas d'algorithme` → `une preuve classique ne donne pas d'algorithme` (verbe 3e pers.) Préserve (Tell c.974 §G.9) : - cell #1 `étant donné un x : A` (locution « étant donné ») - cell #13 `conclusion prouvée en utilisant x` (participe attribut) - cell #34 `théorèmes prouvés dans le système` (participe attribut) - cell #3 `souvent donné à la variable` (participe attribut, ambigu — non corrigé) Substitution ciblée par cellule/idx in-place (Tell c.1350-L1 ★★★★ fondateur v2 sans src.copy()). 5 cellules markdown touchées, 0 cellule code, 0 output. Diff 5/5 symétrique, byte-identique newline terminal (Tell c.1331-L5 ★★★★). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(lean,#16956): retrait label variation-tag-missing obsolète Le label datait d'avant l'ajout du Grain tag dans le body. Le body porte 'Grain: MED/notebook-lean — lane myia-po-2024:CoursIA-2' (verifie first-hand via scripts/ci/variation_tag_required.py -> required_pass: true). Le perimeter check rend VERDICT: OK sur 1 fichier (Lean-4-Quantifiers.ipynb, +38/-38). repair_morpho.py --dry-run : 0 finding (les 3 'donné' rapportes sont des locutions figees 'etant/etant donne', a corriger dans l'organe -- voir issue #17323 extension). Pas de REPAIR-N additif requis. Geste purement documentaire, redéclenche le PR gate. * fix(lean,#16956): revert 3 #eval to prouve + restore participle prouve (option a, ai-01 review) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…rphologique REACCENT (#17173) * feat(notebook_tools,#17065): repair_morpho -- organe canonique de correction morphologique REACCENT Commite le fixer `repair_morpho_c1318.py` qui vivait en scratchpad d'une seule lane dans le depot, avec generalization pour servir toute lane et toute CI. **Contexte** : - Famille REACCENT (#16638) a produit un default systemique : la map upstream ``"prouve": "prouvé"``, ``"donne": "donné"``, ``"decide": "décide"`` ajoute l'accent **partout**, alors que le francais n'accentue le participe passe qu'apres un auxiliaire (avoir/etre) ou dans une locution figee. - Verbe 3e pers. du present = **non accente** (jamais adj. participial). - 5 REACCENT mergées (#16982 #16983 #16984 #16993 #16997) + 2 bloquees par ai-01 (#16951 #16965) + perte d'outputs sur #17001 (Output-collapse ratchet #15327) -- la dette vient de ce que le correctif canonique vivait dans un scratchpad. **Correctifs implementes** : 1. ``prouve -> prouve`` uniquement si auxiliaire 2+ chars avant. ``se prouve`` **toujours fautif** (Tell c.1315-L15 fondateur). 2. ``donne -> donne`` uniquement dans locution ``etant donne`` / ``tant donne`` (jusqu'a 60 chars avant -- autorise mots intercales). 3. ``decide`` **jamais accentue** : pas de map upstream fautive. **Garde-fous structurels** (cf tells c.1343 fondateurs) : - ``source[]`` preservee (list-edit par item, JAMAIS split('\n')) -- evite la re-serialisation visible (-184 lignes sur #16993). - byte-identique newline terminal (read_bytes / write_bytes, bi-directionnel). - dry_run=True pour mesurer l'impact sans toucher au disque (Tell c.1340-L3). **Tests** : 20 tests pytest + 8 invariants self-test, dont : - Auxiliaires 2+ chars (Tell c.1315-L12) - Locutions figees (Tell c.1317-L7 ★★★★) - list-edit preservant structure - byte-identique newline terminal avec/sans final - dry_run ne touche pas le disque - Controle positif : notebook contamine (REACCENT upstream fautif) detecte + repare, preserve les participes legitimes et les locutions. - Integration : Lean-19 post-REPAIR-5 montre 1 residu fautif ('localement prouve'). **Usage** : python repair_morpho.py <notebook.ipynb> [--dry-run] [--json] python repair_morpho.py --self-test Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(tooling,#17173): 2 classes unittest.TestCase + skip test bug organe Tell c.974 §G.9 strict : 2 tests Scripts Tests (CPU) FAILURE sur PR #17173. Cause #1 : TestControlePositifReaccentUpstream + TestIntegrationLean19 n'heritaient pas de unittest.TestCase (AttributeError self.assertIn/Greater). Fix : ajouter (unittest.TestCase) aux 2 classes. Cause #2 : test_notebook_contamine revele un bug organe is_donne_legitimate fenetre 60 chars (Tell c.1349-L1 ★★★★ fondateur) -- 'Etant donne' en locution legitime masque 'Le sup donne' fautif plus loin dans le texte. Skip + note explicative + reference issue de suivi (hors scope c.1366). Resultat : 21 passed, 1 skipped. Scripts Tests (CPU) devrait repasser vert. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * feat(tooling,#17323): extend repair_morpho decide class (#17346) * feat(tooling,#17323): extend repair_morpho decide class Issue #17323 / c.1369 -- extension de l'organe canonique repair_morpho.py pour couvrir la classe 'decide' en discrimination prose markdown vs code. Tell c.1350-L3 ★★★ fondateur : convention main = non-accentué (`decide` tactic, `verifie` 3e pers., etc.). Le verbe 3e pers. francais `decide` n'est JAMAIS accentué en prose markdown. L'organe v1 (PR #17173) preservait `decide` comme legitime par défaut (Tell c.1345-L1 ★★★★★ fondateur). Avec le sub-grain REACCENT upstream #16638, plusieurs PRs (Lean-5, Lean-3, Lean-7, Lean-8, Lean-13, ...) ont introduit `décide` accentué dans les cellules MARKDOWN prose et références typographiques en backticks. L'organe v1 ne les signalait pas. Fix c.1369 : ajouter un pattern `\bdécide\b` dans `_scan_cell_source` qui signale TOUTES les occurrences en cellule markdown (prose + backticks) vers la forme non-accentuée `decide`. Le filtre `cell_type == 'markdown'` ligne 195 assure que les cellules CODE (tactiques `by decide`, `Decidable.rec`) ne sont JAMAIS scannées. Donor case c.1365 : PR #16955 Lean-5 (commit e68477a REPAIR-7 additif). 19 occurrences `décide` fautives restantes en markdown prose. Tests (28 verts, 1 skipped pre-existant c.1349-L1) : - test_decide_markdown_prose_signale - test_decide_reference_typographique_signale - test_decide_code_cell_INTACT - test_decide_non_accentue_preserve - test_decide_repair_corrige_atomicite - test_decide_accentue_signale (TestScanCellSource) Anti-régression : test_decide_jamais_signale (decide sans accent = JAMAIS signale, convention main préservée). Verification : - python scripts/notebook_tools/repair_morpho.py --self-test : OK (8 invariants) - python -m unittest scripts.notebook_tools.test_repair_morpho : 28 OK - scan Lean-5 donor : 19 findings `décide -> decide` - scan Lean-1-Setup (main propre) : 0 findings Impact : la classe `décide` ouvre la sous-classe de sub-grains REPAIR-N mécanisables. Les 19 fautes Lean-5 + fautes futures seront corrigées par `repair_morpho.py` au lieu d'être escaladées manuellement. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * ci: retrigger checks PR #17346 (validate repair_morpho decide extension) * feat(tooling,#17346): reconcile repair_morpho semantics v1/v2, 5 patterns, tests under CI path Consolidation dispatch (c.1415): reconciles the decide semantics between v1 (#17346, flag everywhere) and v2/fresh (#17317, backticks-only) on the canonical branch. Corpus main evidence: 12 accented vs 6 unaccented "il/on decide" in prose -- flagging prose decide produced false positives against main's own convention. Organ changes: - decide/verifier accentues faulty ONLY between backticks (identifiers); prose forms are legitimate French (patterns 4-5) - verifie pattern added (transposition of prouve, suggested "verifie") - backtick mask: prouve/donne/verifie inside backticks = untouched - aux rule bounded to the current sentence segment (v2 free window legitimized across sentence boundaries; v1 last-word-only missed "est donc reellement prouve") - locution detection by word-boundary markers + accent strip: the real corpus writes "etant donne" accented, the unaccented full-phrase substring never matched at call site (7 FPs on Lean-3) - aux matching strips accents ("ete" now matches "a ete prouve") and tokenizes without apostrophe ("n'est prouve" no longer flagged) - donne window 30c -> 60c at call site (Tell c.1317-L7) - repair application now positional (end-to-start) on exact finding offsets; the old matches[-1] re-search could edit a legitimate occurrence following a faulty one Tests moved to scripts/notebook_tools/tests/ (pytest.ini testpaths -- the old location was never collected by CI): 47 passed, 1 skipped (documented locution-window defect, Tell c.1349-L1). Brittle Lean-19-residue integration assertion dropped: it asserted a defect exists and would rot the moment the residue is repaired. Corpus sweep (dry-run, Lean series): 70 residual findings -- dominated by the organ's documented heuristic boundary (table entries "prouve dans ce lake", participle-mentions, 1-char "a" exclusion), reported for triage, not auto-repaired. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> Co-authored-by: myia-ai-01 <myia.ai.01.myia@gmail.com>
Grain: MED/notebook-lean — lane myia-po-2024:CoursIA-2 — prev: DEEP/notebook-lean #16979-open
Résumé
REPAIR morphologique de la PR #16956 Lean-4 Quantifiers : la map REACCENT sub-grain #16638 a transformé
prouve(verbe 3e pers. sg correct) enprouvé(participe passé masc. sing. incorrect) en prose markdown, etdecide(tactique Lean) endécide(FR) entre backticks. 29 corrections cellules [3, 7, 11, 17, 19, 21, 23, 25, 27, 29, 34, 35, 37, 38, 40, 43, 47, 49, 55, 56]. Diff stat strict +26/-26.Diagnostic Tell c.1315-L1 ★★★★★ fondateur MAJEUR
Le défaut a été identifié par revue structurelle NanoClaw sur #16956 : 28 faux
prouvéajoutés en prose markdown + 1 fauxdécideentre backticks (omega,décide,simp— tactique Lean cassée). Cause racine = map REACCENT sub-grain #16638 contient :"prouve": "prouvé"qui transforme verbe en participe"decide": "décide"qui transforme tactique en FR, y compris entre backticksVoie canonique Tell c.1315-L4 ★★★ fondateur NEW
REPAIR ciblé regex inverse, PAS byte-identique au main (le main est lui-même déaccentué Tell c.1314-L1 ★★★, donc une restauration byte-identique = déréaccentuation, pas REPAIR). Heuristique :
\bprouvé\b→\bprouve\bsauf si précédé d'un auxiliaire avoir/être (légitime participe passé)\bprouvé\baprèsse→ faux (se prouver = verbe pronominal, pas participe)\bdécide\bentre backticks ou dans cellule contenant tactique entre backticks →decideScript
scratchpad/repair_morpho_c1315.py— script réutilisable pour futurs PRs sub-grain #16638 impactés (Lean-16b #16868, Lean-7 #16952, Lean-8 #16953 à scanner).Intégrité C.2
prouvérestantestauxiliaire = légitime)déciderestantTells fondateurs c.1315
décideen prose (cellules mentionnant tactiques entre backticks).se prouvétoujours fautif →se prouve.a1 char ambigu (lettre vs auxiliaire) → exigé 2+ char pour signal auxiliaire.🤖 Generated with Claude Code