Skip to content

Fix(ML,#23384): 2.3b-Naive-Bayes-Generatif -- convergence du kernel canon 3.13.14 - #23508

Merged
jsboige merged 1 commit into
mainfrom
feat/nb23b-canon313
Oct 31, 2026
Merged

jsboige merged 1 commit into
mainfrom
feat/nb23b-canon313

Conversation

@jsboige

@jsboige jsboige commented Oct 30, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2024:CoursIA — prev: MED/notebook-python #23493

Resume

Tranche de convergence 3.13 du census (#23384) sur MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/2.3b-Naive-Bayes-Generatif.ipynb (famille kernelspec python3).

Le carnet est déjà seedé : la ré-exécution sur le kernel canon reproduit les mêmes sorties. 0 cellule à sortie dérivée, 0 valeur de prose périmée sur les 30 valeurs décimales citées dans les cellules markdown.

Verdict SOTA : SOTA-OK — sortie du vrai kernel (sklearn / numpy / scipy / matplotlib), aucun repli, aucune sortie fabriquée.

Ce que change la PR

  • language_info.version 3.13.7 → 3.13.14 (kernelspec python3 inchangé) ;
  • les horodatages d'exécution (metadata.papermill / metadata.execution).

Ce qui diffère sans être du contenu, mesuré cellule par cellule — le diff n'est pas équilibré (148 insertions / 110 suppressions), et voici pourquoi :

Cellule Différence Pourquoi ce n'est pas un contenu
4 octets du PNG matplotlib, 38 944 → 38 880 caractères base64 autre version de rendu ; le text/plain de la figure est identique
5 octets du PNG matplotlib, même longueur, contenu différent idem ; text/plain identique

Partout ailleurs : 9/9 sources de code identiques, 0 execution_count modifié, 0 ligne de prose touchée, texte de sortie identique (402 et 408 caractères sur ces deux cellules, inchangés). Le déséquilibre du diff vient de ces deux blobs base64, pas d'une perte : check_output_collapse mesure 0 flaggé.

Diagnostic dérive

  • (a) env / kernel seulement : sorties committées produites par Python 3.13.7, canon 3.13.14. Pas de stochasticité non seedée, pas de dépendance brisée, pas de claim fabriquée.
  • Verdict : CAUSE_FIXED.

Preuves d'execution

  • papermill sur le carnet du worktree, kernel python3 (3.13.14) : rc = 0, 24 cellules, 9 cellules de code, 0 erreur, tous les execution_count renseignés.
  • Ancrage de la prose : 0 épingle périmée sur les 30 valeurs décimales (ancrage sensible au nombre de décimales).
  • LOKY_MAX_CPU_COUNT posé avant l'exécution (précaution mesurée utile sur 2.3c la même journée : sans elle, la sonde joblib/loky de sklearn verse un avertissement machine dans la sortie). Contrôle après exécution : aucune occurrence de wmic / loky / joblib dans les sorties.
  • Pre-commit : tous les hooks applicables passés, dont H.3 ; scrub-papermill-paths a normalisé le chemin absolu de metadata.papermill (métadonnée, pas une sortie) — le commit a donc été avorté une première fois puis repris.

Organes sur le diff commite (origin/main...HEAD, merge-base a330c786d15)

Organe Verdict
check_kernel_drift 0 régression sur 1 carnet changé
check_output_collapse 1 carnet changé, 0 flaggé
check_output_failure_text 1 carnet changé, 0 régression
check_factual_mislabel 0 finding
check_stale_claims 4 findings — 4 sur origin/main, mêmes cellules : hérités
check_markdown_claims_output 11 findings — 11 sur origin/main, mêmes cellules : hérités (advisory)
Twin parity sans objet : aucune paire FR/.NET enregistrée pour ce carnet dans twin_pairs.d/

Portee

Un seul fichier, un seul sujet : la version du kernel. Aucun changement de code, de prose, de bibliographie ni de kernelspec.

See #23384

🤖 Generated with Claude Code

…anon 3.13.14

Re-execution sur le kernel canon. Carnet deja seede : la re-execution
reproduit les memes sorties, la prose n'a aucune valeur a re-deriver.

Mesure : 9/9 sources de code identiques a la base, 0 cellule a sortie
derivee, 0 epingle perimee sur les 30 valeurs decimales citees, 0
execution_count modifie. Le diff ne porte que language_info.version
(3.13.7 -> 3.13.14) et les horodatages metadata.papermill.

See #23384

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@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

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

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

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 4.6s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.6s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 5.3s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.9s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.1s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.6s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 26.5s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.3s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 17.2s

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

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 9
  • 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 merged commit 0bbc0db into main Oct 31, 2026
90 of 91 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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.

1 participant