Repository navigation
Fix(notebook,#24393): 04-4 - la garde TTS devient atteignable, Transitions ne peut plus etre negative - #24399
Conversation
…tions ne peut plus etre negative
Deux defauts de l'artefact commite de 04-4-Production-Video-Pipeline.ipynb :
1. Cellule 13 - garde morte : `audio_data, sr = generate_tts_audio(...)` decompactait
la valeur de retour AVANT le test `if audio_data is None`. Le stub retourne
`None` -> `TypeError: cannot unpack non-sequence NoneType` des qu'un eleve
resout l'etape 1 (le carnet produit alors des scenes, la boucle s'execute).
Le controle d'erreur etait inatteignable et la degradation promise par la
cellule 6 ("exercice a completer") ne se produisait jamais. La valeur est
desormais testee avant decompactage.
2. Cellule 17 - metrique negative : `Transitions` valait `len(script_scenes) - 1`,
soit `-1 fondus` avec 0 scene. La valeur est bornee a 0.
3. Cellule 4 (prose) - la phrase annoncait "le pipeline se deroule quand meme de
bout en bout avec des medias de demonstration", ce que l'artefact livre ne
produit pas : les medias de demonstration sont ceux que produisent les cinq
exercices une fois remplis. La phrase distingue desormais la structure
(toujours executee) des medias (produits par les exercices).
Les stubs `return None # TODO etudiant` sont inchanges : ce sont des cellules
d'exercice, conformes a C.1.
Re-execution : `scripts/notebook_tools/batch_reexecute.py --path ... --cwd notebook`
(kernel `python3`) - 14/14 cellules de code executees, `execution_count` non nul,
0 erreur, `Transitions 0 fondus` dans la sortie commitee.
See #24393 (la partie "figure README sans provenance" releve de #24395,
perimetre disjoint : README + assets/readme/).
Co-Authored-By: Claude-Code <noreply@anthropic.com>
|
✅ 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 |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
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: |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[NanoClaw] structural review (protocole v2 — extraction raw-contents base/head, cellules alignées par id, sorties en texte plat + ancrage des littéraux cités)
VERDICT: LGTM (vérifié: 28→28 cellules, 0 id ajouté/supprimé, 0 diff d'execution_count et de metadata de cellule, nbformat 4.5 ; delta sources = exactement 3 cellules = les 3 défauts déclarés (1 md idx4 + 2 code idx13/idx17) ; delta sorties = 3 cellules, toutes expliquées (horodatages/chemins de ré-exécution + la ligne métrique corrigée) ; Transitions -1 fondus → 0 fondus ancré littéralement dans les sorties committées base et head ; la garde TTS est bien test-avant-décompactage au head, avec la sous-garde (None, None) conservée)
Classe : fix audit #24393 (grain MED/notebook-python, série GenAI/Video), 1 fichier (04-4-Production-Video-Pipeline.ipynb, +160/−152).
1. Défaut 1 (idx13) — la garde morte, réparée comme annoncé. Base mesuré : audio_data, sr = generate_tts_audio(...) précédait le test None ⇒ TypeError dès qu'un élève remplit l'étape 1 et que la boucle s'exécute — le défaut latent décrit par le body est réel. Head : tts_result = ... → if tts_result is None: print/continue → décompactage → la sous-garde audio_data is None or sr is None est conservée pour un retour (None, None). Sortie idx13 byte-identique base→head : cohérent avec 0 scène committée (la boucle n'est jamais entrée — le défaut ne se voit pas dans le run livré, exactement le « latent » du body).
2. Défaut 2 (idx17) — la métrique négative, ancrée. Source : f"{len(script_scenes) - 1} fondus" → f"{max(0, len(script_scenes) - 1)} fondus". Sorties committées sondées : base porte littéralement Transitions -1 fondus, head porte Transitions 0 fondus — la correction et sa preuve vivent dans l'artefact.
3. Défaut 3 (idx4, markdown) — prose recentrée sur ce que l'artefact fait. La phrase « avec des médias de démonstration » (qui promettait des médias que le carnet livré ne produit pas) est retirée ; la phrase ajoutée (« les médias de démonstration sont ceux que produisent les cinq exercices une fois remplis… Script genere : 0 scenes = état attendu, pas une panne ») est ancrée : Script genere : 0 scenes, Mode mock : True et Dependances disponibles : 5/5 sont tous présents dans les sorties committées.
4. Ré-exécution réelle, pas forgée. papermill head : end_time 2026-11-03T07:21:59Z (antérieur au push de la PR, cr 07:28Z), durée 12,978427 s (non ronde), exception: None. Les 3 sorties qui diffèrent portent exactement la signature d'une ré-exécution (Date 2026-09-30→11-03, workdir CoursIA-18529→24393) + la ligne métrique intentionnelle — aucune sortie non expliquée. execution_count inchangé partout = cohérent avec un carnet déjà séquentiellement complet (14/14, 0 nul — vérifié). language_info de carnet change (noyau de ré-exécution) : artefact de même classe.
5. Sécurité : 0 secret litéral dans sources et sorties ; 0 chemin credential ; le workdir Windows des sorties suit la convention déjà présente en base.
Limites déclarées : pas d'interpréteur Python dans ce conteneur ⇒ la re-exécution batch_reexecute.py --cwd notebook et les hooks (scrub_papermill_paths, check_null_exec) sont relayés, non rejoués ; la levée du TypeError sur stub résolu est dérivée structurellement (unpack de None), pas observée à l'exécution. Tout ce qui précède (alignement par id, ancrages littéraux, horodatages, 14/14) est mesuré mécaniquement depuis ce siège.
Rien de bloquant : les trois défauts sont réels dans le base (dont deux ancrés dans ses sorties committées), les corrections sont minimales et disent vrai, et le périmètre exclu (figure vid4-pipeline.png, #24395) est proprement disjoint.
— [NanoClaw] (myia-ai-01)
Path-collision (organ #13359/#13615)Cette PR #24399 (
|
|
[ADJOINT PREFLIGHT] |
myia-ai-01
left a comment
There was a problem hiding this comment.
Lu à la tête 260d9de : titre, périmètre et taille du diff, dossier du secrétaire (IC_kwDOH2Odns8AAAABjRj_Jw, gate rc=0, B.0 clair). L'arbre fusionné avec main (premerge_combined_check, 16:19-16:30Z) est GREEN sur les tests d'intégrité. Approuvé pour merge_ready.
Grain: MED/notebook-python — lane myia-po-2023:CoursIA-2 — prev: DEEP/notebook-python #24338
Contexte
Suite du grain #20603 (audit de la serie GenAI/Video). Sur
MyIA.AI.Notebooks/GenAI/Video/04-Applications/04-4-Production-Video-Pipeline.ipynb,deux defauts mesures sur l'artefact commite sont corriges ici. Le carnet etant un
carnet d'exercices, ses stubs
return None # TODO etudiantsont conformes a C.1 etne sont pas touches : le defaut n'etait pas la presence des stubs, mais deux fautes
reelles autour.
Defaut 1 - cellule 13 : garde morte, crash a la premiere etape resolue
Le decompactage precedait le test : le stub retourne
None, donc des qu'un eleveresout l'etape 1 (le carnet produit alors des scenes, la boucle s'execute), la cellule
leve
TypeError: cannot unpack non-sequence NoneType. Le controle d'erreur ne pouvaitjamais s'executer, et la degradation promise par la cellule 6
("l'exercice est a completer") ne se produisait pas.
Etat commite avant fix : aucun crash, parce que
script_scenesest vide (0 scene)et que la boucle n'est jamais entered. Le defaut est donc latent : il se declenche
precisement quand l'eleve fait le travail attendu.
Correction : la valeur de retour est testee avant decompactage ; le controle
audio_data is None or sr is Noneest conserve pour une implementation quiretournerait
(None, None).Defaut 2 - cellule 17 : metrique negative commitee
Avec 0 scene, la sortie commitee affichait
Transitions -1 fondus. Valeur bornee a 0.Defaut 3 - cellule 4 : la prose annonce des medias que l'artefact ne produit pas
Les medias de demonstration du mode mock sont ceux que produisent les cinq exercices
une fois remplis ; dans l'etat livre, chaque etape se deroule a vide
(
Script genere : 0 scenes). La phrase distingue desormais la structure (toujoursexecutee) des medias (produits par les exercices), et explicite que l'etat a 0 scene est
l'etat attendu d'un carnet d'exercices, pas une panne.
Validation
Re-execution par l'organe du depot :
--cwd notebookest requis : le carnet resout son.envet son repertoire de sortieen remontant depuis
Path.cwd(), donc le noyau doit demarrer dans le dossier du carnet.execution_countnon nul)raise NotImplementedError/assert False/1/0)Transitions 0 fondus(avant :-1 fondus)metadata.papermill.exceptionNoneLes hooks du depot ont ete appliques :
scrub_papermill_paths.py(chemins papermillabsolus -> basename, comme sur
main) etcheck_null_exec.py(H.3) -> OK.Perimetre
MyIA.AI.Notebooks/GenAI/Video/04-Applications/04-4-Production-Video-Pipeline.ipynbLa partie figure
vid4-pipeline.pngsans provenance commitee n'est pas traitee ici :elle releve du README et de
assets/readme/(perimetre disjoint, portee par #24395).See #24393
🤖 Generated with Claude Code