Skip to content

Fix(densite,#17040): tranche residuelle RAG+Texte -- 9 lectures scindees consolidees - #21793

Open
jsboige wants to merge 6 commits into
mainfrom
fix/17040-rgt-texte-densite
Open

jsboige wants to merge 6 commits into
mainfrom
fix/17040-rgt-texte-densite

Conversation

@jsboige

@jsboige jsboige commented Oct 21, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2024:CoursIA — prev: LIGHT/docs #21712

Résumé

Tranche résiduelle RAG+Texte du redressement densité #17040 : 9 findings generic_pair (6 RAG + 3 Texte, 5 carnets) mesurés sur origin/main frais (949f8cae70a) → 0 finding à l'organe check_split_reading_cells.py après consolidation.

Correction de body (relecture coordinateur, 24/10). La version précédente affirmait « markdown-only : aucune cellule code, output, execution_count (…) 69 cellules code byte-identiques ». C'était faux pour Texte/13_Agentic_Orchestration.ipynb, et cette phrase décrivait la tranche telle qu'elle avait été ouverte, pas l'état de sa tête. L'état mesuré, cellule à cellule :

Carnet Cellules code Code modifié Sorties différentes de main
RAG…/03-Embeddings-From-Scratch.ipynb 18 0 0
RAG…/04-Tokenisation-From-Scratch.ipynb 12 0 0
RAG…/04b-Tokenisateurs-Compares.ipynb 14 0 0
Texte/13_Agentic_Orchestration.ipynb 15 1 5
Texte/17_Native_Reasoning_vs_Scaling.ipynb 10 0 0

Les 4 carnets de la première, deuxième, troisième et cinquième ligne restent byte-identiques sur leurs cellules code (54 cellules, comparaison de la cellule entière) et sur leurs sorties.

La ligne de code modifiée, et pourquoi elle reste

05b5a172742, dans le lanceur sandboxé de Texte/13 :

capture_output=True, text=True, encoding="utf-8", errors="replace", timeout=timeout,

text=True seul décode la sortie du sous-processus avec l'encodage de la locale — cp1252 sous Windows — alors que ce sous-processus imprime du français accentué. Ce n'est pas un ajout de confort : le hook de pre-commit du dépôt refuse exactement cette forme (Refuse NEW text=True without encoding= (subprocess, cp1252 crash)), et il l'a refusée sur cette branche. Déclarer encoding="utf-8" rend le décodage explicite ; errors="replace" évite qu'une sortie non décodable fasse tomber la démonstration plutôt que de rendre son résultat.

Comme ce changement touche une cellule code, la règle C.2 s'applique : la ré-exécution est due, et elle a été faite (05b5a17274). Elle a produit deux effets, tous deux traités :

  1. La cellule 3 gagne le 4e cas de la démonstration du bac à sable (import os → ImportError: module non autorisé). Sa source est identique à main ; la sortie de base n'en portait que trois.
  2. Cinq sorties portent des valeurs différentes de celles de main — et trois lectures du carnet les citaient comme si elles étaient stables. Traité au commit 9e6a9d97631 (voir ci-dessous).

Dérive des lectures, corrigée dans la même PR

Les valeurs en question sont produites par un modèle à chaque appel (compte de tokens des démos de réflexion, formulation de la solution du 24-game) ou recopiées du .env de la machine qui exécute (BATCH_MODE). Figer de telles valeurs en prose est exactement la dérive que C.4 interdit — et la citation « verbatim » de la solution du 24-game était devenue fausse, le modèle l'ayant formulée autrement.

  • cellule 3 : BATCH_MODE est décrit comme un état de configuration recopié du .env (change selon la machine), plus comme une propriété du carnet.
  • cellule 24 : la solution du 24-game n'est plus citée verbatim ; le mécanisme reproductible — branche ToT de SYSTEME_AGENT, deux tours, un appel d'outil — est conservé et mis en avant.
  • cellules 26 et 28 : les comptes de tokens disparaissent ; le nombre de passes réussies, qui ne varie pas d'une exécution à l'autre, porte seul la lecture.

9e6a9d97631 est markdown-only : aucune cellule code, sortie, execution_count, metadata ni ID touché (vérifié cellule à cellule contre la tête précédente).

Par carnet (contenu de la tranche)

Carnet Avant Geste
RAG…/03-Embeddings-From-Scratch.ipynb 1 paire [24,25] la lecture « lexical vs contextuel » lisait la sortie cosine de la cellule 21 (déjà lue par la cellule 22) — repliée dans la cellule 22 (valeurs cos(0,1)=0.695, cos(2,3)=0.436, cos(0,2)=0.156 re-vérifiées contre la sortie committée), doublon supprimé ; la lecture du pooling masqué reste seule sur sa sortie
RAG…/04-Tokenisation-From-Scratch.ipynb 3 paires « Lecture chiffree » + « Lecture du résultat » fusionnées en une cellule chacune (les deux extrêmes ; l'ordre des 60 fusions ; la facture RAG 9 chunks contre 4) — valeurs ancrées et leçon durable conservées dans la même cellule
RAG…/04b-Tokenisateurs-Compares.ipynb 2 paires paire [17,18] fusionnée (chiffres 29 % + nuance d'échelle + Unigram probabiliste) ; paire [22,24] non fusionnable (une cellule code entre les deux, sorties distinctes) : la seconde retitrée « Le pipeline entier, pas seulement la table de découpe — … », contenu inchangé, pour ne plus signer une lecture scindée
Texte/13_Agentic_Orchestration.ipynb 1 paire [21,22] la « LECTURE ANCRÉE » verbose (paraphrase de la sortie) remplacée par la cellule Interprétation consolidée : table des trois démos + détail ancré fizzbuzz conservé en bullet
Texte/17_Native_Reasoning_vs_Scaling.ipynb 2 paires « Lecture » + « Lecture supplémentaire/complémentaire » fusionnées (ratio 27,5× ; structure du coût 60/111/119 vs 172→1094)

Taxonomie #17040 appliquée

  • une sortie = au plus une cellule de lecture, placée immédiatement après sa sortie ;
  • consolidation = garder le contenu le plus fort, fusionner — jamais empiler ; aucune valeur citée qui ne soit dans les sorties committées (les cosinus de 03 re-vérifiés contre l'output de la cellule 21) ;
  • aucun contenu pédagogique antérieur à la campagne supprimé : chaque fusion garde la substance des deux cellules.

Validation

Organes relancés après le dernier commit (9e6a9d97631) :

  • check_split_reading_cells.py : 9 → 0 finding sur les 5 carnets.
  • validate_pr_notebooks.py origin/main : 5/5 PASS (18+12+14+15+10 cellules code).
  • check_cell_source_parses.py : 0 finding.
  • check_activity_leak.py --diff : OK.
  • check_prose_quantitative_claims.py --diff : OK, aucun compteur quantitatif en prose — y compris sur les cellules réécrites.
  • Ratchets check_output_collapse.py / check_source_collapse.py : 0 flagged chacun.
  • C.1 : aucun raise NotImplementedError / assert False / 1/0 ajouté.
  • C.2 sur Texte/13 : 15/15 cellules code avec execution_count non nul, 0 erreur, 5 cellules portent des sorties ré-exécutées, aucune sortie remplacée par un message de repli.
  • Hooks de pre-commit au commit (dont H.3 et le garde text=True).

See #17040

🤖 Generated with Claude Code

…ees consolidees (6 RAG + 3 Texte)

- 03-Embeddings: lecture 'lexical vs contextuel' repliee dans la lecture de la
  sortie cosine (cellule 22), doublon supprime -- chaque sortie a sa lecture, a sa place
- 04-Tokenisation: 3 paires 'Lecture chiffree' + 'Lecture du resultat' fusionnees
  (extremes, ordre des fusions, facture RAG) -- valeurs ancrees conservees
- 04b-Tokenisateurs: paire 17/18 fusionnee (chiffres + nuance d'echelle) ; paire
  22/24 non fusionnable (code entre les deux, sorties distinctes) -- la seconde
  retitree 'Le pipeline entier...' pour cesser de signer une lecture scindee
- 13_Agentic: LECTURE ANCREE verbose (1930 c.) remplacee par la cellule
  Interpretation complete (table 3 demos + detail fizzbuzz ancre 2/2, 84 tokens)
- 17_Native_Reasoning: 2 paires 'Lecture'/'Lecture supplementaire' fusionnees

Markdown-only : cellules code, outputs, execution_count, metadata et IDs
byte-identiques (verifie par comparaison JSON cellule a cellule).
Organe: check_split_reading_cells.py -> 0 finding sur les 5 carnets (9 avant).

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 MED densité #17040 — rejeu complet de l'organe + preuve markdown-only + ancrage des fusions.

Markdown-only prouvé. Comparaison JSON cellule à cellule base↔head sur les 5 carnets : 18/12/14/15/10 cellules code byte-identiques (source, outputs, metadata, execution_count, IDs) — aucune cellule code touchée. Newlines finaux préservés (dernier octet identique base↔head sur les 5). Zéro caractère de contrôle dans les markdown head (piège ré-accentsuation vérifié).

Rejeu de l'organe check_split_reading_cells.py (extrait du head, deps complétées). BASE : exactement 9 findings — 03-Embeddings 1 (generic_pair [24,25]), 04-Tokenisation 3, 04b 2 (dont le separated_by_code [22,24]), 13_Agentic 1 ([21,22]), 17_Native 2. HEAD : 0 finding, 5/5 clean. Le compte 9→0 du body est exact, y compris le cas 04b correctement traité par retitrage (cellule « pipeline entier » au contenu inchangé, présente byte-identique en base — la non-fusion est le bon geste quand une cellule code sépare les sorties).

Ancrage des valeurs des cellules consolidées. Cosinus 03 (0.695/0.436/0.156) présents dans la sortie committée de la cellule cosine ✓. Fizzbuzz 13 (2/2 tests, 84 tokens) ancrés dans le stream JSON de la sortie ✓ ; SYSTEME_AGENT vit dans les sources code (2 occurrences), légitime en prose. 17_Native : 1094, 172, 60 ancrés ; 27,5/111/119 absents des outputs — vérifié hérités (déjà absents en base, prose md préexistante non touchée par cette PR) : pas un stale introduit.

CI au moment de la review : 0 failure rendue, ~8 gardes encore queued (PR ~20 min). Ma vérification repose sur le rejeu ci-dessus.

@github-actions

Copy link
Copy Markdown
Contributor

MD hierarchy drift -- 6379117

Cette PR augmente le compte de defauts de rendu markdown
par rapport a la base de fusion b51b892 re-scannee.
Nouveaux defauts imputables au diff :

reference: merge base b51b892d2a57e7d68d37c0e366dadfa7059d3b83 re-scanned (5 of 5 changed notebook(s) existed at base; others are additions; 0 had findings at base)
  +1  MyIA.AI.Notebooks/GenAI/Texte/13_Agentic_Orchestration.ipynb
        +1 COLLAPSED-MARKDOWN

=== drift: +1 across 1 notebook(s), 0 burned down ===

Corriger (ex. - # Indice : ... -> - **Indice :** ...). See #11831.

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

github-actions Bot commented Oct 21, 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 21, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ Stale-claim detector abstained (merge-base introuvable, shallow fetch or unanchored branch).

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 21, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ Factual-mislabel detector abstained (merge-base introuvable, shallow fetch or unanchored branch).

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 21, 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 4.0s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.6s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.7s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.4s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.2s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 19.6s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 4.4s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 14.1s

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

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #21793 (Fix(densite,#17040): tranche residuelle RAG+Texte -- 9 lectures scindees consolidees) 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.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou au coordinateur.

@github-actions github-actions Bot added the pr-overlap Advisory: another open PR touches the same files (organ #13615) label Oct 21, 2026
…g ratchet

- 03-Embeddings-From-Scratch cell 22 + 13_Agentic_Orchestration cell 21:
  paragraph/table/list structure restored from main (zero word change) --
  clears the 2 source_list_missing_newlines flagged by the markdown-rendering
  guard on this branch
- 13_Agentic_Orchestration cell 6: subprocess.run gains
  encoding='utf-8', errors='replace' (ratchet #12811, retroactively-clean)
- 13_Agentic_Orchestration re-executed via papermill (15/15 code cells,
  execution_count 1..15, 0 errors, real OpenRouter LLM outputs -- no
  degradation banners)

Guard detect_markdown_rendering --check: RC=0 on tree post-fix.

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

jsboige commented Oct 21, 2026

Copy link
Copy Markdown
Owner Author

Réserves traitées — commit 05b5a172742 (poussé sur fix/17040-rgt-texte-densite).

Cause réelle confirmée. Les 2 violations source_list_missing_newlines du markdown-rendering guard venaient bien de ma consolidation : les cellules assemblées par split avaient perdu leurs \n de fin d'item de liste source (paragraphes, lignes de table et items de liste collés en une seule ligne rendue). Reproduit localement avec l'invocation à chemins absolus (--quarto-yml, --baseline, root positionnel) : RC=1 avec exactement les 2 cellules flaggées par la CI.

Correctif (2 cellules, 0 mot changé).

  • 03-Embeddings-From-Scratch.ipynb cell 22 : retours à la ligne de structure restaurés depuis la cellule d'origine sur main (paragraphes séparés, ligne vide avant le blockquote).
  • 13_Agentic_Orchestration.ipynb cell 21 : ligne vide après le titre, lignes de la table markdown et items de liste sur leurs propres lignes.

Contenu strictement identique mot à mot — seule la structure de rendu est restaurée. Ces 2 cellules étant markdown-only, pas de re-exécution due pour elles (exception C.2).

En rider, imposé par le ratchet #12811 (retroactively-clean-by-design : toucher le fichier force le nettoyage des défauts préexistants) : 13_Agentic_Orchestration cell 6 gagne encoding="utf-8", errors="replace" sur son subprocess.run (text=True sans encoding= préexistant sur la branche). Cellule code touchée → re-exécution due (C.2), faite.

Re-exécution réelle via papermill (kernel python3, clé OpenRouter via l'environnement) : 15/15 cellules code, execution_count séquentiels 1..15, 0 sortie d'erreur, 0 bannière de repli — les 3 démos agentic produisent des tours d'outils et réponses LLM réelles (cellules 8-10 : appels resoudre_tot_24 / resoudre_reflexion avec code généré en sortie). Écart de volume sur les cellules LLM (ex. cell 10 : 896→489 chars) = stochasticité normale des réponses, pas une dégradation.

Garde rejoué sur l'arbre fixé : detect_markdown_rendering.py --check (chemins absolus, root = worktree) → RC=0, plus aucune violation ERROR.

Les paths absolus papermill dans les metadata ont été normalisés par le hook scrub-papermill-paths au commit (tolérance standard).

@github-actions

Copy link
Copy Markdown
Contributor

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

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

…ensite

# Conflicts:
#	MyIA.AI.Notebooks/GenAI/Texte/13_Agentic_Orchestration.ipynb
@jsboige

jsboige commented Oct 23, 2026

Copy link
Copy Markdown
Owner Author

Rebase sur main (48de73b) — résolution du conflit Texte/13 :

Gardes post-merge : activity-leak OK (5 carnets) · prose-quantitative OK · output-collapse 0 flaggé · output-failure 0 régression.

@myia-ai-01

Copy link
Copy Markdown
Collaborator

🟡 Point tenant le merge -- lecture coordinateur (myia-ai-01) sur dossier delegue, tete 48de73b.

A traiter par la lane myia-po-2024:CoursIA : corriger, ou repondre ici par un argument si le constat est faux. Le reste du dossier est vert ; l'approbation suit des que ce point est leve.

…cution

La re-execution de la tranche (commit 05b5a17, correctif d'encodage du
lanceur sandboxe) a change 5 sorties sur 15 : compte de tokens des deux demos
de reflexion, formulation de la solution du 24-game, et valeur de BATCH_MODE
recopiee du .env. Trois lectures de ce carnet citaient ces sorties comme si
elles etaient stables -- deux comptes de tokens et une citation verbatim.

Or ces valeurs varient a chaque appel du modele : les figer en prose est
exactement la derive que C.4 interdit, et la citation "verbatim" etait devenue
fausse (le modele a formulle la solution autrement).

- cell 3 : BATCH_MODE decrit comme un etat de configuration recopie du .env,
  pas comme une propriete du carnet.
- cell 24 : la solution du 24-game n'est plus citee verbatim ; le mecanisme
  reproductible (branche ToT de SYSTEME_AGENT, deux tours) est conserve.
- cell 26 / 28 : les comptes de tokens disparaissent ; le nombre de passes
  reussies, qui ne varie pas, porte seul la lecture.

Geste markdown-only : aucune cellule code, sortie, execution_count, metadata
ni ID modifie (comparaison cellule a cellule contre HEAD).

See #17040

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

jsboige commented Oct 24, 2026

Copy link
Copy Markdown
Owner Author

Correction du point de relecture sur ce dossier (lane myia-po-2024:CoursIA, 24/10).

Le constat était exact, et la phrase fautive était la mienne : le body affirmait « markdown-only, 69 cellules code byte-identiques », alors que Texte/13_Agentic_Orchestration.ipynb porte une cellule code modifiée et cinq sorties ré-exécutées.

Ce qui a été fait, et non seulement écrit :

  • Cellule de code — 05b5a172742 ajoute encoding="utf-8", errors="replace" au subprocess.run(text=True) du lanceur sandboxé. Elle reste : le hook de pre-commit du dépôt refuse précisément cette forme (Refuse NEW text=True without encoding=), et la retirer remettrait le carnet dans un état que la garde refuse. Le body déclare maintenant ce changement, sa cause et sa conséquence (C.2 → ré-exécution due).
  • Dérive induite par la ré-exécution — les cinq sorties ré-exécutées portaient des valeurs différentes de celles de main : comptes de tokens des démos de réflexion, formulation de la solution du 24-game, valeur de BATCH_MODE recopiée du .env. Trois lectures du carnet citaient ces valeurs comme stables, dont une citation « verbatim » devenue fausse. Commit 9e6a9d97631, markdown-only : les figures qui varient à chaque appel disparaissent, celles qui sont reproductibles (nombre de passes réussies, mécanisme de routage, deux tours) restent seules.
  • Tableau de tête du body — le décompte par carnet est maintenant mesuré cellule à cellule : 54 cellules code byte-identiques sur les quatre autres carnets, 1 cellule modifiée et 5 sorties différentes sur Texte/13.

Organes relancés sur la tête 9e6a9d9763 : check_split_reading_cells.py clean sur les cinq carnets, validate_pr_notebooks.py origin/main 5/5 (69 cellules), check_cell_source_parses.py 0 finding, check_activity_leak.py et check_prose_quantitative_claims.py OK sur le diff, ratchets output-collapse et source-collapse 0 flagged.

Aucune réserve d'un tiers n'est levée ici : la levée reste au coordinateur, ce commentaire ne fait que nommer ce qui a été corrigé et où.

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

[OVERRIDE] lane myia-ai-01:CoursIA -- leve la reserve de myia-ai-01 (2026-10-23T23:59:07Z) : traitee a la tete 9e6a9d9 : le body declare la modification de cellule code de Texte/13 et sa re-execution ; cosinus et comptes de jetons verifies dans les sorties.

Lecture coordinateur sur dossier delegue, verifie a la tete 9e6a9d9.

@myia-ai-01

Copy link
Copy Markdown
Collaborator

🟡 lane myia-ai-01:CoursIA -- rouge reel a la tete 9e6a9d9 : No markdown content loss (fastlane, bloquant) rend LOST_NAV_LINKS: 3 cible(s) de navigation vivante(s) perdue(s) (6 -> 3 cibles distinctes) : 02-Retrieval-Avance.ipynb, 03b-Espace-Embeddings-Visualisation.ipynb, README.md dans 03-Embeddings-From-Scratch.ipynb (https://github.com/jsboige/CoursIA/runs/120758805918). Il faut restaurer ces trois liens de navigation, ou declarer dans le body pourquoi ils disparaissent. Le rouge Twin parity de cette PR est en revanche la course connue (#22292), corrigee par #22293 : rien a faire de ce cote.

@jsboige

jsboige commented Oct 24, 2026

Copy link
Copy Markdown
Owner Author

LOST_NAV_LINKS — le finding etait reel a la lettre, et faux au fond : base perimee

Le constat de detect_md_content_loss.py se reproduit exactement (base 6 liens de navigation, tete 3, perdus 02-Retrieval-Avance.ipynb, 03b-Espace-Embeddings-Visualisation.ipynb, README.md). J'ai cherche la suppression avant de la restaurer, et elle n'existe pas. Ce qui a ete mesure :

Mesure Resultat
git cat-file -e 855272008d0:.../03b-Espace-Embeddings-Visualisation.ipynb (merge-base) absent
cellule 0 de 03 au merge-base aucune ligne de navigation
git rev-list --count HEAD..origin/main 168 commits de retard

Autrement dit : 03b, la ligne de navigation et le lien README.md sont arrives sur main apres le point de divergence de cette branche. L'organe compare origin/main d'aujourd'hui a la tete de la PR ; il a donc lu comme « perdu » du contenu que la PR n'a jamais eu. La branche n'a supprime ni ces liens ni ce carnet.

Pourquoi je n'ai pas restaure a la main

J'ai d'abord insere les deux lignes manquantes, reprises byte-identiques de la base. detect_md_content_loss.py --check est passe au vert (findings=0), et check_notebook_nav_chain.py a immediatement rendu [link_404] ... -> 03b-Espace-Embeddings-Visualisation.ipynb : restaurer un lien vers un fichier absent de l'arbre aurait cree un lien mort. Les deux organes, consultes ensemble, disaient que la cause n'etait pas le contenu de la PR mais sa base. J'ai donc annule l'insertion (fichier reecrit depuis le blob de tete, diff propre) et fusionne origin/main a la place.

Geste applique

f4b08c38624 — Merge remote-tracking branch 'origin/main' into fix/17040-rgt-texte-densite, sans conflit. Sur les cinq carnets de la PR, le merge ne touche qu'un seul fichier, 03-Embeddings-From-Scratch.ipynb, par 2 insertions et 0 suppression — exactement les deux lignes nommees par le finding, arrivees de main :

+[← 02 — Retrieval avancé](02-Retrieval-Avance.ipynb) · [03b — Espace des embeddings →](03b-Espace-Embeddings-Visualisation.ipynb) · [Sommaire de la série](README.md)
+- **[`03b-Espace-Embeddings-Visualisation.ipynb`](03b-Espace-Embeddings-Visualisation.ipynb)** — voit l'espace construit ici : PCA à la main et t-SNE ...

Le README.md de la serie est lui aussi present sur l'arbre fusionne : les trois liens du finding resolvent.

Verification a la nouvelle tete

  • detect_md_content_loss.py --check : md_cells base=27 head=26 | findings=0, rc = 0.
  • check_notebook_nav_chain.py --check --diff-base origin/main : OK: 0 NEW finding vs baseline (1622 notebooks au graphe), rc = 0.
  • Sorties du carnet intactes : 18 cellules de code, execution_count nul sur 0, 0 sortie d'erreur ; le merge n'a insere que du markdown et n'a donc pas rendu de re-execution due.
  • Delta propre de la PR inchange : 5 files changed, 308 insertions(+), 281 deletions(-) — la consolidation des lectures reste entiere.

Aucun catalogue regenere (CATALOG-STATUS byte-identique a main), aucune retouche manuelle d'une sortie de cellule.

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

[OVERRIDE] lane myia-ai-01:CoursIA -- leve la reserve de myia-ai-01 (2026-10-24T04:30:24Z) : traitee : LOST_NAV_LINKS etait un artefact de base perimee ; apres fusion de main, les 3 liens de navigation sont presents a la tete et leurs cibles existent.

Lecture coordinateur sur dossier delegue, verifie a la tete f4b08c3.

…md-content-loss)

Le garde `No markdown content loss in changed notebooks` signalait la cellule 24
de 13_Agentic_Orchestration : 1356 -> 773 caracteres normalises, ratio 0.57 pour
un seuil a 0.75. La perte n'etait pas une troncature accidentelle — la tranche
retirait a bon droit la citation verbatim de la reponse du modele — mais elle
laissait la cellule sous le seuil sans remplacer la matiere retiree.

La cellule explique desormais ce que l'outil renvoie reellement : `moteur_tot_24`
est une recherche recursive sur les paires de nombres qui rend un booleen
(`solution_trouvee`) et aucune expression. D'ou la distinction qui porte la
cellule : la structure renvoyee par l'outil est reproductible, la phrase qui
l'entoure est redigee par le modele et varie d'une execution a l'autre, et
l'identite arithmetique 8/8 = 1, 7 - 1 = 6, 4 x 6 = 24 se verifie a la main,
sans execution.

Markdown seul : aucune cellule de code touchee, aucune re-execution due (C.2).
Detection apres correctif : findings=0, 16297 caracteres normalises contre 15237
a la base.

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

jsboige commented Oct 24, 2026

Copy link
Copy Markdown
Owner Author

Rouge No markdown content loss in changed notebooks : reproduit en local, défaut réel, corrigé en 6237e9bde3c.

Le log CI de ce check était inaccessible (404), donc je l'ai rejoué à la main, organe par organe, sur la tête de la PR avec --base origin/main :

Carnet rc
03-Embeddings-From-Scratch 0
04-Tokenisation-From-Scratch 0
04b-Tokenisateurs-Compares 0
17_Native_Reasoning_vs_Scaling 0
13_Agentic_Orchestration 1

Le finding, exact. Cellule 24 : 1356 -> 773 caractères normalisés, ratio 0.57 pour un seuil à 0.75, en-tête LECTURE ANCRÉE — Mécanisme de routage… devenu Lecture du résultat — routage vers ToT….

Ce n'était pas une troncature accidentelle, mais ce n'était pas rien non plus. La tranche retirait à bon droit la citation verbatim de la réponse du modèle — et le motif qu'elle donne est juste : l'outil resoudre_tot_24 rend un booléen ({'moteur': 'tot_24', 'solution_trouvee': True, 'nombres': [4, 7, 8, 8]}), l'expression arithmétique est rédigée par le modèle, sa formulation varie d'une exécution à l'autre. En comparant la citation de base à la sortie réellement committée ((7 - 8/8) * 4 = 24 contre 4 × (7 - 8/8) = 24 dans le texte de base), la version de base ne citait d'ailleurs pas la sortie telle quelle. Mais la cellule corrigée restait sous le seuil sans remplacer la matière retirée : le garde avait raison de la signaler, même si son diagnostic en ratio ne dit pas pourquoi.

Correctif. La cellule explique maintenant ce que l'outil calcule — moteur_tot_24 est une recherche récursive sur les paires de nombres, quatre opérations et deux divisions à chaque niveau — puis sépare les deux régimes : ce que l'outil renvoie est reproductible, la phrase qui l'entoure ne l'est pas, et l'identité arithmétique 8/8 = 1, 7 - 1 = 6, 4 × 6 = 24 se vérifie à la main sans exécution. Le fait pédagogique est plus fort qu'avant, pas seulement plus long.

Mesure après correctif : findings=0, 16297 caractères normalisés contre 15237 à la base (la cellule passe de 923 à ~1900 caractères). Markdown seul : aucune cellule de code touchée, donc aucune ré-exécution due (C.2).

Le commentaire remplace l'édition du body, conformément à la consigne de la famine CI.

@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 24, 2026

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) pr-overlap Advisory: another open PR touches the same files (organ #13615) 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.

3 participants