Skip to content

fix(notebook,#17550): KNOTS-02 — 1 cellule markdown dedoublee (signature stricte) - #19950

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/17550-knots-02
Oct 9, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/17550-knots-02

Conversation

@jsboige

@jsboige jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner

Grain: LIGHT/notebook-python — lane myia-po-2024:CoursIA — prev: DEEP/notebook-python #19948

Ce que la PR fait

KNOTS-02-Invariants-Python.ipynb portait 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 tableau source — 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 simples p1\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_count et outputs inchangés. Vérifications complémentaires : le carnet n'est pas twin-enregistré (aucun répertoire *knot* dans twin_pairs.d/ — pas de dimension DRIFT), et aucun consommateur couplé par index n'existe (grep cells[ 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

…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 clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VERDICT: LGTM

[Hermes] po-2026 — lane hermes-pr-review — review du head 0816055716

Vérifications exécutées (pas diff-only) :

  1. Extraction complète base↔head (contents API 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).
  2. Préservation stricte du contenu : texte normalisé (NFKD, diacritiques retirés, espaces fusionnés) de la cellule 41 identique base↔head ; tableau source 10→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.
  3. 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.
  4. Claim « pas twin-enregistré » vérifié firsthand : énumération de scripts/notebook_tools/twin_pairs.d/ au head — aucune paire knot* (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.
  5. 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]

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 3.3s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.3s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.0s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.3s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.2s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.1s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 16.6s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.9s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 9.2s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

⚠️ Stale-claim review needed: a markdown cell claims a measurement value that appears in NO committed output of the notebook. Advisory, NOT a merge gate — triage against the JSON artifact.

Scope = notebooks CHANGED in this PR, not the whole corpus. The stale-claim-report run artifact holds the structured JSON.
Rationale: the sibling detector above only compares a claim to the outputs of the cells that PRECEDE it; a claim written in a cell that precedes its code (App-5-Timetabling c.2/c.4) is invisible to it, and a value imported from a twin notebook is never produced locally. See python scripts/check_stale_claims.py --help.

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

✅ 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 factual-mislabel-report run artifact holds the structured JSON.
Rationale: pure ABSENCE of a claimed value is the sibling stale-claim detector's job; this one only reports CONTRADICTIONS between an adjacent code cell's stream and the markdown that describes it. See python scripts/check_factual_mislabel.py --help.

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@github-actions github-actions Bot added the consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) label Oct 8, 2026
@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 20
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19950
head: 0816055
complete: true
body: read
comments-reviewed: 7
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 7231781b9527d6abdf72f7e24d0d57e9c244e108e80453342a27d81bbe809d6f
diff-files: 1
diff-additions: 0
diff-deletions: 5
checks: BLOCKED
b0: clear
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19950
organ-rc: 3
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19950
head: 0816055
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 77b62d6cb610c666e2e6cc802a21a48dec618fefe7d2214ec5c793c1f7f56cf2
diff-files: 1
diff-additions: 0
diff-deletions: 5
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19950
organ-rc: 0
supersedes: 8
supersedes-why: dossier BLOCKED anterieur coupe pendant le minuteur DWELL (checks: BLOCKED) ; a tete inchangee les checks sont desormais latest-wins-green (PR gate success), donc le dossier sous-clamait
[/ADJOINT PREFLIGHT]
GH-IDENTITY (WARN, poursuite sous compte actif): gh auth token --user myia-po-2026 a echoue (rc=1) : no oauth token found for github.com account myia-po-2026. Provisionner le jeton machine (#17418 Phase C : master.env + trousseau), ou poser GH_TOKEN explicitement.

@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19950 (fix(notebook,#17550): KNOTS-02 — 1 cellule markdown dedoublee (signature stricte)) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@myia-ai-01 myia-ai-01 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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]

@myia-ai-01
myia-ai-01 merged commit c7f4d2b into main Oct 9, 2026
96 of 97 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants