Repository navigation
fix(17391): Lab15 -- les lectures ne nomment plus ce que l'artefact ne contient pas - #19871
Conversation
…e contient pas Deux lectures de prose annonçaient du contenu que l'artefact cité ne porte pas. - Cellules 1 et 5 : le simulateur y est décrit comme reproduisant le « protocole Kaggle » avec leaderboard, deadline et découpe publique/privée. Mesure : `KaggleSimulator` n'expose que deux méthodes (`get_competition_info`, `generate_sample_data`) et `CompetitionInfo` porte name/task/metric/description/data_description — aucune de ces trois pièces n'existe. La prose décrit désormais ce que le simulateur pose réellement (tâche, métrique, schéma de features, cible à part) et nomme ce qu'il laisse volontairement dehors. - Cellule 20 : la lecture du code généré annonçait « RandomForestClassifier + XGBClassifier ». Le template généré (cellule 8) n'importe que `xgboost` et n'instancie que `xgb.XGBClassifier` — aucun `sklearn.ensemble` dans tout le carnet. La lecture nomme maintenant ce que le code contient réellement. Audit #17073, partition Hermes, carnet Lab15 (édition markdown seule : 3 cellules markdown, 0 cellule de code, aucun execution_count ni output modifié — C.2 satisfait sans ré-exécution). Le reste de l'audit est consigné sur #17391 (passe d'organes, findings). See #17391 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
[ADJOINT PREFLIGHT] |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
|
✅ No prose/output mismatch detected in the notebooks this PR changed. 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 |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
…-counts) L'organe `prose-counts` (bloquant, `--strict` en CI) refusait la cellule markdown ajoutee : « (ici **300 lignes x 8 features** pour la Tabular Playground Series) » fige une mesure que le code du simulateur porte deja. Remede prescrit par l'organe lui-meme : retirer la mesure, garder le predicat. La cellule dit desormais que le @DataClass expose les dimensions du probleme (jeu tabulaire synthetique du type Tabular Playground Series) sans reveler la cible -- ce qui est le propos pedagogique. Markdown-only : aucune cellule de code modifiee, pas de re-execution due. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Reparation du rouge bloquant
|
|
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 |
|
[ADJOINT PREFLIGHT] |
myia-ai-01
left a comment
There was a problem hiding this comment.
Lecture finale complete : body/comments/reviews/threads/diff, B.0 clear. Delta markdown seulement ; simulator et template lus a la tete : pas de leaderboard implemente, one-hot et XGBClassifier/early stopping/roc_auc_score effectivement presents. Les sorties et cellules code ne changent pas. Residus F3 documentes sur #17391 ; le mode deterministe du template ne constitue pas une nouvelle preuve de generation LLM.
Grain: MED/notebook-python -- lane myia-po-2027:CoursIA -- prev: DEEP/notebook-python #19574
Contexte
Audit de
Lab15-Kaggle-Challenge.ipynb(partition Hermes, campagne #17073), un carnet par cycle. Lab15 est l'un des deux carnets que le registre corrigé de la partition donne comme jamais audités (l'autre, Lab17, vit sousDay7-Production).Périmètre
1 fichier :
MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track2-GoogleADK/Day6-MLE-Star/Lab15-Kaggle-Challenge.ipynb.Nature du diff : 3 cellules markdown, 0 cellule de code. Aucun
execution_countet aucunoutputsn'est modifié — C.2 est satisfait sans ré-exécution, et aucune lecture chiffrée du carnet n'est invalidée. Vérifié cellule par cellule contreorigin/main(comparaison source + outputs + execution_count : 0 cellule de code touchée ; pas de BOM, 0 CRLF).Passe d'organes
Couverture avant et après l'édition, verdict identique :
check_split_reading_cellscheck_interp_positioningcheck_density_anchorcheck_cell_source_parsescheck_outputs_text_fragmentationcheck_null_exec(H.3)check_exec_sequencecheck_output_failure_textcheck_output_collapse/check_source_collapsecheck_notebook_nav_chaincheck_notebook_navlinkscheck_identifier_regressionFindings corrigés
F1 — le simulateur est décrit avec une machinerie qu'il n'implémente pas
Cellules markdown 1 et 5. La prose y présentait le simulateur comme reproduisant le « protocole Kaggle » :
Mesure :
leaderboardetdeadlinen'apparaissent nulle part dans une cellule de code du carnet (0 occurrence) ;KaggleSimulatorn'expose que deux méthodes —get_competition_info()etgenerate_sample_data()— etCompetitionInfoportename,task,metric,description,data_description. Aucun leaderboard, aucune deadline, aucune découpe publique/privée : la prose décrivait un protocole absent, sur un paragraphe dont c'est justement l'argument central.Correction : la prose décrit désormais ce que le simulateur pose réellement (une tâche nommée, une métrique officielle, un schéma de features, une cible à part) et nomme explicitement ce qu'il laisse dehors — la machinerie de compétition — en donnant la raison (elle n'apprend rien sur la méthode). L'argument pédagogique du paragraphe est conservé, et il est maintenant vrai.
F2 — la lecture du code généré nomme un modèle absent du code
Cellule markdown 20 :
Mesure : le template généré (cellule 8,
generate_template_code) importepandas,numpy,sklearn.model_selection.train_test_split,sklearn.metrics.roc_auc_scoreetxgboost— puis instanciexgb.XGBClassifier.RandomForestClassifiern'apparaît que 3 fois dans le carnet, et jamais dans du code exécutable : la lecture elle-même (cellule 20), une puce d'indice d'exercice (cellule 28) et une ligne commentée de l'exercice étudiant (cellule 29). Aucunsklearn.ensemblen'est importé — le carnet n'instancie jamais de forêt aléatoire.Correction : la lecture nomme ce que le code contient (one-hot des catégorielles,
XGBClassifieravec early stopping, évaluation parroc_auc_score). La phrase suivante — qui rattache le code aux modèles SOTA recommandés à l'étape précédente — reste vraie et inchangée : c'est bien la liste SOTA qui oriente le choix, mais un seul de ses trois modèles est implémenté dans le template.Finding rapporté, non corrigé ici (il vit dans une cellule de code)
F3 — le taux de bruit annoncé n'est pas celui du code, et la plage d'AUC est démentie par l'output committé
Cellule de code 6 (docstring + commentaire) et cellule de code 27 (message d'avertissement) :
noise_mask = rng.random(n_samples) < 0.05→ 5 %Deux écarts, tous deux mesurables : le taux (15 % annoncé vs 5 % codé) et la plage prédite (
~0.82-0.88vs0.9624committé, hors bande). La lecture cohérente est celle d'un docstring resté à une version antérieure du générateur, où le bruit était plus élevé ; le code a été abaissé à 5 % sans que les nombres suivent.Non corrigé ici volontairement : ces trois textes vivent dans des cellules de code. Les corriger engage une ré-exécution complète du carnet (règle C.2) — faisable, le carnet étant déterministe, mais c'est une décision de contenu (ajuster le taux de bruit, ou ajuster les nombres annoncés) qui appartient au propriétaire de la série, et elle élargirait le périmètre de cette PR. Consigné sur #17391 pour le cycle suivant.
Vérifications
gh pr list --state open --limit 200filtré sur les cheminsLab15/Lab16/Lab17/Track2/GoogleADK→ 0 PR ouverte ;check_lane_claim.py 17391 --lane myia-po-2027:CoursIA→CLEAR; aucun worktree positionné sur le chemin.[CLAIMED]posé sur [Audit #17073] Série DSWA — Track2-GoogleADK — partition Hermes #17391 avant toute édition.origin/main: 0 cellule de code touchée (source, outputs et execution_count identiques).See #17391
🤖 Generated with Claude Code