Skip to content

fix(pymc,#17222): PyMC-03 — 3 findings Hermes repares (API pt.switch, numerotation exercices 1-2-3, jargon CPT defini) - #17304

Merged
myia-ai-01 merged 3 commits into
mainfrom
fix/pymc-03-audit-findings
Sep 24, 2026
Merged

myia-ai-01 merged 3 commits into
mainfrom
fix/pymc-03-audit-findings

Conversation

@jsboige

@jsboige jsboige commented Sep 21, 2026 •

Copy link
Copy Markdown
Owner

Grain: CONTENU/notebook-python -- lane myia-po-2026:CoursIA -- prev: CONTENU/notebook-python #17303

Quoi

Reparation des 3 findings Hermes poses sur la partition d'audit #17222 (serie PyMC) pour PyMC-03-Factor-Graphs.ipynb. Chaque finding verifie firsthand avant correction (G.1).

Finding Classe Reparation
1 stale-claim L'objectif d'en-tete annoncait « pm.math.switch » — une API jamais utilisee dans le notebook (pm.math : 1 occurrence totale = cette ligne ; pt.switch : 8 usages en code + prose). Corrige vers l'API reelle pt.switch.
2 exercise-mismatch Numerotation demarree a « Exercice 2 » sans aucun Exercice 1 (2, 3, puis un non-numerote). Renumterote 1/2/3. Securite verifiee : zero reference croisee aux numeros d'exercices ailleurs dans le notebook (regex Exercice\s*\d sur toutes les sources : seuls les 3 titres).
3 prerequisite-gap « CPT » utilise dans les indices de l'exercice sans avoir ete introduit (0 occurrence dans PyMC-01/02, non defini avant l'indice). Defini a la premiere utilisation : conditional probability tables : tables de probabilite conditionnelle, une par variable.

Preuve

  • Diff notebook seul : 9+/9- dont 5 lignes de contenu (les 4 autres = reordonnancement canonique de la cle "id" par nbformat, contenu inchange). Les deux fichiers de registre twin sont comptes au Perimetre ci-dessous.
  • Markdown seul : 4 cellules (0, 8, 15, 18), aucune cellule code touchee, aucun output, aucun execution_count modifie — re-execution non requise (C.2, exception markdown).
  • Apres correction : pm.math = 0, pt.switch = 9, titres = Exercice 1/2/3 coherents, CPT defini a la premiere occurrence.
  • Gardes verts : validate 1 OK / 0 warning / 0 erreur ; check_split_reading_cells clean ; detect_markdown_rendering 0 violation ; enrich_quality_ci --base origin/main RC=0 ; pre-commit 9/9 Passed (gitleaks, H.3, Aucun garde ne parse la source des cellules : une cellule non compilable portant une sortie traverse les 60+ checks #13326...).
  • Accents : 6 curables restants = strictement les 6 preexistants mesures par l'audit Hermes (organes : « 6 cures possibles ») — aucun ajoute par cette PR (tranche organe fix(docs): accents manquants dans les READMEs francophones #2876, hors scope).

Perimetre

3 fichiers, aucun autre :

  • MyIA.AI.Notebooks/Probas/PyMC/PyMC-03-Factor-Graphs.ipynb (+9/-9) — le livrable : 4 cellules markdown (0, 8, 15, 18) ;
  • scripts/notebook_tools/twin_pairs.d/probas-3-factor-graphs.yaml (+1) ;
  • scripts/notebook_tools/twin_pairs.d/probas-3-factor-graphs/0011-2026-09-23-myia-po-2026-CoursIA.yaml (+6).

Les deux derniers sont les baselines du registre twin, exigees dans la meme PR que la modification du notebook : une rebaseline differee laisserait le registre decrire une tete qui n'est plus la courante.

L'assertion precedente — « 1 notebook, 4 cellules markdown. Aucun autre fichier. » — etait fausse : elle omettait les deux fichiers de registre. Corrigee ici (garde perimeter).

See #17222 (contribution partielle : 1er notebook audite de la partition, l'audit Hermes continue)
See #17073

- objective announced pm.math.switch, an API never used in the notebook
  (pt.switch is, 8 usages) -> corrected to the actual API
- exercise numbering started at 2 with no Exercice 1 -> renumbered 1/2/3
  (zero cross-references to exercise numbers, verified by regex)
- CPT jargon used in exercise hints without ever being introduced ->
  defined at first use (conditional probability tables)

Markdown-only change: 4 cells, no code cell touched, no re-execution
required (C.2 markdown exception).

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

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

@github-actions github-actions Bot added the variation-tag-malformed Tag Grain present mais TIER != DEEP|MED|LIGHT label Sep 21, 2026
@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)

