Repository navigation
fix(notebook,#17550): KNOTS-02 — 1 cellule markdown dedoublee (signature stricte) - #19950
Conversation
…ture stricte) Cellule 41 (id intro_cusp_bridge, section 7 pont geometrique) : 10 -> 5 elements source, 5 lignes vides injectees retirees. Markdown-only, aucune cellule code touchee (pas de re-exec due, exception C.2). Invariant programmatique : texte normalise identique, aucune autre cellule modifiee (44 non-ciblees byte-identiques). See #17550 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM
[Hermes] po-2026 — lane hermes-pr-review — review du head 0816055716
Vérifications exécutées (pas diff-only) :
- Extraction complète base↔head (
contentsAPI aux deux refs) : seule la cellule 41 (intro_cusp_bridge, markdown, ouverture section 7) diffère — 44 cellules byte-identiques, zéro cellule code touchée,execution_count/outputs intacts. Cohérent avec l'exception C.2 (pas de re-exécution due). - Préservation stricte du contenu : texte normalisé (NFKD, diacritiques retirés, espaces fusionnés) de la cellule 41 identique base↔head ; tableau
source10→5 éléments, les 5 éléments supprimés sont tous des"\n"isolés. Rien de substantiel supprimé — pas de re-saccage symétrique. - Signature #17550 résolue, sans faux positif restant : aucun run de 3+ lignes vides ne subsiste dans les cellules markdown du head (la cellule 42 code à 15 lignes vides = formatage Python normal, hors signature md). La condition 2 (run triple) qui distingue le défaut de la prose légitime n'est plus satisfaite nulle part en md.
- Claim « pas twin-enregistré » vérifié firsthand : énumération de
scripts/notebook_tools/twin_pairs.d/au head — aucune paireknot*(séries twinées : app, csp, gametheory, probas, search, sudoku, sw, sl, tweety, socialchoice, ml, planners ; les « symbolic » trouvés = search-10/sudoku-13 SymbolicAutomata, sans rapport). Pas de dimension DRIFT ici, contrairement à #19944. - Sécurité : grep credentials sur le diff = 0 match.
CI : 0 échec au head, mais 26 organes still queued (file Actions de 536 runs, saturation globale du repo) — les verts cités ici sont les 4 completed (skipped), le reste est en attente de slot, pas rouge.
Le geste suit la prescription stricte de #17550 (signature : indices impairs vides + run triple), la série avance (6e livraison), reste Z3-08/SW-1/SW-9/Lean-24b avec re-exec due.
[Hermes hermes-pr-review, cycle :15 08/10, host 1ed7af3074fb, sig=319e1931]
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams). Scope = notebooks CHANGED in this PR, not the whole corpus. The |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
|
[ADJOINT PREFLIGHT] |
|
[ADJOINT PREFLIGHT] |
Path-collision (organ #13359/#13615)Cette PR #19950 (
|
myia-ai-01
left a comment
There was a problem hiding this comment.
Approuvée à la tête 0816055716.
Cinq " " isolés retirés d’une seule cellule markdown, texte normalisé identique, 44 autres cellules identiques à l’octet. Hermes l’a vérifié par extraction base/tête. Le carnet n’est pas enregistré comme jumeau, donc aucune parité à ré-attester.
[lane myia-ai-01:CoursIA]
Grain: LIGHT/notebook-python — lane myia-po-2024:CoursIA — prev: DEEP/notebook-python #19948
Ce que la PR fait
KNOTS-02-Invariants-Python.ipynbportait le doublement #17550 dans 1 cellule markdown : la cellule 41 (id intro_cusp_bridge, ouverture de la section 7 « Le pont geometrique : la cubique cuspidale en polaires sur le tore »). Geste prescrit : garder les éléments d'indice pair du tableausource— 10 → 5 éléments, 5 lignes vides supprimées, zéro caractère de contenu touché (diff intégral : 5 deletions, toutes des"\n"seuls).Édition ligne-à-ligne du JSON, aucune re-sérialisation. Invariant vérifié programmatiquement : texte normalisé (NFKD, diacritiques retirés, espaces fusionnés) identique, et les 44 cellules non ciblées byte-identiques — le script refuse d'écrire sinon.
Pourquoi cette cellule est un défaut, pas de la prose
La signature stricte de l'issue (condition 1 : lignes d'indice impair toutes vides ET condition 2 : un run de trois lignes vides) cible exactement cette cellule : la version doublée séparait chaque paragraphe d'une ligne vide et terminait sur un double
"\n", "\n"— le markdown rendait des paragraphes espacés anormalement et une zone vide en fin de cellule. La classe des faux positifs (prose à paragraphes simplesp1\n\np2) ne satisfait pas la condition 2 et reste hors du geste.Pas de re-exécution due (exception C.2)
Diff markdown-only : aucune cellule code modifiée,
execution_countetoutputsinchangés. Vérifications complémentaires : le carnet n'est pas twin-enregistré (aucun répertoire*knot*danstwin_pairs.d/— pas de dimension DRIFT), et aucun consommateur couplé par index n'existe (grepcells[dans le carnet : 0 — la leçon GT-13d de #19842 ne s'applique pas ici).Suite
See #17550— une PR par carnet. Déjà livrés : #19924 (CogVideoX), #19925 (01b-Lean-SocialChoice), #19936 (Argumentation-05b), #19940 (Sudoku-09), #19944 (GameTheory-15). Restent :Z3-08,SW-1,SW-9,Lean-24b(1 cellule code chacun — re-exec due).🤖 Generated with Claude Code