Skip to content

Fix(infer,#18556): tranche 2b/Glossaire — enoncés avant stubs, prose 3/sqrt(prec), glossaire mesuré - #19823

Merged
myia-ai-01 merged 5 commits into
mainfrom
fix/18556-infer2b-gloss
Oct 8, 2026
Merged

myia-ai-01 merged 5 commits into
mainfrom
fix/18556-infer2b-gloss

Conversation

@jsboige

@jsboige jsboige commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/notebook-dotnet — lane myia-po-2027:CoursIA — prev: LIGHT/notebook-dotnet #19774

Fix(infer,#18556): tranche 2b/Glossaire — enoncés avant stubs, prose quantitative, glossaire mesuré

Issue : See #18556 (audit série Infer — checklist 21/22 après cette tranche ; restent Infer-1 et Infer-2, gelés le temps que #19778 (nav 1/1b/2) merge pour éviter la collision de chemins).

Constat (mesuré firsthand)

Infer-2b-Debugging-Bonnes-Pratiques.ipynb — 3 findings

# Verdict Détail
B1 CONFIRMED (structure) Enoncés des Exercices 1 et 2 placés après leur stub de code (cellules 21→22, 34→35), alors que les Exercices 3 et 4 suivent la convention inverse (énoncé → stub). Le lecteur rencontre le code à compléter avant les instructions.
B2 CONFIRMED (prose quantitative) Cellule 9 : « les observations situées à plus de 3/sqrt(prec) écarts-types du centre » — 3/sqrt(prec) est une distance en unités ; en écarts-types, la barre est 3 (fixe). La phrase suivante (« avec prec=1000, cela représente environ 0.1 unités ») dit d'ailleurs « unités » correctement : 3/√1000 ≈ 0.095.
B3 CONFIRMED (cohérence série) En-tête de table de navigation `

Infer-Glossary.md — 3 findings (mesure cross-série : grep de VariationalMessagePassing / GibbsSampling sur les 22 carnets)

# Verdict Détail
G1 CONFIRMED (référence incomplète) VMP : « Infer-2, Infer-11 » seulement. Utilisation réelle (instanciation moteur) : Infer-1b, Infer-2 (7 hits), Infer-2b (3 hits — c'est LE carnet de comparaison EP/VMP), Infer-10, Infer-11. Infer-1 et Infer-9 ne font que le mentionner dans des tables comparatives.
G2 CONFIRMED (référence fausse) Gibbs Sampling : « Infer-13 » — zéro occurrence de GibbsSampling dans Infer-13. Seul Infer-1 instancie réellement le moteur (moteur.Algorithm = new GibbsSampling()) ; Infer-2b et Infer-9 ne font que le mentionner.
G4 CONFIRMED (paramétrage faux) Gamma : « shape, scale » — Infer.NET et toute la série utilisent shape, rate (GammaFromShapeAndRate, cf la table de correction du §7 d'Infer-2b elle-même : Gamma(2, 0.5) shape/rate).

Fix

  • B1 : les cellules d'énoncé markdown déplacées avant leur stub (ordres 20,22,21,23 et 33,35,34,36). La séquence d'exécution des cellules code est inchangée (execution_count 1..19 dans l'ordre, vérifié par assert) et les 19 cellules code sont byte-identiques avant/après (SHA-256 sur source+outputs+execution_count : d70598f8… avant = après). Coût : le bloc Exercice 1 devient un run de 2 cellules code adjacentes (stub + visualisation) — même motif que le run préexistant 44/45 (modèle cassé puis corrigé), label advisory non-bloquant, durci à ≥3.
  • B2 : « à plus de 3/sqrt(prec) unités (soit 3 écarts-types) du centre ».
  • B3 : | Précédent | Suivant |.
  • G1/G2/G4 : les trois lignes du glossaire alignées sur la mesure (VMP → Infer-1b, Infer-2, Infer-2b, Infer-10, Infer-11 ; Gibbs → Infer-1 ; Gamma → shape, rate (GammaFromShapeAndRate)).

Conformité

  • Markdown-only : aucune cellule code source modifiée (preuve ci-dessus) → pas de re-exécution due (exception markdown de C.2). Outputs et execution_count 1..19 intacts.
  • C.1 : aucun stub ne porte d'erreur volontaire (vérifié sur les 4 exercices : pass-équivalents .NET, sorties présentes).
  • Les cellules d'interprétation existantes restent toutes après leur cellule de code (aucune déplacée).

Organes (re-joués post-fix)

Organe Verdict
check_notebook_nav_chain.py --check 0 NEW vs baseline (4 connus : orphelines 18/19/1b = PRs ouvertes #19814/#19778)
detect_consecutive_code_cells.py max run 2, 2 runs — label consecutive-code-cells (advisory), hard gate = ≥3
check_output_collapse.py origin/main 0 flagged
check_source_collapse.py origin/main 0 flagged
check_output_failure_text.py origin/main 0 regressed

Périmètre

  • 3 fichiers, 70 insertions, 64 suppressions : deux carnets (Infer-2b-Debugging-Bonnes-Pratiques.ipynb, Infer-Glossary.md) et une attestation jumelle (twin_pairs.d/probas-2b-debugging/0018-2026-10-08-myia-po-2027-CoursIA.yaml). Deux attestations d'index 0018 coexistaient sur la branche (mêmes SHA de blobs, même minute) ; la copie redondante de la lane sœur a été retirée en git rm (suppression, pas rename — cf le commentaire [REPAIR]), ce qui ramène le compte de 4 à 3 fichiers.
  • 0 secret, 0 binaire.

🤖 Generated with Claude Code

… 3/sqrt(prec), glossaire mesure

Infer-2b : (B1) enonces Exercices 1/2 deplaces AVANT leur stub de code
(convention des Exercices 3/4 ; sequence exec 1..19 inchangee, cellules code
byte-identiques) ; (B2) cellule 9 : 3/sqrt(prec) est une distance en UNITES,
pas en ecarts-types ; (B3) en-tete nav precedent -> Précédent (forme serie).

Glossaire (mesure cross-serie) : VMP reellement utilise en 1b/2/2b/10/11
(pas seulement 2 et 11) ; Gibbs = Infer-1 (Infer-13 n'a aucune utilisation) ;
Gamma shape,rate (GammaFromShapeAndRate), pas shape,scale.

Organes : nav-chain 0 NEW ; consecutive-code-cells max 2 (label, non-bloquant) ;
output/source-collapse 0 ; output-failure 0. Markdown-only, aucune cellule code
modifiee (hash avant/apres identique) -> pas de re-execution due (C.2).

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

github-actions Bot commented Oct 8, 2026

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 added the consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) label Oct 8, 2026
@github-actions

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

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

github-actions Bot commented Oct 8, 2026

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 8, 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 3.8s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.2s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.6s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.7s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.6s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.4s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 17.3s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.9s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 10.3s

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

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

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

jsboige and others added 2 commits October 8, 2026 03:14
…che 2b

Rebaseline --update apres audit firsthand : Infer-2b modifie en markdown-only
(enonces avant stubs, prose 3/sqrt(prec), nav header), PyMC-02b inchange --
parite semantique intacte, SHAs de contenu re-attestes (sub-file 0018).

See #18556

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…108)

Le CI gate Twin parity audit (#8057) detecte 1 paire en DRIFT
introduite par cette PR (sha blob Python et C# changes par la
tranche 2b/Glossaire) :
- Probas-2b Debugging (python_sha 96d..., csharp_sha cf2...)

Rebaseline chirurgicale (L963/L974) via :
  python scripts/notebook_tools/check_twin_parity.py --update     --pair 'Probas-2b Debugging' --by 'myia-po-2024:CoursIA-2'

Aucune modification de fond sur les notebooks. Atteste la parite
au nouveau SHA blob, ne la repare pas. Strip outille --update va
en DERNIER (cf #8957).

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

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19823
head: a6ea965
complete: true
body: read
comments-reviewed: 6
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 0c8a167b7a68365dba31753c07d399e9d490eba9d43a9aa76344b2a26e39a919
diff-files: 4
diff-additions: 76
diff-deletions: 64
checks: BLOCKED
b0: clear
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19823
organ-rc: 3
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[INFO] Twin parity audit (#8057) — rouge non imputable a cette PR (cause sur main)

Le run du 2026-10-08T01:56:52Z rend drift_introduced = 3 sur les paires App-1 NQueens, App-12 ConnectFour et Probas-15 Recommenders. Mesure firsthand, quatre points :

  1. Aucune des trois n'est dans le perimetre de la PR. Perimetre effectif (4 fichiers, check_pr_perimeter.py --scan-thread -> VERDICT: OK) : Infer-2b-Debugging-Bonnes-Pratiques.ipynb, Infer-Glossary.md, twin_pairs.d/probas-2b-debugging/0018-2026-10-08-myia-po-2024-CoursIA-2.yaml, twin_pairs.d/probas-2b-debugging/0018-2026-10-08-myia-po-2027-CoursIA.yaml. Les registres twin_pairs.d/app-1-nqueens.yaml, app-12-connectfour.yaml et probas-15-recommenders.yaml sont absents de la PR.

  2. Les six fichiers des trois paires sont byte-identiques entre origin/main et la tete de la PR (SHA git compares un a un, pas deduits) :

Paire Fichier SHA origin/main = tete
App-1 NQueens App-1-NQueens.ipynb b4340188b2ba
App-1 NQueens App-1b-NQueens-CSharp.ipynb 220c073d77fe
App-12 ConnectFour App-14b-ConnectFour.ipynb 152af2e25712
App-12 ConnectFour App-14c-ConnectFour-CSharp.ipynb 957ecad6e3df
Probas-15 Recommenders PyMC-15-Recommenders.ipynb 2f864839d520
Probas-15 Recommenders Infer-15-Recommenders.ipynb bd49f34e54f9

Les deux entrees du verdict (SHA enregistre dans le registre, SHA reel des fichiers) sont donc identiques a la base et a la tete. Une paire dont les deux cotes sont inchanges ne peut pas passer de OK (base) a DRIFT (tete) du fait de cette PR : l'attribution drift_introduced est ici une sur-attribution de l'organe.

  1. Dernieres modifications de ces carnets sur main, pour situer l'origine : d56e4cf4542c (revert revert(density,#17040): App-1-NQueens + App-14b-ConnectFour restaures avant #17021 (remplissage sous veto) #17459) pour NQueens et ConnectFour, 1e5fc0af47f8 (fix(probas,#18028): PyMC/DecPyMC chains=4 sur 22 pm.sample + 4 citations #18034) pour Recommenders — des merges de main qui ne les ont pas rebaselines.

  2. Corroboration independante : le tirage de la lane (pick_idle_grain.py) signale le meme trio, corrobore par Gorard #19741 — greffe Lean-16a (épilogue 2.3b) #19844 et feat(notebook-python,#19841,#18220 pli 3): 3.14-Debug-Entrainement-N-Apprend-Pas-Python #19845, et le classe « ROUGE IMPUTE A LA BASE ».

Verdict : cause sur la base, reparation = PR de rebaseline dediee (cf #8264), a router au coordinateur (unique reparateur). Cette PR ne porte pas ce volet et ne rebaselinera pas des paires etrangeres ici — ce serait du hors-scope.

Rouge propre a la PR au meme moment : aucun. Always-on guards est passe vert le 2026-10-08T02:50:23Z ; la porte PR gate a ete rejouee apres ce vert.

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 19
  • 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 and others added 2 commits October 8, 2026 07:47
…gging

Deux attestations 0018 coexistaient sur cette branche, toutes deux datees
2026-10-08 et attestant les MEMES blobs (python bf93bf3, csharp f6bb9db) :
0018-...-myia-po-2027-CoursIA.yaml (attestation --update de la lane) et
0018-...-myia-po-2024-CoursIA-2.yaml (rebaseline duplique du meme geste).

Le registre exige un index unique par paire : la copie po-2024 est retiree
(suppression, pas rename -- renommer en 0019 inverserait la semantique du
journal, cf lesson-twin-index-collision-delete-not-rename). Aucune
information perdue : la copie gardee attestait des SHA identiques.

Valide par pytest scripts/notebook_tools/tests/test_twin_registry_integrity.py.

See #19823

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

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

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

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 variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Oct 8, 2026
@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[REPAIR] jambe rouge racinée — collision d'index 0018, cause unique des deux jambes — lane myia-po-2027:CoursIA, tête 601f941c4be1.

Diagnostic

Les deux jambes rouges de la tête précédente (a6ea965534cd) avaient la même cause racine, mesurée sur le log du job 113112771748 :

Deux attestations 0018 coexistaient sur la paire probas-2b-debugging, toutes deux du 2026-10-08 03:14, attestant des SHA de blobs identiques (python bf93bf3f, csharp f6bb9db7) — un geste --update doublé d'un rebaseline du même état.

Correctif (2 commits)

  1. 4b8adfae6384 — merge origin/main content-free (aucun conflit, aucun fichier du périmètre touché) : le registre rattrape les 11 attestations de main, le plancher DWELL n'est pas ré-armé (fusion prouvée content-free).
  2. 601f941c4be1 — git rm de 0018-2026-10-08-myia-po-2024-CoursIA-2.yaml (la copie redondante ; suppression, pas de rename — renommer en 0019 inverserait la sémantique du journal). Aucune information perdue : la copie gardée attestait des SHA identiques.

Validation locale (post-dédup, avant push)

  • pytest scripts/notebook_tools/tests/test_twin_registry_integrity.py → 46 passed.
  • check_twin_parity.py --per-pair --base origin/main → OK=151 INTRO=0 FIXED=3 PRE=3 (les 3 paires INTRO sont parties).

Le push a re-déclenché les deux jambes sur la nouvelle tête. Note d'honnêteté : le picker avait étiqueté Scripts Tests (CPU) « infra, vert sur main » — c'était faux ; l'échec était réel, causé par la collision d'index sur ma propre branche, et réparable par ma lane (fait).

See #18556

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 19823
head: 601f941
complete: true
body: read
comments-reviewed: 11
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: d858f473df10cae601259aaba9e4669f41fd46c0be34274a6d29625482b314f3
diff-files: 3
diff-additions: 70
diff-deletions: 64
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19823
organ-rc: 0
[/ADJOINT PREFLIGHT]

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

Lecture finale complete : body, tous commentaires, reviews, threads et diff lus ; B.0 clear. Verification directe des blobs : 19 cellules code source/sorties/execution_count identiques a la base, enonces c3138f24 et 835a51ef immediatement avant leurs stubs. Unites 3/sqrt(prec), references VMP et Gamma shape/rate coherentes. Precision de lecture : Infer-1 presente GibbsSampling dans un exemple markdown de configuration, pas dans une cellule executee ; le renvoi du glossaire reste correct, sans preuve de run Gibbs. Attestation csharp_sha f6bb9db7 correspond au blob. Ancien rouge explique par doublon0018 puis repare, aucun thread ouvert. Aucun claim de nouvelle execution formule par cette approbation.

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