Skip to content

Fix(notebook,#13410): redressement densite g151 -- Lean-19c (992 -> 1399) et SC-11 (754 -> 1309), markdown-only - #24804

Merged
myia-ai-01 merged 1 commit into
mainfrom
wt/vibe-g151-symbolicai-26
Nov 6, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
wt/vibe-g151-symbolicai-26

Conversation

@jsboige

@jsboige jsboige commented Nov 5, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2025:CoursIA — prev: MED/guard #24727

Relais du feeder g151-symbolicai-26 : redressement de densité pédagogique sur deux carnets, markdown-only.

Carnet Densité avant Densité après Plancher Cellules markdown
Lean-19c-Borne-Bernstein-Python.ipynb 992 1399 1200 7 → 10
SC-11-LLM-Assisted-Python.ipynb 754 1309 1200 32 → 36

Diff : +154 / −28, deux fichiers, aucun autre chemin touché.

Preuves vérifiées sur la tête 002f1db9ca

Aucune ré-exécution due (C.2) — les cellules code sont byte-identiques à origin/main, outputs et execution_count compris :

Lean-19c  code 6 -> 6   | markdown 7 -> 10  | raw 0 -> 0 | CODE-IDENTIQUE
SC-11     code 20 -> 20 | markdown 32 -> 36 | raw 0 -> 0 | CODE-IDENTIQUE
  • pedagogy_density.py : 1399 / 1309, plancher 1200 tenu ("status": "ok" pour les deux).
  • check_prose_quantitative_claims.py --diff origin/main...HEAD --strict : [OK] aucun compteur quantitatif en prose (rc=0) — le redressement n'introduit aucun décompte chiffré dans la prose (Les donnees quantitatives appartiennent au CI, pas a la prose — supprimer les compteurs manuels (44 notebooks + ~30 README) #9377).
  • check_split_reading_cells.py --base <main> --fail-on-findings : clean sur les deux carnets (aucune cellule de lecture scindée insérée).
  • Ratchet moteurs inchangé — audit_engine_named_not_invoked verdict par moteur, base vs tête : foundry NAMED_NOT_INVOKED → NAMED_NOT_INVOKED, openai_llm WIRING_ONLY → WIRING_ONLY, solc WIRING_ONLY → WIRING_ONLY. Ces trois verdicts sont préexistants sur main ; la PR ne les aggrave pas et ne les crée pas.

    Piège d'instrument rencontré : --compare-base/--compare-head claved les instantanés par chemin, donc une base extraite dans un répertoire temporaire rendait tous les moteurs NOT_CLAIMED → trois « régressions » fantômes. Comparaison refaite moteur par moteur.

  • Citations d'output ancrées verbatim : à la tête, SC-11 compte 13 blocs de citation d'output — 9 occurrences exactes « La sortie affiche … » et 4 variantes (« La sortie de la cellule précédente affiche … » ×2, « La fin de la sortie affiche … », « La sortie se termine par … »), toutes ancrées verbatim dans les sorties committées ; Lean-19c en porte 1 sur 1. (Le « 11 des 12 » d'origine ne correspondait à aucun découpage mesurable — la couverture réelle est meilleure que le claim.)
  • solution_leak_delta base vs tête : aucun finding sur les deux carnets relayés (les 3 candidats HIGH signalés portent sur RL-04-Bandits-Manchots, non touché par cette PR — écart entre le checkout local de base et la tête, pas un apport du diff).

Portée

Le contenu ajouté est de l'interprétation et de la mise en perspective : lecture des sorties déjà committées, contrat de preuve « le LLM propose, les outils déterministes vérifient » (SC-11), et bornes explicites de ce que chaque test ne démontre pas (Lean-19c). Aucune sortie n'est modifiée, aucun code n'est touché, aucune mesure n'est affirmée sans être déjà dans les outputs.

See #13410 (série d'enrichissement — pas de clôture : le feeder continue sur d'autres carnets).

🤖 Generated with Claude Code

…-19c (992 -> 1399) et SC-11 (754 -> 1309), redressement #17040

7 lectures ancrees ajoutees immediatement apres les cellules de
demonstration executees sans lecture (Lean-19c : setup seed=42, tableau
BSC 20 instances, tableau Poisson 5 instances ; SC-11 : templates de
prompts, generation Ollama, exemple guide ERC-20, boucle securisee) --
sorties commitees citees telles quelles ; 28 cellules markdown enrichies
en place (protocole de mesure, anatomie des prompts, modes d'echec,
transitions, bilan ancre sur les sorties, livrables des enonces) ;
aucune seconde lecture empilee par sortie (cellules existantes
consolidees, meme id). Markdown-only : cellules code, outputs,
execution_count, ids et metadata byte-identiques ; aucune re-execution ;
aucune lecture sur les stubs d'exercice. Accents UTF-8 dans le nouveau
texte. check_split_reading_cells: clean (0 finding, mode diff --base
clean aussi) ; detect_solution_leaks: 0 ; check_density_anchor: OK ;
pedagogy_density: ok (1399 et 1309 >= 1200).
@github-actions

github-actions Bot commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 2
  • Code cells validated: 26
  • 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 Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Verdict calcule ce tour (cle 3833768fe28cb1bc) — aucune entree de cache ne correspondait.

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 4.9s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.0s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 5.9s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.1s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.7s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.5s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 45.6s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.8s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 11.7s

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

@github-actions

github-actions Bot commented Nov 5, 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 Nov 5, 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 Nov 5, 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 Nov 5, 2026

Copy link
Copy Markdown
Contributor

✅ No truncated listing detected in the notebooks this PR changed (markdown identifier tables checked against the numbered listing a nearby code cell's stream prints).

Scope = notebooks CHANGED in this PR, not the whole corpus. The listing-coherence-report run artifact holds the structured JSON.
Rationale: this compares identifier SETS, not counts — a count comparison cannot see a table truncated from 08 while the stream lists up to 15. The contiguous-prefix discriminant is what keeps an arbitrary subset (« the 3 longest ») out of the report. See python scripts/check_listing_coherence.py --help.

@github-actions

github-actions Bot commented Nov 5, 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).

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

VERDICT: COMMENT — les huit chiffres du tableau et les deux pièges d'instrument sont exacts ; deux décomptes de prose sont en retard sur l'artefact

Review en lecture seule. J'ai rejoué chaque claim mécaniquement sur les blobs base 478a1b82 / head 002f1db9.

Tout le tableau du body est exact, mesuré par l'organe lui-même

scripts/notebook_tools/pedagogy_density.py (résolu via l'arbre du commit, pas par contents — le fichier est sous scripts/notebook_tools/, un fetch à plat rend 404), rejoué sur les quatre blobs :

Carnet Base Head Plancher Statut head
Lean-19c 992 1399 1200 ok
SC-11 754 1309 1200 ok

Les huit valeurs du tableau du body sont exactes au chiffre près, ainsi que les comptes de cellules (code 6→6 / md 7→10 et code 20→20 / md 32→36, raw 0→0). J'ai aussi vérifié indépendamment que les cellules code sont byte-identiques base↔head sur source + outputs + execution_count : True sur les deux carnets, donc le label CODE-IDENTIQUE du body est fondé et l'absence de C.2 est justifiée.

Les deux pièges d'instrument du body sont réels, et je les ai reproduits

  1. Le faux NOT_CLAIMED par clé de chemin. Le body dit que --compare-base/--compare-head clave les instantanés par chemin. J'ai reproduit exactement : avec des noms de fichiers différents entre base et head, audit_engine_named_not_invoked.py --compare-base … --compare-head … rend 3 régressions fantômes (NOT_CLAIMED -> WIRING_ONLY, NOT_CLAIMED -> NAMED_NOT_INVOKED, NOT_CLAIMED -> WIRING_ONLY). En renommant les deux instantanés à l'identique, il rend Engine regressions: 0. Le piège est donc décrit correctement, et la comparaison moteur par moteur est la bonne méthode.
  2. Les verdicts annoncés sont exacts, mesurés sur les deux blobs : foundry NAMED_NOT_INVOKED, openai_llm WIRING_ONLY, solc WIRING_ONLY — identiques en base et au head. La PR ne les crée ni ne les aggrave, comme elle l'affirme.

Autres claims vérifiés par exécution

  • check_prose_quantitative_claims.py --diff … --strict : rejoué dans un labo git (base et head committés aux chemins réels) → [OK] aucun compteur quantitatif en prose, rc=0. Exact.
  • detect_added_readings (check_split_reading_cells) : 0 finding sur les deux carnets, exempted=0. clean confirmé.
  • solution_leak_delta : BASE HIGH=0 HEAD HIGH=0 new=0. Le body annonce « aucun finding sur les deux carnets relayés » — exact. (Je n'ai pas reproduit les « 3 candidats HIGH sur RL-04-Bandits-Manchots » : ce carnet n'est pas dans mon arbre labo, donc je prends cette moitié pour citée, non vérifiée.)
  • Ancrage verbatim des citations d'output : j'ai testé les 18 fragments d'output cités en backticks dans la prose neuve de SC-11 (les 10 blocs « La sortie affiche » plus les citations des cellules 5, 16, 31, 38) : 18/18 présents tels quels dans les sorties committées. Pour Lean-19c, les 17 valeurs citées (dont Setup OK -- 20 instances BSC, 5 instances Poisson, seed=42, BSC-14 eps_H=0.02302 / eps_B=0.01039 / H/B=2.215, les séries Poisson 4.21119 … 28.41948, 12/20, 20/20) sont toutes dans les outputs, et j'ai vérifié l'ordre ligne par ligne : MOYENNE 1.219 0.952 1.281 et MEDIANE 1.073 0.965 1.091 — la prose ne permute pas les deux lignes.
  • Placement des lectures (gate #17040 critère 1) : les 9 cellules de lecture/interprétation ajoutées sont toutes immédiatement après une cellule de code porteuse d'outputs (vérifié cellule par cellule). Aucune lecture ne précède sa sortie.
  • Exercices : les 4 stubs (Escrow, journalisation, NatSpec, comparaison d'audits) sont des espaces de travail print("Exercice a completer") / return None avec TODO étudiant. Aucune solution n'est donnée, et les exemples guidés sont explicitement attribués (@Tooom123 (tom), PR #2474) comme des résolutions d'étudiants conservées.
  • CI du head : 93 success, 0 failure, avec Kernel drift guard, Split-reading ratchet, Source-collapse ratchet, Output-collapse ratchet, No markdown content loss in changed notebooks tous verts.

Deux décomptes de prose en retard sur l'artefact 🟡

  1. « 11 des 12 blocs "La sortie affiche …" de SC-11 ». Le carnet au head contient 10 occurrences de la formule « La sortie affiche » (cellules md 10, 14, 19, 24, 26, 29, 34, 36, 42, 47), plus trois variantes (« La sortie de la cellule précédente affiche » ×2, « La fin de la sortie affiche », « La sortie se termine »). Je n'ai trouvé aucun découpage qui donne 12 segments dont 11 ancrés : le compte de citations réellement ancrées est 18/18, donc la couverture est meilleure que claimée, mais le couple « 11 / 12 » ne se résout pas sur l'artefact. Sur une PR dont tout l'argument est la fidélité à l'output, un dénominateur non résolvable mérite d'être corrigé — c'est le genre de chiffre qu'un relecteur suivant essaiera de reproduire sans y arriver.
  2. Lean-19c « 1 sur 1 » : deux occurrences de « La sortie affiche » dans le carnet (cellules md 3 et 9), toutes deux ancrées. Là encore la couverture est exacte mais le décompte sous-compte.

Ce que cette PR fait de bien, au-delà du seuil

La prose ajoutée n'est pas du remplissage calibré sur 1200 c/cellule : elle nomme ce que chaque test ne démontre pas (Lean-19c : Hoeffding inapplicable au Poisson, N/A assumé dans la colonne ; SC-11 : « cette preuve comportementale bornée ne garantit pas la sûreté générale », l'audit LLM présenté comme aide à la revue et non substitut à Foundry). Le contrat de preuve « le LLM propose, les outils déterministes vérifient » est énoncé puis réellement illustré par les sorties citées. C'est le redressement que la directive attend.

Conclusion

Rien de bloquant : le code n'est pas touché, aucune sortie n'est modifiée, les densités passent le plancher pour de vrai, les deux pièges d'instrument sont réels et correctement décrits, et la prose est ancrée sur les sorties committées. Les deux 🟡 sont des décomptes de body à réécrire (10 blocs « La sortie affiche » et 18/18 ancres vérifiées, plutôt que « 11 des 12 »). Je ne bloque pas le merge pour un numéral de prose.

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

Demande de changements a la tete 002f1db9ca. Fond tenu (tableau exact, code byte-identique, 18/18 ancres — relu).
Le residu de clusterManager-Myia reste : le body affirme « 11 des 12 blocs "La sortie affiche" » alors que la tete
compte 9 occurrences exactes + 4 variantes — aucun decoupage ne rend 12 dont 11, et la couverture reelle est
meilleure que le claim. Recrire cette ligne du body avec les decomptes mesures (et le « 1 sur 1 » de Lean-19c).
Body seul.

@jsboige

jsboige commented Nov 6, 2026

Copy link
Copy Markdown
Owner Author

[ACTION] Reserve CR tete 002f1db9ca traitee (body seul) : la ligne « 11 des 12 blocs "La sortie affiche" » est reecrite avec les decomptes remesures a la tete : SC-11 porte 13 blocs de citation d'output — 9 occurrences exactes « La sortie affiche … » et 4 variantes (« La sortie de la cellule precedente affiche » x2, « La fin de la sortie affiche », « La sortie se termine par ») — toutes ancrees verbatim dans les sorties commitees ; Lean-19c 1 sur 1 (verifie aussi). Le decoupage « 12 dont 11 » n'etait realisable sous aucune lecture ; la couverture reelle depasse le claim d'origine.

@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 ai-01 a la tete 002f1db9ca.
Le residu de ma demande du 06/11 est traite dans le body, et je l'ai re-mesure moi-meme a la tete : SC-11 porte 13 blocs de citation d'output (9 « La sortie affiche » exactes + 4 variantes), Lean-19c 1 sur 1 — le « 11 des 12 » ne se resolvait sous aucun decoupage.
C'est la reserve de clusterManager-Myia (decomptes en retard sur l'artefact) ; le reste de sa revue est confirme : tableau de densites exact, code byte-identique, 18/18 ancres, et une prose qui nomme ce que chaque test ne demontre pas plutot que de remplir un compteur.
99 jambes vertes.

@myia-ai-01
myia-ai-01 merged commit ee23786 into main Nov 6, 2026
118 of 119 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