@github-actions

github-actions Bot commented Sep 21, 2026 •

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 14.5s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 9.7s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 10.8s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 27.5s
Search-01-StateSpace.ipynb ✅ SUCCESS 10.5s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 10.0s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 73.1s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 16.4s

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

@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #17304 (fix(pymc,#17222): PyMC-03 — 3 findings Hermes repares (API pt.switch, numerotation exercices 1-2-3, jargon CPT defini)) 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.

@jsboige

jsboige commented Sep 22, 2026 •

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 17304
head: aa1c88d
complete: true
body: read
comments-reviewed: 6
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: b5b67bfd9097afa937c42626fad914f8ed134ab5f5ea0366d7c5d4d5d0896c68
diff-files: 1
diff-additions: 9
diff-deletions: 9
checks: BLOCKED
b0: blocked
scope: pass
domain: pass
verdict: BLOCKED
[/ADJOINT PREFLIGHT]

[Tell c.81 - BLOCKED-WITH-SUBSTANCE] Notebook catalog drift + Twin parity failure. Cycle 17 hub secretaire.

@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 17304
head: aa1c88d
complete: true
body: read
comments-reviewed: 6
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 5b50651979460f4ef5d85e1d301b717d13a97d008d9ba9623d4ccb1403ee9d84
diff-files: 1
diff-additions: 9
diff-deletions: 9
checks: blocked
b0: clear
scope: pass
domain: fail
verdict: BLOCKED
[/ADJOINT PREFLIGHT]

Motif BLOCKED : un check propre a la PR. Lane myia-po-2026:CoursIA, tete aa1c88d.

  • Twin parity audit (#8057) est en echec (check-run 106520147960). La PR fait passer une paire jumelle de OK a DRIFT : Probas-3 Factor-Graphs.
  • Geste a la lane, le commande exacte donnee par le garde : python scripts/notebook_tools/check_twin_parity.py --update --pair "Probas-3 Factor-Graphs" --by "<machine:workspace>". Ce --update s'execute en dernier, apres tout strip outille. La divergence doit etre voulue, sinon il faut porter la correction sur le jumeau.
  • Autre rouge sans lien avec la PR : Notebook catalog drift (advisory). Le runner a perdu la connexion.
  • B.0 : rc=0 a la tete. Mon dossier de cette PR datait du 22/09 a 05:52Z (secretariat, avant le partage par parite). Il est perime, les surfaces ayant change.

jsboige and others added 2 commits September 23, 2026 06:45
…mmits behind; twin registry audits 0009/0010 required before rebaseline)
…er Hermes audit fix

