Repository navigation
fix(genai-image,#18053): ordre de lecture — 3 constats annonce/lecture - #18075
Conversation
Tranche GenAI/Image de l'audit #18053 (ma seconde tranche assignée). Les 3 constats sont CONFIRMED à `main` après re-vérification (règle audit-reassessment) : - 01-3-Basic-Image-Operations [3] : l'annonce « La cellule suivante initialise l'environnement Python... » ne précédait pas le code d'initialisation, qui est en [5] (la cellule suivante immédiate [4] est une section sur le rôle du notebook dans la série). Reformulation de l'annonce au pluriel, la cellule [4] restant légitimement entre les deux. - 02-2-FLUX-1-Advanced-Generation [6] : l'annonce du code de détection GPU était séparée de ce code par la cellule « 🎮 Lecture » qui interprète sa sortie. Échange des cellules 7 et 8. - 02-2-FLUX-1-Advanced-Generation [9] : même classe, l'annonce de la classe FluxClient était séparée de son code par une « 💡 Lecture complémentaire » interprétant la sortie de la détection GPU. Échange des cellules 9 et 10. Après les deux échanges, la séquence devient : annonce → code → lecture(s) → annonce → code → lecture, chaque lecture suivant la sortie qu'elle interprète. Aucune cellule de code n'est modifiée : le multiensemble des cellules est identique avant/après sur FLUX, l'ordre des cellules de code est identique sur les deux notebooks, les `execution_count` et `outputs` sont inchangés. Le contrôle de séquence d'exécution de GenAI/Image reste 24/24 CLEAN, 0 DIRTY. Aucune ré-exécution n'est donc due (C.2/C.3). See #18053 Co-Authored-By: Claude-Code <noreply@anthropic.com>
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
|
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: |
Path-collision (organ #13359/#13615)Cette PR #18075 (
|
Le deplacement de la cellule 🎮 Lecture apres la cellule de code [7] a laisse DEUX lectures rattachees a la meme sortie (🎮 Lecture puis 💡 Lecture complémentaire), ce que le cliquet split-reading compte comme une regression (SECOND_READING). Le mandat est de fusionner dans la lecture existante, pas d'en ajouter une seconde : les deux paragraphes sont donc reunis en une seule cellule. Markdown seul, aucune cellule de code modifiee : pas de re-execution due (C.2/C.3). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
La fusion precedente avait insere la lecture unifiee sans retirer la cellule d'origine (slice cs[:9] au lieu de cs[:8]) : la sortie GPU portait donc trois lectures (l'originale, la fusionnee, la transition) au lieu de deux, et le cliquet split-reading comptait toujours une regression. La cellule d'origine est retiree ; il reste une lecture et une transition. Markdown seul, aucune cellule de code modifiee : pas de re-execution due. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
Le rouge bloquant du job Cause, mesuree. Le deplacement de la lecture GPU apres la cellule de code a laisse deux lectures rattachees a la meme sortie (l'originale et la fusionnee), ce qui fait monter le compte par sortie de 2 a 3. Une premiere tentative de fusion avait insere la lecture unifiee sans retirer la cellule d'origine : le fichier portait alors deux cellules Correctif. La cellule d'origine est retiree ; la sortie GPU ne porte plus qu'une lecture et une transition. Verification (apres le dernier commit, tete Aucune cellule de code n'est modifiee : l'invariant est verifie par assertion sur |
|
[ADJOINT PREFLIGHT] Prévalidation tierce à tête exacte, sans approbation ni décision de merge. Body, sept commentaires (dont le correctif post-commit du split-reading), aucune review, zéro thread inline, diff complet des deux carnets et issue #18053 lus. Les trois constats Image ont été confrontés aux cellules voisines : dans 01-3, l'annonce au pluriel couvre la section intercalaire puis le code [5] ; dans 02-2, l'annonce GPU [6] précède le code [7], sa lecture [8] suit sa sortie, l'annonce FluxClient [9] précède le code [10] et sa lecture [11] suit. Le correctif retire la lecture complémentaire devenue redondante au lieu de produire une double lecture. Comparaison des blobs origin/main et tête : 43→43 cellules dans 01-3, 44→43 dans 02-2 ; les sources, execution_count et outputs de toutes les cellules code sont identiques et dans le même ordre. Le diff +8/-16 est markdown-only : aucune nouvelle exécution due par C.2/C.3, et aucune exécution locale de l'adjoint. Le check split-reading et son rejeu local rendent 0 régression ; les journaux exact-head Output-collapse et Source-collapse portent 0 flagged et la perte markdown 0 finding. Collision de chemin advisory avec #18074 sur 01-3 : #18074 ré-exécute ce carnet et réaligne sa prose quantitative. Elle est OPEN ; ai-01 devra vérifier l'ordre d'intégration et le résultat fusionné avant merge, sans supposer que les deux PRs sont indépendantes. #18053 reste ouverte pour ses autres séries. Décision finale réservée à ai-01. |
Grain: MED/notebook-python — lane myia-po-2026:CoursIA-2 — prev: MED/docs #18020
Summary
Seconde tranche de l'audit multi-agents #18053 — GenAI/Image (3 constats). Les 3 lignes étaient CONFIRMED à
main: deux annonces séparées du code qu'elles annoncent par une cellule de lecture interprétant une autre sortie, et une annonce décalée de deux cellules par une section intercalée.Périmètre : 2 notebooks, déplacements de cellules markdown + une reformulation d'annonce.
Verdicts ligne par ligne
01-Foundation/01-3-Basic-Image-Operations.ipynb[3]DANGLING_INTRO— « La cellule suivante initialise l'environnement Python… » mais[4]est une section sur le rôle du notebook dans la série, le code d'initialisation étant en[5]02-Advanced/02-2-FLUX-1-Advanced-Generation.ipynb[6]DANGLING_INTRO— annonce « la cellule suivante détecte la disponibilité d'un GPU CUDA et tente de charger Diffusers », mais[7]= « 🎮 Lecture » interprétant la sortie de[8], le code GPU étant en[8][7]et[8]02-Advanced/02-2-FLUX-1-Advanced-Generation.ipynb[9]DANGLING_INTRO— annonce que la cellule suivante définit la classeFluxAPI, mais[10]= « 💡 Lecture complémentaire » interprétant la sortie de[8], le code de la classe étant en[11][9]et[10]3/3 CONFIRMED, 0 FALSE POSITIVE. Mécaniques appliquées telles que proposées par l'audit, sans écart.
Séquence obtenue
Les deux échanges de FLUX ne se contentent pas de réparer chaque annonce séparément : ils rendent la séquence cohérente de bout en bout.
Chaque lecture suit la sortie qu'elle interprète, et chaque annonce précède immédiatement son code.
Pourquoi le constat 1 se répare par reformulation et non par déplacement
[4](« Ce troisième volet de la fondation Image assume un rôle précis dans la série… ») est une section d'orientation sur la place du notebook dans la série, légitimement placée après les paramètres Papermill et avant le code. La déplacer ferait plus de dégât que l'annonce qu'elle gêne. C'est donc l'annonce qui s'ajuste : le code d'initialisation est bien dans les cellules suivantes ([5]), au pluriel.Preuves de non-régression
Aucune cellule de code n'est modifiée, donc aucune ré-exécution n'est due (C.2/C.3).
02-2-FLUX: multiensemble des cellules identique avant/après (réordonnancement pur), jeu d'idinchangé, ordre des cellules de code identique,execution_countetoutputsinchangés.01-3: aucune position modifiée, seule la cellulemqt2vlh8ywchange (la reformulation déclarée).scripts/notebook_tools/check_exec_sequence.py MyIA.AI.Notebooks/GenAI/Imagescripts/notebook_tools/cell_order_ci.py --base <HEAD> --head <arbre>scripts/notebook_tools/check_cell_source_parses.pyscripts/notebook_tools/check_duplicate_sections.pyexecution_count, source-list newlines,#13326cell-source compilable)c11515560Observations incidentes — signalées, non corrigées ici
GenAI/Audio.scripts/notebook_tools/check_interp_positioning.py(EPIC EPIC: remise en ordre des cellules d'interpretation mal positionnees (desordre massif introduit par les enrichissements density #10488) #10678) rend 0 finding surGenAI/Imageavant et après cette PR — mesuré, comme sur l'autre tranche. Sa détection ne couvre pas le cas « interprétation placée avant le code de sa propre section ». Les 3 constats viennent donc de la lecture, pas de l'organe : le trou est dans la couverture, pas dans les notebooks, et il se répète sur deux séries indépendantes.02-2-FLUX-1-Advanced-Generation.ipynbn'ont pas d'idalors que le fichier déclarenbformat_minor: 5(qui rend l'idobligatoire). Deux d'entre elles ([7]et[10]d'origine) sont précisément celles que cette PR déplace. Je n'invente pas d'id: en fabriquer changerait plus que le périmètre de la PR et masquerait le défaut. À traiter dans une passe dédiée sur la série.Portée
Avec cette PR, mes deux tranches assignées sur #18053 sont livrées :
GenAI/Audio(8 constats, PR #18073) etGenAI/Image(3 constats).See #18053— l'issue porte 46 constats sur 17 séries et reste ouverte.🤖 Generated with Claude Code