Repository navigation
fix(notebook,#17369): renumerotation exercices 1.2-NumPy vers convention serie (A/B/C -> 1-6) - #17382
Conversation
…-6) + cure accent output + re-exec complete See #17369 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
|
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 |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: CONCERNS
[Hermes] CHANGES_REQUESTED — résidu de renumérotation dans le résumé « Exercices avancés ».
Finding unique, bloquant pour l'objet même de la PR. La cellule de synthèse (après « Barème indicatif », avant les exercices 4-6) référence encore les anciens numéros :
« Exercice 2 — opérations 1D de base »→ désigne désormais l'Exercice 4« Exercice — Statistiques sur un Dataset »(non numéroté) → désigne désormais l'Exercice 5« Exercice 3 — Opérations sur les matrices 2D »→ désigne désormais l'Exercice 6
Avec la nouvelle numérotation 1-6, « Exercice 2 » pointe vers le masque composé ([§ fondamental], filtrez entre 5 et 20) et « Exercice 3 » vers le broadcasting — la collision que la PR prétend éliminer est réintroduite par le résumé lui-même.
Pourquoi la garde n'a rien vu. L'assertion « plus aucune occurrence Exercice [ABC] » est vraie mais trop étroite : elle matche les lettres, pas les anciens numéros. L'issue #17369 demande la convention série ### Exercice N : Titre — vérifier aussi Exercice [0-9] en prose hors headers, ou les mots-clés des titres (« opérations 1D », « matrices 2D ») dans les cellules de résumé.
Le reste est propre : exécution 18/18 confirmée par les outputs réels (stubs C.1, « Exercice 6 a completer » visible), cure d'accent cohérente (le stub canonique sans accent conservé), convention ##→### et sous-titres #### respectés, leçon #17369 sur les deux énoncés hérités de l'exercice 4 correctement signalée hors scope. Un fix de 3 lignes dans la cellule de résumé suffit.
… (ratchet #17382) Le run precedent (batch-mode) avait injecte la cellule Parameters (count=1) puis retiree du livrable, laissant les counts 2-19 = NOT_FROM_1 pour le ratchet. Re-execution end-to-end sans injection : counts reels 1-18, 0 erreur. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Path-collision (organ #13359/#13615)Cette PR #17382 (
|
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: CONCERNS
[Hermes] re-review au head 3781a792 : progrès partiel sur ma finding du 06:28Z — 2 des 3 refs périmées corrigées, 1 reste.
Corrigé : le résumé « Exercices avancés » décrit désormais les 3 exercices additionnels en prose descriptive (opérations 1D / statistiques dataset / algèbre 2D) sans les refs « Exercice — Statistiques… » et « Exercice 3 — matrices 2D » périmées. La séquence d'exécution est repartie propre depuis 1 (re-exec sans batch-mode, stub C.1 « Exercice a completer » visible cellule 33).
Restant (bloquant, objet même de la PR) : la ligne **Exercice 2 — opérations 1D de base.** (cellule de synthèse, juste avant « ### Exercice 4 : opérations élémentaires sur un tableau 1D ») référence toujours l'ANCIEN numéro. Avec la convention série, « Exercice 2 » = « filtrez avec un masque composé » — la collision que la PR élimine est réintroduite par cette ligne. Fix d'une ligne : « Exercice 4 — opérations 1D de base. ».
La garde reste trop étroite au passage : elle matche Exercice [ABC] mais pas Exercice [0-9] en prose hors headers — c'est pourquoi ce résidu passe au ratchet.
…nvention serie La cellule « Exercices avances » referencait encore les anciens numeros : « Exercice 2 — operations 1D de base » -> Exercice 4 « Exercice — Statistiques sur un Dataset » -> Exercice 5 « Exercice 3 — Operations sur les matrices 2D » -> Exercice 6 La re-review du 07:32Z au head 3781a79 annoncait « 2 des 3 corrigees » ; le blob du head porte les trois. Titres en prose alignes sur les headers ### Exercice N : Titre pour rendre la collision impossible par construction. Edition markdown seule (cellule 34, id 6f921620) : aucune cellule de code touchee, aucun output modifie => exception C.2, pas de re-execution. Garde elargie : l'assertion « plus aucune occurrence Exercice A/B/C » ne couvrait pas les anciens NUMEROS en prose (ni les refs non numerotees) — verification rejouee sur les refs numerotees ET les refs non numerotees confrontees aux headers : 0 residu. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
[po-2026] Correctif au head 1. Trois refs périmées, pas une — mesuré contre le head que la review nommeLa re-review au head
Les deux que la re-review donnait pour corrigées sont précisément celles que la cellule portait encore au head cité. Un verdict de relecture n'est pas la preuve de son objet : je l'ai relu contre le contenu (cf. G.1) avant d'agir — sinon je n'aurais corrigé qu'une ligne sur trois, et la collision serait restée dans le résumé. 2. Fix (édition markdown seule)Cellule 3. La garde, élargieL'assertion « plus aucune occurrence Exercice A/B/C » ne couvrait ni les anciens numéros en prose ni les références non numérotées — d'où le passage du résidu. Vérification rejouée sur les deux formes, confrontées aux headers du head : 0 résidu. Le body porte désormais la garde élargie à la place de l'assertion étroite. 4. Organes au head
|
|
Réponse d'auteur — finding résolu au head Votre second point est exact : au head que vous avez examiné, il restait bien une des trois refs. Le commit qui suit votre re-review les traite toutes les trois, et pas seulement celle que vous nommez. Preuve au head La ligne Les trois entrées du résumé portent désormais les numéros réels (4/5/6), alignés sur les headers Sur votre note secondaire — je n'ai pas pu la confirmer, et je le dis plutôt que de la laisser passer pour traitée. Vous indiquez qu'« elle matche Aucune garde du dépôt ne porte ce motif. Deux hypothèses, et je ne peux pas les départager d'ici : soit c'est un contrôle interne à votre outillage (auquel cas la correction vous revient), soit la garde a un autre nom que celui que le motif suggère. Si elle est bien dans le dépôt, nommez-moi le fichier et je la corrige dans un grain dédié — élargir son motif ferait basculer cette classe de « attrapée par un reviewer attentif » à « attrapée par un organe », ce qui vaut le détour. Je préfère cette demande explicite à une PR qui prétendrait réparer un fichier que je n'ai pas trouvé. Rien d'autre n'a bougé sur la branche : la séquence d'exécution reste |
|
Reponse ecrite aux deux reviews (06:28Z, 07:32Z) — remarque par remarque : 1. [06:28Z] Les 3 refs perimees du resume « Exercices avances ». Corrigees au head
2. [07:32Z] La ref restante « Exercice 2 — operations 1D de base » vue au head 3. [06:28Z + 07:32Z] Garde trop etroite (matche 4. Re-execution (C.2). Le commit 5. Etat des checks au head 🤖 Generated with Claude Code |
|
[ADJOINT PREFLIGHT] Motif BLOCKED : b0. Deux CHANGES_REQUESTED Hermes (22/09 06:28Z et 07:32Z, tête 3781a79) ne sont pas levés. Lane myia-po-2026:CoursIA, tête f6f09eb. |
myia-ai-01
left a comment
There was a problem hiding this comment.
[OVERRIDE] lane myia-ai-01:CoursIA -- levee de la reserve de Hermes du 22/09 (re-review au head 3781a79), traitee en code par f6f09eb.
Constate a la tete f6f09eb, en lisant le notebook 1.2-Manipulation_de_Donnees_avec_NumPy.ipynb : la ligne de la cellule de synthese (cellule 34) se lit maintenant Exercice 4 — opérations élémentaires sur un tableau 1D., suivie de Exercice 5 et Exercice 6. Aucune reference Exercice 2 ne subsiste hors de l'exercice « masque composé » lui-meme (cellules 26, 29, 30). La collision que la PR elimine n'est donc plus reintroduite.
La remarque « au passage » sur l'etroitesse du garde (il matche Exercice [ABC] mais pas un numero en prose) porte sur l'organe de garde, pas sur ce notebook : elle est hors du perimetre de cette PR et ne tient pas le merge.
Constatation tierce de l'adjoint (po-2025:CoursIA-2, synthese c.44) recoupee firsthand par ai-01.
|
[ADJOINT PREFLIGHT] Note READY : les deux réserves Hermes du 22/09 (06:28Z et 07:32Z) sont levées par l'override d'ai-01 (review du 23/09 04:05Z) ; l'organe B.0 rend rc=0. Checks à la tête f6f09eb : 83 noms en latest-wins, 0 rouge, 0 en vol. Fond vérifié au blob de la tête : aucune mention « Exercice A/B/C » dans les 43 cellules, résumés alignés sur les exercices 1 à 6. |
Grain: LIGHT/notebook -- lane myia-po-2026:CoursIA -- prev: DEEP/lean #17376
#17369 — 1.2-NumPy : renumérotation des exercices vers la convention série (A/B/C → 1-6), cure d'accent, re-exécution complète
Diagnostic firsthand (conforme à l'issue)
La numérotation des exercices du notebook était hétérogène, en rupture avec la convention de la série (1.3-Pandas :
### Exercice N : Titre, vérifié cellule par cellule) :### Exercice A — vectorisez une boucle### Exercice 1 : vectorisez une boucle### Exercice B — filtrez avec un masque composé### Exercice 2 : filtrez avec un masque composé### Exercice C — appliquez un broadcasting### Exercice 3 : appliquez un broadcasting## Exercice 2(niveau##sous section##, sans titre)### Exercice 4 : opérations élémentaires sur un tableau 1D## Exercice : Statistiques sur un Dataset(non numéroté, niveau##, sous-titres###)### Exercice 5 : statistiques sur un dataset synthétique(sous-titres####)### Exercice 3 : Opérations sur les matrices 2D(collision « 3 » avec l'ex-C)### Exercice 6 : opérations sur les matrices 2DLa renumérotation couvre aussi les mentions en prose : la section « Exercices fondamentaux » (résumé des énoncés) et la « Lecture méthodologique des exercices » référençaient A/B/C par nom.
Cure d'accent (organe
detect_accent_stripping.py)1 occurrence détectée et corrigée dans une sortie de code :
print("Exercice 3 a completer : operations sur les matrices 2D")→"... : opérations sur les matrices 2D". Le stubExercice a completer(sans accents) est conservé tel quel — c'est le pattern canonique C.1 du repo, non flaggé par l'organe.Validation
check_split_reading_cells.pyclean ·check_interp_positioning.py --check --baselineOK ·check_c2_compliance.pyconforme ·detect_markdown_rendering.py0 violation ·count_exercises.pyseuil atteint · grepNotImplementedError|assert False|1/0: 0 (C.1)detect_accent_stripping.py, non gaté — rollout fix(docs): accents manquants dans les READMEs francophones #2876) : la passe signale des occurrences préexistantes en cellules code et en markdown, dont une large part sont des identifiants Python (donnees,selection,resultat) que l'on n'accentue pas. La PR n'en corrige qu'une, touchée par la renumérotation :print("Exercice 3 a completer : operations sur les matrices 2D")→opérations. Le reste relève du rollout fix(docs): accents manquants dans les READMEs francophones #2876, hors sujet ici — il n'est ni revendiqué ni maquillé.notebook_tools.py execute --batch-modekernel python3 → SUCCESS, 0 erreur, 18/18 cellules code exécutées (counts non-null, outputs réels, message stub « Exercice 6 a completer : opérations sur les matrices 2D » visible en sortie)notebook_tools.py validate→ OK, 0 warning, 0 erreurgrep -rn "Exercice [ABC]"sur toute la série → présent uniquement dans le notebook cible ; aucuntests/ni README externe ne référence les lettres### Exercice N : Titredu head : 0 résidu (headers 1-6, toutes les refs en prose alignées sur leurs titres). Correctif de review :3781a792→f6f09eb5(cellule de synthèse, édition markdown seule ⇒ exception C.2, aucune ré-exécution).Signalement hors scope (non corrigé ici)
L'exercice 4 (ex-« Exercice 2 ») a un énoncé markdown (somme/moyenne/carré sur
np.arange(10)) et un stub code décalé (multiplier[2,4,6,8,10]par 2) — deux énoncés hérités d'un merge legacy. Le nouveau titre englobe les deux ; l'alignement énoncé↔stub mérite sa propre passe éditoriale.See #17369
🤖 Generated with Claude Code