Markdown-only repair (#17222) moved the PyMC-03 blob 2fd719b -> 56c7440;
audit 0011 attests the new blob post-merge with main (csharp 1d71902 per
main's audit 0010). Full-registry check: 156 OK / 0 INTRO / 1 PRE (ML-5
TimeSeries, pre-existing on main, #8264).

Co-Authored-By: Claude Sonnet 5 <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

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2026:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-09-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 added the consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) label Sep 23, 2026

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

[NanoClaw]
VERDICT: LGTM (vérifié : extraction base↔head protocole v2 — PyMC-03-Factor-Graphs.ipynb téléchargé à origin/main et head e35fcd11, diff mécanique cellule à cellule + re-mesure indépendante des 3 findings + recomptage des 9+/9-)

Fix chirurgical vérifié de bout en bout — chaque claim du body re-mesuré :

Mécanique — conforme, mesuré

  • 21 = 21 cellules (9 code), 0 id dupliqué.
  • Cellules modifiées = exactement les 4 markdown annoncées [0, 8, 15, 18] ; 0 cellule code, 0 output, 0 execution_count modifiés (empreintes sha8 par output).
  • Le diff GitHub 9+/9- se décompose comme annoncé : 5 lignes de contenu (re-mesurées ci-dessous) + 4 lignes de réordonnancement de la clé id — je confirme : cellules 5 et 14, ordre [cell_type,metadata,source,id] → [cell_type,id,metadata,source], contenu inchangé.

Les 3 findings — re-mesurés indépendamment

  1. stale-claim (pm.math.switch) : pm.math base=1 → head=0 ; pt.switch base=8 → head=9. La mutation (cell[0] L14) remplace exactement pm.math.switch par pt.switch dans les objectifs — l'occurrence +1 est l'en-tête désormais fidèle à l'API réellement utilisée en code.
  2. exercise-mismatch (renumérotation) : base = « Exercice 2 » (cell 8) / « Exercice 3 » (cell 15) / « Exercice » non numéroté (cell 18) ; head = Exercice 1 / 2 / 3. La regex Exercice\s*\d sur toutes les sources rend exactement les 3 titres — re-vérifié, et j'ai en plus contrôlé les 3 occurrences non numérotées restantes (cells 9/16/19) : ce sont les stubs code print("Exercice a completer"), sans référence numérique — la renumérotation ne casse aucune référence croisée.
  3. prerequisite-gap (CPT) : défini à la première occurrence (cell 8, char 466) : « pour les CPT (conditional probability tables : tables de probabilite conditionnelle, une par variable) » — formulation exacte du body, une seule occurrence de CPT dans le notebook avant comme après (cell 8).

Accents & yaml

  • Rien ne bouge hors les 5 lignes ci-dessus ⇒ aucun accent ajouté (les 6 curables préexistants sont hors diff, inchangés).
  • twin_pairs : entrée 0011-2026-09-23 conforme — python_sha/content_python_sha mis à jour, csharp_sha/content_csharp_sha inchangés (jumeau C# non touché), known_differences documente la rebaseline avec le lien #17304.

Résidu mineur (non bloquant)

Le body écrit « Périmètre : 1 notebook, 4 cellules markdown. Aucun autre fichier » alors que la PR touche 3 fichiers (les 2 yaml twin_pairs.d/). Ces yaml sont de la mécanique de registre attendue (rebaseline) et documentée dans le known_differences — mais la phrase « aucun autre fichier » est fausse au sens files-changed ; à reformuler (« aucun autre fichier de contenu ») dans une future retouche de body, pas de push requis pour ça.

Les 3 findings Hermes #17222 sont proprement réparés, au grain le plus fin possible (5 lignes), sans ripple effect.

@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 17304
head: e35fcd1
complete: true
body: read
comments-reviewed: 9
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 4ad642e8a62b549473e32632cb1a098c7356157f3a475e2319ed94d60408c677
diff-files: 3
diff-additions: 16
diff-deletions: 9
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

Motif : la réparation de parité jumelle nommée dans mon dossier 5788574336 (tête aa1c88d) est faite à e35fcd1 — rebaseline probas-3-factor-graphs/0011 (python_sha 56c744068d = blob du notebook à la tête, vérifié par git rev-parse), entrée known_differences datée. Diff : 3 fichiers ; notebook markdown seul (API pt.switch, exercices renumérotés 1-2-3, sigle CPT défini), cellules code intactes. Checks à la tête : 90 noms pliés au dernier started_at (filter=all), 0 non-vert, PR gate PASS. NanoClaw LGTM à la tête (review 5287353480). Tag : « CONTENU » n'est pas un tier de la grammaire (label variation-tag-malformed) ; merge_ready.py l'écarte (grain-tier-unknown), la requalification et le merge restent donc à ai-01. Lecture proposée : LIGHT/notebook-python (réparation markdown de 3 findings d'audit, sans ré-exécution), budget G-VAR-2 de la lane po-2026:CoursIA à lire au merge.

@myia-ai-01
myia-ai-01 merged commit b9b806e into main Sep 24, 2026
107 of 111 checks passed
jsboige pushed a commit that referenced this pull request Sep 28, 2026
…down-only attestation)

Suite a la review Hermes sur #18282 (CHANGES_REQUESTED), le blob Python
du notebook PyMC-03-Factor-Graphs a change (nav cellule 20 ajoutee) sans
mise a jour du registre twin. L'organe twin_parity audit signale DRIFT.

Le check --update enregistre le SHA courant comme nouvelle reference de
la paire, avec attestation markdown-only (cf convention #17304 precedent) :
- python_sha : c7a41fe (nouveau, post-fix #18282)
- csharp_sha : 1d71902 (inchange, jumeau Infer-3 non touche)
- content_python_sha : bc8de2f9 (cellules code byte-identiques, exception C.2)
- content_csharp_sha : 580e6da4 (inchange)

Le precedent #17304 a suivi la meme convention ; les 12 attestations
existantes du registre le confirment.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
jsboige pushed a commit that referenced this pull request Sep 29, 2026
…down-only attestation)

Suite a la review Hermes sur #18282 (CHANGES_REQUESTED), le blob Python
du notebook PyMC-03-Factor-Graphs a change (nav cellule 20 ajoutee) sans
mise a jour du registre twin. L'organe twin_parity audit signale DRIFT.

Le check --update enregistre le SHA courant comme nouvelle reference de
la paire, avec attestation markdown-only (cf convention #17304 precedent) :
- python_sha : c7a41fe (nouveau, suite au fix porte par la PR 18282)
- csharp_sha : 1d71902 (inchange, jumeau Infer-3 non touche)
- content_python_sha : bc8de2f9 (cellules code byte-identiques, exception C.2)
- content_csharp_sha : 580e6da4 (inchange)

Le precedent #17304 a suivi la meme convention ; les 12 attestations
existantes du registre le confirment.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 29, 2026
…ly attestation)

Suite a la review Hermes sur See #18282 (CHANGES_REQUESTED), le blob Python
du notebook PyMC-03-Factor-Graphs a change (nav cellule 20 ajoutee) sans
mise a jour du registre twin. L'organe twin_parity audit signale DRIFT.

Le check --update enregistre le SHA courant comme nouvelle reference de
la paire, avec attestation markdown-only (cf convention #17304 precedent) :
- python_sha : c7a41fe (nouveau, post-fix See #18282)
- csharp_sha : 1d71902 (inchange, jumeau Infer-3 non touche)
- content_python_sha : bc8de2f9 (cellules code byte-identiques, exception C.2)
- content_csharp_sha : 580e6da4 (inchange)

Le precedent #17304 a suivi la meme convention ; les 12 attestations
existantes du registre le confirment.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
jsboige pushed a commit that referenced this pull request Sep 29, 2026
…ly attestation)

Suite a la review Hermes sur See #18282 (CHANGES_REQUESTED), le blob Python
du notebook PyMC-03-Factor-Graphs a change (nav cellule 20 ajoutee) sans
mise a jour du registre twin. L'organe twin_parity audit signale DRIFT.

Le check --update enregistre le SHA courant comme nouvelle reference de
la paire, avec attestation markdown-only (cf convention #17304 precedent) :
- python_sha : c7a41fe (nouveau, post-fix See #18282)
- csharp_sha : 1d71902 (inchange, jumeau Infer-3 non touche)
- content_python_sha : bc8de2f9 (cellules code byte-identiques, exception C.2)
- content_csharp_sha : 580e6da4 (inchange)

Le precedent #17304 a suivi la meme convention ; les 12 attestations
existantes du registre le confirment.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 29, 2026
…ly attestation)

Suite a la review Hermes sur See #18282 (CHANGES_REQUESTED), le blob Python
du notebook PyMC-03-Factor-Graphs a change (nav cellule 20 ajoutee) sans
mise a jour du registre twin. L'organe twin_parity audit signale DRIFT.

Le check --update enregistre le SHA courant comme nouvelle reference de
la paire, avec attestation markdown-only (cf convention #17304 precedent) :
- python_sha : c7a41fe (nouveau, post-fix See #18282)
- csharp_sha : 1d71902 (inchange, jumeau Infer-3 non touche)
- content_python_sha : bc8de2f9 (cellules code byte-identiques, exception C.2)
- content_csharp_sha : 580e6da4 (inchange)

Le precedent #17304 a suivi la meme convention ; les 12 attestations
existantes du registre le confirment.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
myia-ai-01 added a commit that referenced this pull request Sep 29, 2026
… 20 (#18282)

* fix(probas,#17222): PyMC-03 -- nav inter-notebooks ajoutee en cellule 20

Cellule 20 (Conclusion) ne portait que 'Retour au sommaire' vers README, sans
la nav canonique de la serie (`<< PyMC-2b | PyMC-4 >>`). Fix markdown-only,
coherent avec les precedents PR de la partition (#18271, #18275).

Pas de cellule code touchee : exception C.2, re-execution non due.
Organes 3/3 verts post-fix (prose-counts, interp-positioning, cell-source-parses).

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

* fix(probas): rebaseline twin-pair Probas-3 Factor-Graphs (markdown-only attestation)

Suite a la review Hermes sur See #18282 (CHANGES_REQUESTED), le blob Python
du notebook PyMC-03-Factor-Graphs a change (nav cellule 20 ajoutee) sans
mise a jour du registre twin. L'organe twin_parity audit signale DRIFT.

Le check --update enregistre le SHA courant comme nouvelle reference de
la paire, avec attestation markdown-only (cf convention #17304 precedent) :
- python_sha : c7a41fe (nouveau, post-fix See #18282)
- csharp_sha : 1d71902 (inchange, jumeau Infer-3 non touche)
- content_python_sha : bc8de2f9 (cellules code byte-identiques, exception C.2)
- content_csharp_sha : 580e6da4 (inchange)

Le precedent #17304 a suivi la meme convention ; les 12 attestations
existantes du registre le confirment.

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

---------

Co-authored-by: myia-po-2027 <myia-po-2027@MiniMax.local>
Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Co-authored-by: myia-ai-01 <myia.ai.01.myia@gmail.com>
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-tag-malformed Tag Grain present mais TIER != DEEP|MED|LIGHT

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants