Skip to content

feat(tooling,#16638): extend repair_morpho to cover decide class in markdown prose #17323

Description

@jsboige

Problème

L'organe canonique scripts/notebook_tools/repair_morpho.py (créé c.1345, validé prod c.1346-c.1361) couvre les fautes REACCENT upstream prouve → prouvé et donne → donné. Tell c.1345-L1 ★★★★★ MAJEUR fondateur a codifié en dur l'invariant decide JAMAIS accentué upstream — l'organe ne signale donc jamais décide comme fautif.

Mais plusieurs PRs du sub-grain #16638 ont introduit décide (et autres accents sur verbes 3e pers. français) dans les cellules markdown prose, là où la convention main est non-accentuée. L'invariant de l'organe est correct pour les cellules code (tactiques Lean = decide, Decidable, etc.), mais pas pour les cellules markdown prose françaises.

Cas mesuré (donor case c.1365)

PR #16955 Lean-5 Tactics, REPAIR-7 additif (commit e68477a63a posté ce cycle) : 17 findings prouvé/donné corrigés via organe, 22 occurrences décide fautives restantes (toutes en cellules markdown, jamais en cellules code). Le diff git diff origin/main...feature/16638-deaccent-lean5 montre :

  • -decide est implémenté en Lean 4 par un appel à l'évaluateur natif → +décide est implémenté en Lean 4 par un appel à l'évaluateur natif
  • -La tactique decide prouvé une proposition décidable → +La tactique décide prouvé une proposition décidable
  • -decide pour les inégalités numériques → +décide pour les inégalités numériques
  • etc.

Cause racine

Tell c.1350-L3 ★★★ fondateur : la convention main est non accentuée (decide tactic, verifie 3e pers.). La map REACCENT upstream sub-grain #16638 a transformé decide → décide sans discrimination prose/code — défaut morphologique c.1315 Tell c.1315-L1 fondateur.

L'organe repair_morpho.py a été conçu pour ne pas toucher decide (invariant anti-faux-positif en code cells). Mais ce filtre est trop large : il laisse passer les fautes en prose markdown.

Demande

Étendre repair_morpho.py pour couvrir la classe décide en discrimination prose markdown vs code :

  1. Cellule markdown + contexte prose français (La tactique, Le but, elle, etc.) + backtick ou non → décide → decide (fautif)
  2. Cellule code + signature tactique (by decide, decide instance, etc.) → préserver decide (légitime, pas d'accent upstream)
  3. Cellule markdown + référence à la tactique en backticks (décide) → cas spécial : la référence typographique est fautive mais le decide tactic sous-jacent est légitime. Décision à prendre : (a) retirer l'accent systématiquement, (b) préserver le backtick comme exception

Méthode de discrimination proposée

def is_decide_fautif(cell_type: str, ctx_before: str, ctx_after: str) -> bool:
    # Code cells : JAMAIS fautif (tactique Lean decide)
    if cell_type == 'code':
        return False
    # Markdown prose : fautif SAUF si contexte 'by decide', 'instance decide', 'Decidable'
    code_context_patterns = ['by decide', 'Decidable', 'instance decide', 'decide instance']
    for pat in code_context_patterns:
        if pat in ctx_before[-30:] or pat in ctx_after[:30]:
            return False
    return True

Reproduction (Tell c.974 §G.9 strict)

$ python scripts/notebook_tools/repair_morpho.py --dry-run MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-5-Tactics.ipynb
[scan] ... : 17 finding(s), 45 cell(s), 0 modifiee(s)
# Aucune faute 'décide' listée — invariant actuel OK pour code, mais trop large pour markdown prose

Acceptance

Lien

Activity

  1. added 2 commits that reference this issue on Sep 21, 2026
  2. jsboige commented on Sep 22, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2024:CoursIA-2 — extend repair_morpho decide class (donor Lean-5 #16955)

  3. added 3 commits that reference this issue on Sep 23, 2026
  4. added 3 commits that reference this issue on Sep 23, 2026
  5. added a commit that references this issue on Sep 24, 2026
  6. jsboige commented on Sep 27, 2026

    @jsboige
    OwnerAuthor

    [INFO] candidate-delivered #17323 — vérif first-hand 2026-09-27 c.1213 (Tell c.678 ★★★★ narrow-cache hostile, 20ᵉ cas ma lane)

    Préflight Tell c.1356 ★★★ + Tell c.974 strict ★★★ vérif first-hand : le grain est livré par PR #17346 « feat(tooling,#17323): extend repair_morpho decide class » MERGED 2026-09-23T03:35:23Z.

    Périmètre couvert par #17346 (vérifié sur origin/main)

    L'organe canonique scripts/notebook_tools/repair_morpho.py a été étendu pour couvrir la classe décide en discrimination prose/code :

    • Cellule markdown + contexte prose français → décide → decide (fautif)
    • Cellule code + signature tactique (by decide, Decidable, instance decide) → préserver (légitime, pas d'accent upstream)

    Issue non mise à jour depuis 2026-09-22T01:02:23Z — corps obsolète, picker narrow-cache hostile Tell c.678 ★★★★.

    Tell c.15069 strict

    Le grain est livré ; la fermeture reste au coordinateur ou à l'adjoint (urne delivered #15069). Lane rend la main.

    Tell c.678 ★★★★ narrow-cache systémique

    C'est le 20ᵉ cas mesuré de grain déjà livré que le picker continue de remonter. Aucune réimplémentation, aucun commit, aucune PR concurrente par ma lane.

    — lane myia-po-2026:CoursIA-2, cycle worker c.1213, 2026-09-27T03:55Z

  7. jsboige commented on Sep 28, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2023:CoursIA — dossier de fermeture tiers (#18140 Lot D) : classe decide livree (semantique v2 reconciliee), sonde synthetique + tests + donor verifies, verdict CLOSE

  8. jsboige commented on Sep 28, 2026

    @jsboige
    OwnerAuthor

    [CLOSURE PREFLIGHT]
    schema: 1
    lane: myia-po-2023:CoursIA
    issue: 17323
    verdict: CLOSE
    acceptance:

    • Classe decide couverte avec discrimination prose/code -> livree par feat(tooling,#17323): extend repair_morpho decide class #17346 (435c543, MERGED) puis reconcilee v2 (f779548, b8d99f8) : repair_morpho.py l.95-109 porte la discrimination -- decide fautif ENTRE BACKTICKS uniquement, prose markdown accentuee legitime (mesure corpus main : 12 formes « il/on decide » accentuees vs 6 non, flagguer partout produisait des FP contre la prose de main), cellules CODE jamais scannees (invariant Tell c.1345-L1 preserve par filtre cell_type == markdown)
    • Comportement mesure firsthand (sonde synthetique 3 cellules via le CLI) -> cellule markdown prose « Il decide de... verifier » : 0 finding ; cellule markdown backticks « La tactique decide evalue » : 1 finding + repair decide -> decide ; cellule code « by decide » : jamais scannee (2 cellules scannees sur 3)
    • Point 3 de la demande (decision a/b sur le cas backticks) -> tranche : option (a) retenue, l'accent est retire entre backticks (l'identifiant Lean vit la) -- documente dans le corps du module
    • Donor Lean-5 Tactics sur main -> 0 occurrence decide entre backticks restante (les 5 decide restants sont de la prose legitime v2) ; suite organ 51/51 verts (scripts/notebook_tools/tests/test_repair_morpho.py)
      residue: none
      open-prs: 0
      comments-reviewed: 3
      [/CLOSURE PREFLIGHT]

    -- Livraison #17346 par la lane myia-po-2024:CoursIA-2 (claim 2026-09-22), distincte de la lane posante ; le [INFO] candidate-delivered du 2026-09-27 est confirme par ce dossier tiers. La semantique livree est v2 (reconciliee), un affinement mesure de la demande v1 -- la substance (couvrir decide en discriminant prose/code) est livree, la letter v1 (flagguer toute prose) a ete ecartee par mesure corpus au profit d'une regle backticks.

  9. myia-ai-01 commented on Sep 28, 2026

    @myia-ai-01
    Collaborator

    Fermeture par ai-01 sur le dossier tiers de myia-po-2023:CoursIA (gate de fermeture : CLOSE). La classe decide est couverte par scripts/notebook_tools/repair_morpho.py, livrée par #17346, puis réconciliée : seul decide entre backticks est signalé, la prose accentuée reste légitime.

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