Skip to content

Add(probas,#17040): densite pedagogique -- Percolation-04 et PyMC-07 (g92-probas-3, relais) - #22031

Merged
myia-ai-01 merged 4 commits into
mainfrom
wt/vibe-g92-probas-3
Oct 24, 2026
Merged

myia-ai-01 merged 4 commits into
mainfrom
wt/vibe-g92-probas-3

Conversation

@jsboige

@jsboige jsboige commented Oct 22, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2025:CoursIA — prev: DEEP/notebook-lean #21983

Quoi

Relais du grain Vibe g92-probas-3 (densité pédagogique, redressement #17040 sur #13410) : lectures ancraient ajoutées immédiatement après les cellules de code démonstration qu'elles expliquent, markdown-only, sans ré-exécution.

  • Percolation-04-Sharpness-Python.ipynb — densité 426 → 1245
  • PyMC-07-Skills-IRT.ipynb — densité 966 → 1287

Parité jumelle

PyMC-07 appartient à la paire Probas-7 Skills-IRT (Infer.NET/PyMC) : l'édition markdown du notebook dérive le blob Python → attestation additive twin_pairs.d/probas-7-skills-irt/0013-2026-10-22-myia-po-2025-CoursIA.yaml posée depuis le worktree du grain. Percolation-04 n'appartient à aucune paire native (constat du check --per-pair).

La branche inclut un merge d'origin/main (base du grain antérieure aux fix twin du 22/10) — l'artefact de drift GameTheory-17 disparaît avec, sans attestation de drift non possédé.

Refs #13410 #17040

🤖 Generated with Claude Code

jsboige and others added 3 commits October 21, 2026 23:56
…PyMC-07 966->1287 (g92-probas-3)

Redressement #17040 (campagne #13410) des deux notebooks targetPath :
- Percolation-04-Sharpness-Python.ipynb : 9 lectures ancrees (**Lecture.**,
  1 par cellule de demonstration, immediatement apres la sortie commitee,
  valeurs citees telles quelles) + 3 en-tetes de section + deroule dans le
  titre + amorce de synthese + resume des limitations. Aucune cellule de
  code touchee.
- PyMC-07-Skills-IRT.ipynb : 4 lectures ancrees (### Lecture du resultat --)
  apres ec=1 (PyMC 5.28.5), ec=5 (figure capacites/difficultes),
  ec=7 (AUC 0.788), ec=12 (priors informatifs vs vagues) + 6 cellules
  markdown enrichies (plan, intro, ROC, priors, comparaison, conclusion).
  Aucune narration d'exercice (stubs ec=6/13/14 intacts).

Markdown-only : cellules code, outputs, execution_count, metadata et ids
byte-identiques (verifie cell-by-cell vs HEAD) ; source conserve en forme
liste ; re-serialisation aux parametres exacts du fichier (indent=1,
sort_keys=False, ensure_ascii=False) ; UTF-8 brut, accents conserves,
aucune re-execution.

Verifications : pedagogy_density ok x2 (below_threshold 0) ;
check_split_reading_cells clean x2 ; check_density_anchor OK (PyMC-07 :
1 finding pre-existant, cellule inchangee) ; check_lecture_anchor rc=0 x2 ;
detect_solution_leaks 0/0/0 x2 ; check_interp_positioning 0 x2 ;
check_cell_source_parses 0 x2 ; scan_md_table_syntax 0 x2 ;
detect_repeated_prose aucune paire nouvelle ; nbformat.validate OK x2.
…site #13410)

Refs #13410 #17040

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

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 11.6s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 11.0s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 12.7s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 9.9s
Search-01-StateSpace.ipynb ✅ SUCCESS 14.9s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 6.1s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 94.5s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 10.3s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 46.1s

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

@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

Notebook PR Validation: PASS

  • Notebooks checked: 2
  • Code cells validated: 23
  • 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 Oct 22, 2026

Copy link
Copy Markdown
Owner Author

Lecture des 3 checks rouges — collatéral, pré-existant sur main

Mesuré sur cette PR à l'instant (gh pr checks) : 3 FAILURE sur 95-96 checks, tout le reste SUCCESS ou SKIPPED (87 SUCCESS en 22031/22032 ; 86 + 2 en cours en 22033). Les trois échecs ont une seule et même cause, hors du périmètre de ce relais :

check verdict cause mesurée
Live-read freshness (committed output vs current source) fail [ROUGE] STALE — GOL-01-Regles-Vie-Lean.ipynb::50dcfe8c -> Pillars.lean — LINE_COUNT : la sortie affirme « 364 lignes », le fichier en porte 414
Always-on guards -- 16 organes fail agrégat : seul l'organe fastlane échoue, et il enveloppe ce même check live-read
PR gate fail agrégat : [pr-gate] FAIL — failing checks: Live-read freshness (committed output vs current source)

Deux autres checks portent le mot « failure » sans être rouges (Output-failure ratchet (base vs PR) = pass) : le seul rouge primaire est la fraîcheur live-read.

Contre-épreuve — le rouge est sur main, pas dans cette branche

Reproduit à l'identique sur le checkout main sans cette branche (HEAD 0030355d3) :

python scripts/notebook_tools/check_live_read_freshness.py
[ROUGE] STALE -- GOL-01-Regles-Vie-Lean.ipynb::50dcfe8c -> Pillars.lean
        / LINE_COUNT: la sortie affirme « 364 lignes », le fichier en porte 414

Cause racine : fff3ec745c — « Feat(lean,#21833): derive the two *_initial_nonempty theorems (7 anchors -> 5 per file) (#21899) » a fait passer Pillars.lean de 364 à 414 lignes sans réaligner la cellule live-read de GOL-01 (dernier réalignement connu : 6370e68f43, #20559).

Portée

Ce relais ne touche aucun notebook de la famille Lean/GOL : le grain porte sur des notebooks Probas-*, dont les cellules live-read sont fraîches (le comparateur ne signale qu'un seul notebook, GOL-01). Le rouge frappe donc toute PR ouverte contre main, pas seulement celle-ci.

Le remède appartient au grain Lean — réaligner la cellule live-read de GOL-01 sur Pillars.lean à 414 lignes — hors du périmètre de ce grain Vibe. Signalé au porteur. Cette PR repassera verte mécaniquement dès main réparé, sans autre geste de ma part.

🤖 Generated with Claude Code

@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/notebook-python — les deux carnets relus, attestation jumelle re-dérivée avec la formule du checker, densités re-mesurées depuis les blobs.

Vérifié par exécution, pas par lecture du body :

  • Attestation jumelle 0013 exacte aux quatre champs. Re-dérivation avec check_twin_parity.py::_content_sha (json.dumps sans metadata top-level, sort_keys, separators=(',',':'), ensure_ascii=False, sha256 UTF-8) sur les blobs au head 82c349e5 :
    • python_sha = 920d0619… ✓ (blob réel de PyMC-07-Skills-IRT.ipynb au head)
    • csharp_sha = 0d3ba25b… ✓ (blob réel de Infer-07-Skills-IRT.ipynb, le témoin C# de la paire probas-7-skills-irt, confirmé dans le registre)
    • content_python_sha = 457b69c5… ✓
    • content_csharp_sha = be171830… ✓ — et le blob C# est identique entre main et le head : le côté non édité est bien intact, comme le body l'affirme.
  • Cartographie de paire vérifiée. probas-7-skills-irt.yaml désigne bien Probas/PyMC/PyMC-07-Skills-IRT.ipynb ↔ Probas/Infer/Infer-07-Skills-IRT.ipynb. Percolation-04-Sharpness-Python.ipynb n'apparaît dans aucune paire du registre (145 fichiers .yaml parcourus) — l'absence d'attestation est correcte.
  • Densités re-mesurées, chiffres du body exacts. Percolation-04 : 3 835 c markdown / 9 cellules code = 426 → 11 213 / 9 = 1 245. PyMC-07 : 13 524 / 14 = 966 → 18 024 / 14 = 1 287. Les quatre valeurs du body tombent juste.
  • Markdown-only réel. Cellules code byte-identiques base↔head sur les deux carnets (source, sorties, execution_count), blocs metadata.papermill inchangés, sorties inchangées. L'exception C.2 markdown-only est donc légitime : aucune ré-exécution n'était due.
  • Placement conforme à #17040. Sur Percolation-04 (24 cellules), la séquence est strictement …m c m c m… : une seule cellule de lecture après chaque cellule de code, jamais deux markdown consécutifs issus d'un même bloc de code, aucun m collé avant son code. Les gardes No markdown content loss, Split-reading ratchet, prose-counts et les trois organes twin sont verts au head.

Le seul rouge du head n'est pas imputable à cette PR. Live-read freshness FAILURE porte sur GOL-01-Regles-Vie-Lean.ipynb::50dcfe8c -> Pillars.lean (LINE_COUNT 364 vs 414 + 30 LINE_CITATION) — défaut hérité de main, hors des deux fichiers de la PR ; la PR #22018 ouverte le traite précisément. Always-on guards et PR gate sont les agrégats de ce même rouge (le fast-lane ne liste que Live-read freshness en exit 1 hors advisories).

Fond : relais de densité propre, traçabilité jumelle rigoureuse, pas de ré-exécution inutile. Rien à demander côté contenu.

@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #22031 (Add(probas,#17040): densite pedagogique -- Percolation-04 et PyMC-07 (g92-probas-3, relais)) 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.

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

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

APPROVE coordinateur (myia-ai-01) a 9a88b44, sur dossier de lecture delegue (procedure 9 points : perimetre, preuves, hygiene notebook, chiffres ancres, prose, references, reserves) puis controle par sondage.

Objet : Adds anchored reading cells after each demonstration code cell of Percolation-04 and PyMC-07 (markdown only, density 426->1246 and 966->1287) and an additive twin attestation for PyMC-07.

Tete, B.0 rc=0 et absence de fichier de harnais reverifies au moment de l'approbation.

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.

3 participants