Repository navigation
Fix(notebook,#13410): redressement densite g151 -- Lean-19c (992 -> 1399) et SC-11 (754 -> 1309), markdown-only - #24804
Conversation
…-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).
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible) Verdict calcule ce tour (cle
Pinned lockfile: |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
✅ No unanchored measurement claim detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ 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 |
|
✅ 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 |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
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
- Le faux
NOT_CLAIMEDpar clé de chemin. Le body dit que--compare-base/--compare-headclave 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 rendEngine regressions: 0. Le piège est donc décrit correctement, et la comparaison moteur par moteur est la bonne méthode. - 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.cleanconfirmé.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 Poisson4.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.281etMEDIANE 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 NoneavecTODO é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, 0failure, avecKernel drift guard,Split-reading ratchet,Source-collapse ratchet,Output-collapse ratchet,No markdown content loss in changed notebookstous verts.
Deux décomptes de prose en retard sur l'artefact 🟡
- « 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.
- 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
left a comment
There was a problem hiding this comment.
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.
|
[ACTION] Reserve CR tete |
myia-ai-01
left a comment
There was a problem hiding this comment.
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.
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.
Lean-19c-Borne-Bernstein-Python.ipynbSC-11-LLM-Assisted-Python.ipynbDiff :
+154 / −28, deux fichiers, aucun autre chemin touché.Preuves vérifiées sur la tête
002f1db9caAucune ré-exécution due (C.2) — les cellules code sont byte-identiques à
origin/main, outputs etexecution_countcompris :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:cleansur les deux carnets (aucune cellule de lecture scindée insérée).audit_engine_named_not_invokedverdict 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 surmain; la PR ne les aggrave pas et ne les crée pas.solution_leak_deltabase vs tête : aucun finding sur les deux carnets relayés (les 3 candidats HIGH signalés portent surRL-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