Skip to content

fix(notebook-python,#18053): ordre code/interpretation, tranche RL - #18109

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/18053-rl-interp-order
Sep 28, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/18053-rl-interp-order

Conversation

@jsboige

@jsboige jsboige commented Sep 27, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2026:CoursIA-2 — prev: LIGHT/tooling #18037

Tranche RL de #18053

Un constat de l'issue, re-verifie sur origin/main avant correction (protocole audit-reassessment).

Carnet Cellule citee Constat de l'issue Verdict Traitement
RL/rl_16_dream_rsi.ipynb [18], INTERP_BEFORE_CODE La cellule « ### Lecture du résultat (les chiffres ci-dessus sont ceux de l'exécution) » lit la sortie de la cellule code [19] qui la suit — la garantie d'incumbent verifiee pas a pas, replay 22.7717 vs incumbent 22.7717 puis 23.9677 vs 23.9677 — et la precede : le titre affirme « ci-dessus » pour des chiffres qui sont en dessous. CONFIRMED La lecture rejoint son output : elle est fusionnee avec la lecture existante de [19] et placee apres le code. Voir la section suivante — la destination prescrite est respectee, la forme differe, pour une raison mesuree.

Concordance verifiee entre la cellule et la sortie qu'elle commente : le texte de [18] cite 22.7717 et 23.04 → 24.00 ; la sortie committee de [19] imprime replay 22.7717 vs incumbent 22.7717 → non-régression VRAIE, et celle de [16] (deux cellules au-dessus) porte la trajectoire 23.0409 / 24.0000 / 23.9515. Les valeurs citees existent donc bien dans les sorties — le defaut est le placement, pas le contenu. Aucun FALSE POSITIVE sur cette tranche.

Le deplacement prescrit, mesure avant d'etre applique

L'issue prescrit : « Deplacer la cellule [18] apres la cellule [19] (la placer entre [19] CODE et [20] MARKDOWN) ». Cette destination place deux lectures sous la meme sortie — [18] puis [20], qui lit les memes ties (22.7717 / 23.9677). Mesure sur la garde : detect_added_readings rend 1 finding SECOND_READING.

Le depot applique la regle « un output, une lecture » (« si on rajoute une lecture, on modifie le paragraphe de lecture existant, on n'en rajoute pas un deuxieme »). Les deux cellules fusionnent donc en une seule, placee apres [19] : la destination prescrite par l'issue est respectee, la separation des deux cellules disparait. Le renvoi interne de [20] (« exactement la bascule que la lecture ci-dessus annoncait ») devient « le point 1 ci-dessus », puisque [18] n'est plus une cellule distincte.

Variante ecartee — fusionner [18] dans [17] passe aussi le cliquet (findings=0) mais laisse 22.7717 cite avant le code [19] qui le produit : ce serait conserver le defaut meme que l'issue decrit. Mesure des deux variantes avant choix.

Etat obtenu

[16] code      la boucle miniature (BUDGET, GRID, dream(), 2 iterations)
[17] markdown  **Lecture chiffree — la trajectoire online en trois lignes.**
[19] code      la garantie d'incumbent, verifiee pas a pas
[20] markdown  ### Lecture du resultat + **Lecture chiffree — la non-regression, vue sur les ties.**   <- fusion
[21] markdown  ## 7. L'ablation §5.1

37 → 36 cellules. La garde Split-reading passe de paires 2 -> 0 : les deux en-tetes de lecture consecutifs disparaissent.

Preservation du contenu, verifiee mecaniquement

Comparaison ligne a ligne entre les deux cellules d'origine et la cellule fusionnee : aucune ligne de contenu perdue. Deux ecarts, tous deux attendus :

  • la ligne de renvoi change (« la lecture ci-dessus annoncait » → « le point 1 ci-dessus ») ;
  • la fin de [18] n'avait pas de retour a la ligne, ce qui collait sa derniere ligne au debut de [20] ; la fusion retablit la separation des paragraphes.

Invariant : aucune cellule de code modifiee

  • appariement par id des cellules de code : 13 cellules, signatures identiques (type, source, execution_count, outputs) ;
  • aucun id duplique ;
  • dans le diff brut, la seule ligne "cell_type" touchee est markdown (-1, la cellule fusionnee). Aucune ligne "cell_type": "code" n'apparait ;
  • format JSON inchange (indent=1 + newline final), detecte par aller-retour avant ecriture.

Consequence : pas de re-execution due (C.2/C.3). Les sorties committes restent celles de main.

Gardes

Garde Resultat
check_split_reading_cells.py --base-ref origin/main --head HEAD 0 en regression · paires 2→0
check_interp_positioning.py findings total : 0
check_cell_source_parses.py findings: 0
Pre-commit (gitleaks, H.3 execution, #13326 compilabilite, normalisations .NET/papermill) tous passes

Perimetre

Un carnet, un constat. Les autres series de #18053 sont livrees par tranches separees — deja ouvertes par cette lane : GenAI/Audio (#18073), GenAI/Image (#18075), Probas/DecisionTheory (#18103), Probas/PyMC (#18106), IIT (#18107).

See #18053 — l'issue porte d'autres series et reste ouverte.

🤖 Generated with Claude Code

Un constat de #18053 sur RL/rl_16_dream_rsi.ipynb, re-verifie sur main avant
correction : CONFIRMED.

La cellule [18] « ### Lecture du resultat (les chiffres ci-dessus sont ceux de
l'execution) » lit la sortie de la cellule code [19] — la garantie d'incumbent
verifiee pas a pas, replay 22.7717 puis 23.9677, valeurs presentes dans la
sortie committee — et elle la precede : le titre affirme « ci-dessus » pour des
chiffres qui sont en dessous.

L'issue prescrit de deplacer [18] apres [19]. Mesure faite AVANT d'appliquer :
ce deplacement place deux lectures sous la meme sortie ([18] puis [20], qui lit
les memes ties 22.7717 / 23.9677), et le cliquet split-reading rend
SECOND_READING (findings=1). Le depot applique « un output, une lecture » : les
deux cellules fusionnent en une seule, placee apres [19] — la destination
prescrite par l'issue est respectee, la separation disparait. Le renvoi interne
de [20] (« exactement la bascule que la lecture ci-dessus annoncait ») devient
« le point 1 ci-dessus », [18] n'etant plus une cellule distincte.

Variante ecartee : fusionner [18] dans [17] passe le cliquet mais laisserait
22.7717 cite avant le code qui le produit — le defaut meme que l'issue decrit.

Preservation verifiee mecaniquement : aucune ligne de contenu perdue entre les
deux cellules d'origine et la cellule fusionnee ; seule la ligne de renvoi
change, et la fin de [18] qui n'avait pas de retour a la ligne est retablie.

Aucune cellule de code modifiee (signature par id, 13 cellules identiques a
origin/main), aucun id duplique, format JSON inchange (indent 1 + newline).
Pas de re-execution due (C.2/C.3).

See #18053

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@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

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

⚠️ 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

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 11.9s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 10.0s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 17.7s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 13.1s
Search-01-StateSpace.ipynb ✅ SUCCESS 10.6s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 9.2s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 69.9s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 6.4s

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

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 13
  • 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 Sep 28, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 18109
head: c112bcd
complete: true
body: read
comments-reviewed: 5
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: aedafa5ff4e8091f3952ee51c5310eecb66974ea0f9ac7aef3d77142cc55d4c3
diff-files: 1
diff-additions: 18
diff-deletions: 33
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

Dossier READY sur PR #18109 (lane myia-po-2026:CoursIA-3, cycle c.250, 28/09 08:30Z).

Substance : fix(notebook-python,#18053): tranche RL (1 constat).

Substance : +18/-33 sur 1 fichier. Grain MED/notebook-python.

État : CLEAN+MERGEABLE+rev=NONE, B.0 rc=0.

Grain: META/secretary -- lane myia-po-2026:CoursIA-3 -- prev: META/secretary c.249

@myia-ai-01
myia-ai-01 merged commit 33cf070 into main Sep 28, 2026
87 of 88 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants