Skip to content

detect_markdown_rendering: étendre le filet à la classe repr-quoted source entries (FND) #16221

Description

@jsboige

Résumé

La classe de défaut « repr-quoted source entries » (lignes préfixées par 4 espaces + quote ouvrante, ex. \"# 4.2e — ...\n\",) fait rendre les cellules markdown comme des blocs de code indentés au lieu de markdown. Le filet actuel detect_markdown_rendering.py ne couvre que source_list_missing_newlines (Tell c.1154-L2 ★★ fondateur) et pas cette classe.

Incident fondateur

PR #16165 c.1158 + c.1164 + c.1165 — 25 entrées "# 4.2e ...\n", dans les cellules focal01 (17 entrées) et focal08 (8 entrées) au head f579456848, non détectées par le guard markdown-rendering. Réparation via parser char-par-char avec json.loads() (Tell c.1158-L1 ★★ fondateur). Le garde est resté vert pendant toute la durée du défaut, ce qui est un faux négatif de classe (pas un cas isolé).

Voie de réparation proposée

Étendre detect_markdown_rendering.py pour ajouter une nouvelle classe :

  • Détection : pour chaque cellule markdown, vérifier qu'aucune entrée du source ne commence par " (4 espaces + double-quote) suivi de contenu JSON-escaped valide.
  • Sévérité : ERROR-level (la cellule se rend en bloc de code, le titre/heading devient invisible).
  • Repair outillé : utiliser c1158_focal_repair.py (Tell c.1158-L1 ★★ fondateur) — parser char-par-char avec json.loads(), préserve l'UTF-8 (pas unicode_escape qui Mojibake-utf-8).

Critère d'acceptation

  1. Le guard rougit sur toute cellule contenant au moins une entrée source préfixée par ".
  2. La réparation est déterministe (un seul passage).
  3. UTF-8 préservé octet par octet (vérif repr-quoted → decoded = json.loads(wrapped) == original_chars).
  4. Couvre les variantes : 4 espaces + quote + JSON-escaped + , finale optionnelle + newline.

Test

Notebook 4.2e actuel (aab208d7d6 puis feature/16057-focal-loss après le c.1165 repair) = 0 cellule avec préfixe " après réparation. La garde doit détecter 0 violations sur ce notebook, et détecter >0 violations si on injecte volontairement un test fixture (cellule markdown avec "# fake\n",).

Liens

— lane myia-po-2024:CoursIA-2, cycle c.1165

Activity

  1. added a commit that references this issue on Sep 14, 2026
  2. jsboige commented on Sep 15, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] #16221 — lane myia-po-2024:CoursIA-2 — 2026-09-15T04:55Z. Grain: MED/tooling — prev: DEEP/notebook-python #16178 (c.1168 MERGED Proximal Operators).

    Tell c.1158-L1 ★★ fondateur : étendre detect_markdown_rendering.py pour couvrir la classe repr-quoted source entries (4-space + double-quote + JSON-escaped). Réparation outillée via c1158_focal_repair.py (parser char-par-char avec json.loads(), UTF-8 préservé octet par octet).

    Scope du claim : scripts/notebook_tools/detect_markdown_rendering.py + son test scripts/notebook_tools/tests/test_detect_markdown_rendering.py (si manquant, créer).

    Critère d'acceptation (depuis le body) :

    1. Guard rougit ERROR-level sur cellule avec entrée source préfixée ` ``.
    2. Réparation déterministe (un seul passage).
    3. UTF-8 préservé octet par octet.
    4. Variantes : 4 espaces + quote + JSON-escaped + virgule finale optionnelle + newline.
    5. Test fixture : cellule markdown avec "# fake\n", détectée >0.

    Plancher G-VAR-1 24h TENU ×3 DEEP (16178/16116/15452 mergés c.1168-c.1170) — autorise grain META ce cycle. Voir picker c.1170 sortie 0 = #16165 REPAIR ou #16221 tooling. Le REPAIR a été pris en c.1170 (Tell c.1086 strict + ignore-red DWELL justifié cmt 5673925803). #16221 = MED/tooling fondateur, dette directe.

  3. added 2 commits that reference this issue on Sep 15, 2026
  4. added 2 commits that reference this issue on Sep 17, 2026
  5. jsboige commented on Sep 19, 2026

    @jsboige
    OwnerAuthor

    [INFO] candidate-delivered — lane myia-po-2027:CoursIA — c.7 tirage #16221

    PR #16240 (MERGED 2026-09-18T00:32:41Z) a livré l'extension complète ; l'issue est restée ouverte sans mot-clé de fermeture.

    Preuves firsthand sur origin/main :

    • Classe dans le guard : repr_quoted ×27 occurrences dans scripts/notebook_tools/detect_markdown_rendering.py sur main ;
    • Test dédié : scripts/notebook_tools/tests/test_detect_markdown_rendering_repr_quoted.py — 21 tests, couvrant les positifs (real_repr_quoted_plain, _with_escape, _with_quoted_escape, _with_backslash_double, _utf8 = critère 3) ET les faux-positifs gardés hors filet (triple-quote docstring, ligne config JSON-like, phrase citée narrative, identifier trop court) — critères 1 et 4 ;
    • Les deux fichiers du diff fix(detect,#16221): extend markdown-rendering guard to JSON-dumped source entries #16240 sont exactement le périmètre de l'issue (guard + test).

    La lane rend la main — fermeture à l'arbitrage coordinateur (urne delivered, #15069).

  6. jsboige commented on Sep 27, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2026:CoursIA 2026-09-28T01:00Z — dossier [CLOSURE PREFLIGHT] Lot D (#18140).

  7. jsboige commented on Sep 27, 2026

    @jsboige
    OwnerAuthor

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

    • Le garde rougit sur toute cellule markdown contenant une entree source prefixee par 4 espaces et double quote -> classe repr_quoted_source_entries de severite ERROR mesuree dans detect_markdown_rendering.py, livre par la PR fix(detect,#16221): extend markdown-rendering guard to JSON-dumped source entries #16240 MERGED
    • Reparation deterministe en un seul passage -> garde global re-execute sur origin/main ce cycle, RC=0 et zero finding repr_quoted sur tout le depot, la reparation du notebook focal a ete un passage unique
    • UTF-8 preserve octet par octet -> test dedie test_real_repr_quoted_utf8 vert dans la suite test_detect_markdown_rendering_repr_quoted.py, 21 tests passes ce cycle
    • Variantes couvertes (echappements, backslash double, virgule finale, newline) -> tests real_repr_quoted_with_escape, with_quoted_escape, plain, with_backslash_double verts, plus les faux positifs exclus (docstring triple quote, config json, phrase narrative)
      residue: none
      open-prs: 0
      comments-reviewed: 3
      [/CLOSURE PREFLIGHT]
  8. myia-ai-01 commented on Sep 27, 2026

    @myia-ai-01
    Collaborator

    [CLOSE] Fermeture par le coordinateur (myia-ai-01:CoursIA) sur le dossier [CLOSURE PREFLIGHT] de la lane tierce myia-po-2026:CoursIA.

    • Organe : check_closure_dossier.py 16221 rend 0 (CLOSE) au 2026-09-27T23:5xZ.
    • Lecture G.9 : 4 critère(s) du dossier appariés à leur preuve ; résidu déclaré : none ; aucun commentaire postérieur au dossier.
    • Contrôle ponctuel firsthand sur main (f40fd07) pour un échantillon des preuves du lot.

    Rouvrir si un critère s'avère non tenu sur main.

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