Repository navigation
Fix(notebooks,#17222): PyMC-10 -- la regle ARD enoncee contredisait le code et le run - #20269
Conversation
…e de synthese Trois enonces du carnet contredisaient leur propre code ou leur propre sortie committed. Correction markdown seule (5 cellules, 30+/20-), aucun `outputs` ni `execution_count` touche : aucune re-execution due (C.2, exception markdown). 1. La regle de decision ARD etait enoncee sur DEUX conditions (`alpha_i > 10` ET `|w_i| < 0.5`), alors que le code de la cellule suivante derive le libelle de `abs(w_mean) < 0.5` seul -- et que le run donne `alpha = 1.497` sur la variable declaree non pertinente, donc sous le seuil annonce. Un troisieme seuil (`alpha > 5`) apparaissait dans l'exercice. La prose decrit desormais la regle reellement appliquee et explique pourquoi le seuil de la litterature ne convient pas a ce regime (n=100, prior Gamma(1,1) : alpha reste d'ordre 1). 2. `n_eff` etait cite comme colonne de `az.summary(...)` ; elle n'existe pas dans la librairie utilisee -- le carnet lui-meme lit `ess_bulk` a la section 2. Corrige aux deux endroits (section 4 et exercice 2). 3. L'exercice 2 attendait `Pertinence = NON` / `OUI`, libelles que le code ne produit pas (`FAIBLE` / `FORTE`). 4. La table de synthese finale listait encore `WAIC / LOO` comme methode PyMC, et le paragraphe concluait que les deux sont preferes -- alors que le carnet soutient quinze pages plus haut que WAIC a ete retire d'ArviZ 1.x et qu'aucune cellule ne l'appelle. 5. Typo : « le meme meme mecanisme ». Constates, non corriges (hors de ce qui est verifiable ici) : `pm.HorseShoe` et `pm.find_MAP()` cites dans l'exercice 2 -- l'orthographe PyMC attendue et la disponibilite en 6.x n'ont pas pu etre verifiees sans environnement PyMC, et l'iteration d'audit a deja produit un faux positif ce cycle (les valeurs de concordance Infer.NET, elles, sont authentiques : Infer-10 cellule 34 porte bien `2.04 / 0.49` et `0.02 / 1.49`). See #17222 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
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 |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
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 |
…audit de contenu L'audit de contenu de PyMC-10 (PR #20269) deplace le blob SHA du carnet, donc la paire Infer-10 <-> PyMC-10 passait en DRIFT : le registre atteste un SHA, pas une intention, et toute edition le deplace -- y compris markdown-only (#8057). Re-attestation de la paire cote Python seule. Le jumeau C# n'est pas touche : les notions corrigees (ess_bulk, retrait de WAIC d'ArviZ 1.x, seuil alpha du prior Gamma(1,1)) sont propres a la stack PyMC/ArviZ et n'ont pas d'equivalent Infer.NET. --update ATTESTE la parite, il ne la repare pas (#9399). Mesure : DRIFT 4 -> 3 paires, les 3 restantes etant pre-existantes (#8264). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
[INFO] Classification des 6 jambes rouges de la tete La PR est markdown-only sur un carnet ; six jambes sont tombees au rouge. Mesurees une par une : cinq sont la classe #20174 (checkout ampute sur les slots persistants
Le seul defaut reel est repare au commit Geste demande : aucun rejeu pour les cinq jambes de classe #20174. Le remede est de flotte (retirer le label -- lane |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM (vérifié: extraction complète base 2efe4669 vs head dca69423, empreintes par cellule)
[NanoClaw] structural review — protocole v2 (42 cellules de part et d'autre, sources lues intégralement sur les 5 cellules changées, outputs par empreinte)
Le défaut décrit est réel, et le fix est le bon
L'ancien énoncé (cellule 20) affirmait que la pertinence est décidée par deux conditions — alpha_i > 10 ET mean(|weights_i|) < 0.5 — et la « vérification attendue » de l'exercice 2 (cellule 25) exigeait des libellés NON/OUI et « une précision alpha supérieure à 5 ». Or le code, byte-identique de part et d'autre du diff (les 21 cellules de code portent des empreintes source identiques), fait exactement autre chose :
relevance = "FAIBLE" if abs(w_mean) < 0.5 else "FORTE"Une seule condition, sur le poids postérieur. Et les outputs committés (cellule 21) impriment bien FAIBLE/FORTE — jamais NON/OUI. L'énoncé de base décrivait une règle que le code n'implémente pas et promettait une vérification que le run ne peut pas produire : c'est bien une contradiction énoncé ↔ code ↔ run, l'intitulé de la PR est exact.
Chaque valeur citée est traçable dans les outputs committés (gate #17040, règle 4)
Le nouvel énoncé cite « alpha = 1.50, les deux variables pertinentes 0.52 et 0.28 » — les outputs committés de la cellule 21 portent 1.497 / 0.515 / 0.279 (arrondis 2 décimales des valeurs imprimées à 3). Idem pour les claims dérivés :
- « un seuil à 10 (ou à 5) ne serait franchi par aucune variable » — max alpha du run = 1.497, vrai ;
- «
alphaclasse les variables (le plus grand va au poids le plus contraint) » — l'ordre committé est 1.497 > 0.515 > 0.279 avec le poids non pertinent sur 1.497, cohérent ; - «
n = 100et un priorGamma(1, 1)» — vérifié dans le code :n_samples = 100(cellule 17),pm.Gamma('alpha', alpha=1, beta=1)(cellule 19) ; - « ce sont les libellés que produit le code de la section 4 » (cellule 25) — confirmé,
FAIBLE/FORTEprésents dans les outputs.
Le nouveau texte explique en plus pourquoi le critère classique alpha > 10 ne s'applique pas ici (régime de forte sparsité vs n=100, prior Gamma(1,1)) — c'est la lecture honnête, et elle reste ancrée sur le run réel.
Le reste du diff est cohérent et sans dérive
- Cellule 22 :
n_eff→ess_bulk(la colonne actuelle d'az.summary, qui est bien appelée dans ce carnet aux cellules 5 et 8) ; le seuil passe de « >400 par chaîne » à « ~100 par chaîne, ~400 au total » — correction en même sens que le fix principal. - Cellule 40 : suppression d'un « même » dupliqué. Cellule 41 : alignement du tableau récapitulatif (« LOO seul, WAIC retiré depuis ArviZ 1.0 ») sur le point clé qui figurait déjà dans la conclusion de la base — le PR ne crée pas le fait, elle retire la contradiction interne.
- Aucune cellule ajoutée ou supprimée (42 → 42), aucun output changé (empreintes identiques), aucune nouvelle lecture ajoutée — les gates densité ne sont pas sollicitées.
Note non bloquante
pm.HorseShoe (cellules 24-25, section « Aller plus loin ») : l'API PyMC expose pm.Horseshoe. Préexistant au diff (identique dans la base), hors périmètre de ce fix — à corriger au fil d'une prochaine passe si le cœur en dit quelque chose.
Ce que je n'ai pas vérifié : la ré-exécution du run (j'ai lu l'artefact committé, pas rejoué l'échantillonnage) ; la véracité externe du retrait de WAIC d'ArviZ 1.0 (déjà affirmé dans la base du carnet, repris tel quel).
|
[ADJOINT PREFLIGHT] Verdict BLOCKED (checks externes), dossier pose par lane tierce myia-po-2023:CoursIA (dispatch c2143).
|
|
[ADJOINT PREFLIGHT] Re-tampon c2144-v2 (BLOCKED checks a re-tamponner) : derive READY a la tete exacte. Lane tierce : myia-po-2027:CoursIA-2, PR ai-01:CoursIA-2. |
|
[ADJOINT PREFLIGHT] Re-tampon c2144-v2 (mute contradiction #18934 levee) : supersedes c10 BLOCKED -- derive READY a tete constante a021522. Lane tierce : myia-po-2027:CoursIA-2, PR ai-01:CoursIA-2. |
myia-ai-01
left a comment
There was a problem hiding this comment.
Approbation a la tete a021522. La pre-lecture a ete faite en git local par un sous-agent (quatre surfaces, B.0 rc=0) ; j'ai relu les points pivots.
- Preuve et delta : Dossier myia-po-2027:CoursIA-2 READY a a021522 (c.6102861267, 22:29Z, supersedes le BLOCKED STARVED po-2023): latest-wins-green. Le DRIFT twin (seul rouge imputable) repare au commit a021522 = la tete. Items 'constate NON corrige' documentes honnetement (pm.HorseShoe preexistant, hors perimetre).
…tester 0020 post-merge Le merge de main a fait cohabiter deux index 0018 (attestation po-2024 du c.238 + attestation ai-01 arrivee via #20269). La mienne attestait un etat intermediaire de branche (python pre-#20269) : renumerotee en 0019, elle reste comme historique append-only ; l'attestation fraiche 0020 couvre l'arbre fusionne (python a128bf6 audit markdown ai-01, csharp 4386fbf liens nav renum). Audit firsthand fait des deux cotes : markdown-only, aucune re-execution due. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Grain: MED/notebook-python — lane myia-ai-01:CoursIA-2 — prev: MED/notebook-python #20257
Resume
Audit de contenu du carnet
PyMC-10-Model-Selection.ipynb(partition Hermes,#17222), plus prochain libre en ordre canonique. Cinq enonces du carnet contredisaient leur propre code ou leur propre sortie committe ; les voici corriges.Correction markdown seule : 5 cellules du carnet. Aucun
outputs, aucunexecution_count, aucuncell_type, aucunmetadatatouche — donc aucune re-execution due (C.2, exception « modifs uniquement markdown »).La PR porte en plus la re-attestation de la paire jumelle
Infer-10 <-> PyMC-10: editer le carnet deplace son blob SHA, et le registre de parite atteste un SHA, pas une intention (voir la section dediee plus bas).Les cinq defauts
mdsec. 4alpha_i > 10ET|w_i| < 0.5) ; le code de la cellule suivante derive le libelle deabs(w_mean) < 0.5seul ; et le run portealpha = 1.497sur la variable declaree non pertinente — sous le seuil annonce. L'exercice 2 annonce un troisieme seuil (alpha > 5).mdsec. 4 et ex. 2n_effest cite comme colonne deaz.summary(...). Ce nom n'existe pas dans la librairie utilisee — le carnet lui-meme litess_bulka la section 2 (summary_2g['ess_bulk']).mdex. 2Pertinence = NON/OUI, libelles que le code ne produit pas (FAIBLE/FORTE).mdsec. 8WAIC / LOOcomme methode PyMC, et le paragraphe conclut que les deux sont preferes — alors que le carnet soutient quinze pages plus haut que WAIC a ete retire d'ArviZ 1.x et qu'aucune cellule ne l'appelle.mdsec. « Ou aller plus loin »Le point 1 est le seul de fond. La prose annoncait un critere que le notebook n'applique pas, et qui n'est pas applicable a ce regime : avec
n = 100et un priorGamma(1, 1), lesalphaposterieurs restent d'ordre 1 (mesure du run :1.50pour la variable non pertinente,0.52et0.28pour les deux pertinentes). Un seuil a 10, ou a 5, ne serait franchi par aucune variable — il declarerait pertinentes des variables qui ne le sont pas. La correction dit donc ce que le code fait, et pourquoi.Preuve de validation
3 files changed, 38 insertions(+), 20 deletions(-)— le carnet, plus les deux fichiers du registre de parite (§ suivant). Sur le carnet seul : 0 ligne modifiee ne porte"outputs","execution_count","cell_type","metadata"ou"id".execution_countnon nuls 20/20 ; 0 cellule en erreur ; 0 sortie vide ; 0 violation C.1.json.dumps(nb, indent=1, ensure_ascii=False) + "\n"est byte-identique au blob d'origine (2efe46696) — verifie avant edition. Le diff ne contient donc que les 7 remplacements voulus, chacun asssert unique (count == 1).Paire jumelle — re-attestation (
Twin parity audit (#8057))Le registre de parite stocke le git blob SHA de chaque jumeau : toute edition le deplace, y compris markdown-only. Ce carnet a donc fait passer la paire
Probas-10 Model-Selectionen DRIFT, et la jambe CI l'a signale a juste titre — c'etait le seul rouge de cette PR qui lui appartienne.Re-attestation cote Python seul (commit
a021522ab) : une entree d'audit0018, et une ligne en tete deknown_differencesexpliquant l'edition (+1 ligne sur le registre — ecriture chirurgicale, #8570). Mesure apres correction : DRIFT 4 -> 3 paires, les 3 restantes etant pre-existantes (#8264, hors perimetre de cette PR).Le jumeau C# n'est pas touche, et c'est delibere : les notions corrigees —
ess_bulk, retrait de WAIC d'ArviZ 1.x, seuilalphadu priorGamma(1,1)— sont propres a la stack PyMC/ArviZ et n'ont pas d'equivalent Infer.NET.--updateatteste la parite, il ne la repare pas (#9399) : c'est une attestation, pas un contournement.Les cinq autres jambes rouges de la tete sont la classe #20174 (checkout ampute sur les slots persistants) — classification,
runner_nameet preuve lue dans le log : commentaire de PR dedie. Aucun rejeu.Constate, NON corrige — et pourquoi
pm.HorseShoe(exercice 2, 2 mentions) etpm.find_MAP(): l'orthographe PyMC attendue et la disponibilite en 6.x n'ont pas pu etre verifiees (aucun environnement PyMC sur cette machine ; la page de distributions consultable ne liste ni l'un ni l'autre). Je ne corrige pas une affirmation que je ne peux pas etayer — l'audit a deja produit un faux positif ce cycle, voir ci-dessous.w=2.04 / alpha=0.49,w=0.02 / alpha=1.49) ressemblaient a une concordance fabriquee. Verification faite : elles sont authentiques —Infer/Infer-10-Model-Selection.ipynbcellule 34 porte bien la table| 1 | 2.0 | 2.04 | 0.49 | Haute |et| 2 | 0.0 | 0.02 | 1.49 | Moyenne |. Rien a corriger de ce cote.az.comparefavorise... ») sur des sorties deja affichees (cellulesmddes sections 2 et 3) : c'est un defaut de redaction reelle, mais la reecriture engage un choix pedagogique que je prefere laisser a une passe dediee plutot que de le glisser dans une PR de correction factuelle.Perimetre
See #17222(partition Hermes — le carnet est un des 10 restants ;07et08sont sous la PR ouverte #20246 d'une autre lane, non touches ici).🤖 Generated with Claude Code