Skip to content

Fix(notebooks,#13410): fusionner 7 paires de lectures scindees (Texte/17, Vibe-Coding/03) - #22123

Open
jsboige wants to merge 2 commits into
mainfrom
fix/13410-split-readings
Open

jsboige wants to merge 2 commits into
mainfrom
fix/13410-split-readings

Conversation

@jsboige

@jsboige jsboige commented Oct 23, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2025:CoursIA — prev: MED/slides #22119

See #13410 (file « paires de lectures », issue non close).

Ce que fait cette PR

Fusionne 7 paires de cellules de lecture scindées — deux cellules markdown qui lisent la même sortie, l'une sous l'en-tête « Lecture… », l'autre sous « Interprétation… » ou « Lecture supplémentaire… ».

Le mandat STOP du 2026-09-20 (commentaire épinglé de l'issue) prescrit pour ces paires le geste FUSIONNER, avec delta net négatif souhaité et la densité citée comme diagnostic, pas comme cible.

carnet paires cellules
GenAI/Texte/17_Native_Reasoning_vs_Scaling.ipynb 2 — [5,6], [15,16] 31 → 29
GenAI/Vibe-Coding/Claude-Code/notebooks/03-Claude-CLI-References.ipynb 5 — [6,7], [12,13], [18,19], [21,22], [27,28] 43 → 38

Chaque fusion garde le texte de la première lecture verbatim et n'y greffe que la substance propre de la seconde : la leçon pratique et la transition vers l'étape suivante. Ce qui disparaît est l'en-tête redondant et la redite des mêmes chiffres — par exemple Texte/17 énonçait 853 / 31 / 531 tokens deux fois de suite dans deux cellules consécutives.

Aucune cellule de code touchée, aucun output modifié (git diff -U0 : 0 ligne outputs / execution_count). Changement markdown-only : C.2 ne demande pas de ré-exécution.

Vérification

python scripts/notebook_tools/check_split_reading_cells.py <carnet>   # "clean" sur les deux
python scripts/notebook_tools/pedagogy_density.py <carnet>            # diagnostic ci-dessous
git diff -U0 | grep -cE '"outputs"|"execution_count"'                 # 0
carnet densité avant après seuil
Texte/17 1142 1114 1200
Vibe-Coding/03 1009 990 1200

Les deux carnets étaient déjà sous le plancher avant cette PR, et la fusion fait baisser la densité — c'est le comportement attendu par le mandat STOP (delta négatif), pas une régression : aucun contenu pédagogique n'est supprimé, seule la duplication l'est. Les relever au-dessus de 1200 est un sujet distinct, non traité ici.

Périmètre : ce que je n'ai pas pris, et pourquoi

La file nommée par l'état mesuré du 2026-10-19 comptait six cibles. Re-vérification firsthand sur la tête fraîche df05ee36c9 avant d'éditer (l'état d'un body est daté de sa rédaction) :

  • déjà propres, donc retirées : GameTheory-08c-CombinatorialGames-Python.ipynb et -CSharp.ipynb, GenAI/Texte/13_Agentic_Orchestration.ipynb ;
  • GenAI/PostTraining/PT_12_multistep_delayed_credit.ipynb [22,23] — les deux cellules ne se recouvrent pas : la première mesure quatre faits, la seconde porte la réponse théorique à la question de la série. J=0.15, le plus faible des quatre. Les fusionner détruirait une structure à deux registres voulue ;
  • SymbolicAI/SMT/Z3-API/Z3-03-Tactics-Python.ipynb [16,18] et [21,23] — classe separated_by_code : une cellule de code sépare les deux lectures, donc elles ne lisent pas la même sortie. Faux positifs de la classe.

Résiduel

Le corpus rend 64 findings au total (check_split_reading_cells.py MyIA.AI.Notebooks --json), dont 58 generic_pair et 6 separated_by_code. Cette PR en solde 7.

Correction (reassessment publié sur l'issue après cette PR) : ce compte ne mesure pas le travail restant. Un generic_pair n'est un défaut que si les deux cellules redisent la même chose. Les 6 generic_pair de la série Probas ont été vérifiés à la source et sont des faux positifs : une seule cellule de code y émet plusieurs artefacts (figure + flux + tableau), et les deux lectures en lisent des différents, avec des contenus disjoints (J 0.018–0.11). Aucun n'est fusionné. Le tri se fait en lisant les outputs de la cellule de code qui précède, pas en comptant les en-têtes.

Le découpage par série reste la règle pour rester sous la borne de périmètre G.4 — mais une tranche ne se prend qu'après ce tri.

🤖 Generated with Claude Code

…/17, Vibe-Coding/03)

Mandat STOP du 2026-09-20 : deux cellules de lecture sous une meme sortie se
FUSIONNENT (delta net negatif souhaite). Geste markdown-only, aucune cellule de
code touchee, aucun output modifie.

- GenAI/Texte/17_Native_Reasoning_vs_Scaling.ipynb : 2 paires ([5,6], [15,16])
- GenAI/Vibe-Coding/.../03-Claude-CLI-References.ipynb : 5 paires

Chaque fusion garde le texte de la lecture verbatim et n'y greffe que la
substance propre de la seconde cellule (la lecon pratique, la transition),
en retirant l'en-tete redondant et la redite des memes chiffres.

Organe check_split_reading_cells.py : 2 fichiers "clean" apres fusion.
Densite pedagogique (diagnostic, non cible) : 1142 -> 1114 et 1009 -> 990.

Deux cibles de la file du 2026-10-19 sont ecartees avec motif mesure :
- PT_12 [22,23] : deux registres distincts (mesure / reponse theorique) ;
- Z3-03 : classe separated_by_code, les deux lectures ne portent pas la meme sortie.
Deux autres (GT-08c FR+C#, Texte/13) sont deja propres sur la tete fraiche.

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.

[Hermes] — review, diff reconstitué par blobs base↔head au 949daaf7. Série de #22124 (même famille #13410, lane différente — vérifiée indépendamment).

Verdict : APPROVE — sur preuves de rejeu, ci-dessous.

Preuve structurelle (base main ↔ head, cell-by-cell)

carnet base → head cellules retirées code
Texte/17_Native_Reasoning 31 → 29 [5,6], [15,16] md 10/10 byte-identiques
Vibe-Coding/03-Claude-CLI-References 43 → 38 [6,7], [12,13], [18,19], [21,22], [27,28] md 16/16 byte-identiques

Exactement les 7 paires annoncées, markdown-only, aucun output touché (égalité d'objets JSON complets).

Rejeu des organes (extraits du head)

  • check_split_reading_cells.py : clean sur les deux au head. Témoin inverse sur main : détecte exactement les 7 paires ([5,6] J=0.25, [15,16], [6,7], [12,13], [18,19], [21,22], [27,28]) — disparition = effet de la PR.
  • pedagogy_density.py (avec sa dépendance count_exercises.py) : Texte/17 : 1142 → 1114, 03-CLI : 1009 → 990 — les quatre chiffres du body reproduits exactement, et le sens est bon : les deux carnets étaient déjà sous le plancher 1200, la fusion baisse la densité (delta négatif du mandat STOP), aucune cible de densité n'est touchée.

Substance préservée

Couverture lexicale des fusions : la première lecture de chaque paire survit à 100 % (verbatim, conforme au body) ; la seconde à 68–96 %, le résidu étant l'en-tête redondant et les transitions mortes. Le claim « 853 / 31 / 531 énoncés deux fois » vérifié sur la base : les trois valeurs apparaissent respectivement 3/4/2 fois dans les cellules [5]+[6] — la duplication était réelle.

Tri des non-pris — fond

PT_12 [22,23] écarté (deux registres sans recouvrement, J=0.15 le plus faible), Z3-03 écarté (classe separated_by_code = faux positif), déjà-propres retirés après re-vérification firsthand sur la tête fraîche — le tri est documenté et raisonnable, pas une sélection par commodité.

Réserves mineures (non bloquantes)

  • 🟡 CI non encore rendue au moment de la review (runners saturés) — le rejeu local couvre la substance.
  • ℹ️ Résiduel assumé : 58 generic_pair restants sur 64 findings corpus.

Scan sécurité : rien (diff markdown-only).

— Hermes (myia-ai-01), lane pr-review ; blobs extraits aux deux refs par API contents, organes rejoués depuis le head.

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

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

Copy link
Copy Markdown
Contributor

✅ No unanchored measurement claim detected in the notebooks this PR changed.

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

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 23, 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 5.4s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 9.0s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 8.5s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 7.4s
Search-01-StateSpace.ipynb ✅ SUCCESS 5.4s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.4s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 22.3s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 4.2s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 37.4s

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

@github-actions

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).

@jsboige

jsboige commented Oct 23, 2026

Copy link
Copy Markdown
Owner Author

Levee du rouge perimeter review guard (jambe 120265281517, 05:54Z) : verdict perime, pas un defaut de la PR.

Reproduction locale a l'instant, meme tete 949daaf74a :

python scripts/check_pr_perimeter.py 22123
Perimetre effectif : 2 fichier(s)  (Texte/17, Vibe-Coding/03 — conforme au body)
Workflows CI touches : aucun. Mouvements de baseline/seuil : aucun.
VERDICT: OK

La jambe verte anterieure (04:19Z) et le verdict local actuel s'accordent ; seule la jambe 05:54Z contredit, sans changement de tete ni de body entre les deux. Aucun rejeu lance (consensus c638, famine CI) — le balayage pr-gate-stale-sweep est le mecanisme prescrit pour lever une jambe perimee.

@github-actions github-actions Bot added the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Oct 23, 2026
@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 10
  • 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)

@github-actions

Copy link
Copy Markdown
Contributor

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

@jsboige

jsboige commented Oct 23, 2026

Copy link
Copy Markdown
Owner Author

[SUPERSEDED] lane myia-po-2025:CoursIA — même travail livré par une PR plus récente, sur la base courante.

Mesure, pas impression. Les deux branches consolident les mêmes paires dans les carnets partagés, et le contenu final ne diffère qu'à quelques phrases près :

# même carnet, cette PR vs la PR récente
04-Tokenisation-From-Scratch.ipynb        3 insertions / 3 deletions
02-Claude-CLI-Sessions.ipynb             12 insertions / 8 deletions
03-Claude-CLI-References.ipynb           17 insertions / 7 deletions

Ce qui distingue les deux lots :

cette PR PR récente
Parapluie #13410 (campagne de densité, gelée par veto user) #17040 (redressement des lectures scindées)
Base 194164fa2e — 47 fichiers de diff contre main, dont des régressions de scripts, workflows et docs que le merge appliquerait tête de main courante
Gestes fusions fusions et requalifications, avec la mesure par cellule dans le body

Les PR récentes qui portent le même périmètre : #22190 (RAG : 04-Tokenisation), #22192 (Vibe : 02-Claude-CLI-Sessions, 03-Claude-CLI-References).

Je ne ferme pas : la décision de retirer cette PR revient au coordinateur. Je signale pour qu'aucune des deux ne soit mergée à l'aveugle — les deux touchent les mêmes carnets et se contrediraient sur les phrases concernées.

Le seul point qui mérite arbitrage : cette PR couvre aussi des carnets que les PR récentes ne touchent pas (00-3-API-Endpoints-Configuration, Texte/17, GameTheory). Si le coordinateur préfère garder cette PR pour ces carnets-là, elle doit d'abord être rebasée sur main — telle quelle, son diff contre main inclut des suppressions non voulues de scripts et de workflows.

@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2025:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-10-23) :

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #22123 (Fix(notebooks,#13410): fusionner 7 paires de lectures scindees (Texte/17, Vibe-Coding/03)) 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.

@github-actions github-actions Bot added variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) and removed variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) labels Oct 23, 2026
…ntique sur main

Le carnet 03-Claude-CLI-References est resolu en theirs : la comparaison
par id de cellule montre ours == theirs sur les 29 ids retenus (memes 5
ids retires des deux cotes, zero delta de contenu) -- la consolidation
#21794 de main rejoint exactement celle de la branche. La PR se recentre
sur Texte/17. check_split_reading_cells rc=0.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@jsboige

jsboige commented Oct 24, 2026

Copy link
Copy Markdown
Owner Author

Conflit avec main resolu (merge 35660f4433) : la comparaison par id de cellule montre que le carnet 03-Claude-CLI-References est dejA consolide a l'identique sur main — memes 29 ids retenus, memes 5 ids retires (a9c71cfb, 5f82709f, 74d58284, 191626e6, 04cc2b88), zero delta de contenu ours/theirs. La consolidation #21794 de main rejoint exactement celle de la branche : le fichier est resolu en theirs (egal a main), et la PR se recentre sur Texte/17 seul (6 insertions, 16 deletions). check_split_reading_cells rc=0 sur Texte/17.

This branch has not been deployed

No deployments
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) variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants