You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Fix(audio): le bootstrap d'import de v4 diverge dans la serie 04 -- echec mesure quand le cwd n'est pas 04-Applications #23179
Le bootstrap d'import de v4/narration.py est recopie dans deux carnets de la serie, et il ne resout que si le repertoire courant est 04-Applications (ou un descendant qui contient v4/).
Reproducteur, depuis MyIA.AI.Notebooks/GenAI/Audio/ :
importsysfrompathlibimportPath_here=Path.cwd()
for_parentin [_here, *_here.parents]:
if (_parent/"v4"/"narration.py").exists():
sys.path.insert(0, str(_parent)); breakfromv4.narrationimportparse_narration_script
Rend ModuleNotFoundError: No module named 'v4'. Depuis 04-Applications/, le meme code passe.
Cellules concernees, mesurees sur la tete f506b2192 :
Carnet
Cellule
Bootstrap
04-1-Educational-Audio-Content.ipynb
14
remontee depuis Path.cwd()
04-6-Audiobook-Pipeline.ipynb
12
remontee depuis Path.cwd(), identique
04-13 resout autrement (GENAI_ROOT / 'Audio' / '04-Applications' / 'v4'), d'ou la divergence relevee par Hermes le 2026-10-27T12:21Z sur #22905.
La correction doit tomber sur les deux cellules en un seul commit : corriger une seule reintroduit exactement la divergence que #22905 existe pour supprimer. Or chacune exige une re-execution complete du carnet (04-1 : 6 appels TTS + 5 appels LLM ; 04-6 : 4 TTS + 3 LLM), donc deux passes payantes dont le diff de sorties noierait la reponse a la revue. Le defaut est par ailleurs legible : il echoue sur un ModuleNotFoundError explicite, pas sur une sortie fausse.
Forme de la correction attendue
Un seul helper, appele par les deux cellules (et par 04-13, pour supprimer la troisieme variante), avec des candidats ordonnes :
remontee depuis Path.cwd() -- cas papermill --cwd 04-Applications et noyau Jupyter lance dans le dossier du carnet ;
ancre GenAI : remonter jusqu'a un ancetre nomme GenAI, puis Audio/04-Applications -- couvre un cwd en Audio/ ou GenAI/ ;
descente : <cwd>/GenAI/Audio/04-Applications -- couvre un cwd a la racine du depot.
Si aucun candidat n'aboutit, echouer en nommant le chemin attendu plutot que de laisser un ModuleNotFoundError nu.
Acceptance
une re-execution de chaque carnet depuis MyIA.AI.Notebooks/GenAI/Audio/ reussit (le reproducteur ci-dessus passe) ;
les deux cellules appellent le meme helper, aucune copie du bootstrap ne subsiste ;
sorties commitees, 0 erreur, execution_count non nul (C.2/H.3).
Grain: MED/notebook-python — lane myia-po-2028:CoursIA — prev: MED/guard #23197
[INFO] Prémisse fausse sur main — le grain est bloqué, pas libre.
L'issue suppose que v4/narration.py existe et que les carnets doivent l'importer. Mesuré le
2026-10-29 contre origin/main (2f1291f01) :
git ls-tree -r --name-only origin/main -- MyIA.AI.Notebooks/GenAI/Audio/04-Applications/v4/
→ le module narration.pyn'y est pas (ni narration.py ni aucun équivalent) ;
git grep -n "def parse_narration_script" origin/main → la fonction est définie en ligne
dans 04-1-Educational-Audio-Content.ipynb:911 et 04-6-Audiobook-Pipeline.ipynb:738, donc
deux fois, sans import commun ;
git grep -c "from v4" origin/main → seulement 04-12 (2) et 04-13 (6) ; aucun dans 04-1, ni 04-6, ni 04-13 pour cette fonction.
Le module n'existe que dans la PR #22905 (ouverte, MERGEABLE, tête c87955a7e), qui attend
une levée ai-01. Prendre ce grain maintenant produirait une seconde implémentation concurrente de
la même fonction, sur les mêmes deux carnets, et une collision directe avec #22905.
Déclencheur de reprise : le merge de #22905. À ce moment-là seulement, les deux définitions
en ligne deviennent supprimables au profit de l'import — et ce sera un grain de suivi réel.
Je rends la main : rien n'est édité par cette lane sur ce sujet.
Livraison partielle, en PR empilee sur feature/22901-narration-organ (PR #22905) : les deux cellules visees n'existent que sur cette branche, main ne chargeant pas v4 du tout. La PR se retargettera sur main quand #22905 sera mergee.
point unique de resolution du paquet v4 : shared/helpers/audio_v4.py, trois candidats ordonnes, erreur qui nomme les chemins essayes ;
6 tests, dont le cas mesure (depart dans GenAI/Audio) et la descente depuis la racine du depot ;
04-1 cellule 14 et 04-6 cellule 12 branchees sur le helper, plus aucune copie du bootstrap ;
cellule neutre en sortie : meme sys.path, meme parse, meme audio, sorties byte-identiques a la base.
Non couvert, avec motif mesure :
re-execution complete des deux carnets : l'endpoint LLM de la serie (http://192.168.0.47:5002/v1) ne repond pas depuis cette machine (curl -m 20 sur /v1/models : http=000, 20,0 s), et la premiere cellule qui l'appelle leve APITimeoutError. Une execution forcee remplacerait des sorties reelles par des cellules vides, ce que C.2 interdit de commiter. Sorties de la base restaurees et conservees ; re-execution inscrite au registre des verifications en attente de la lane.
04-13-Audiobook-FishAudio-S2Pro.ipynb : troisieme variante du bootstrap, fonctionnelle mais divergente. La brancher demande une re-execution complete du pipeline FishAudio, meme blocage d'endpoint. Reste dans le perimetre de cette issue, pas traitee ici.
Activity
jsboige commentedon Oct 29, 2026
Grain: MED/notebook-python — lane myia-po-2028:CoursIA — prev: MED/guard #23197
[INFO] Prémisse fausse sur
main— le grain est bloqué, pas libre.L'issue suppose que
v4/narration.pyexiste et que les carnets doivent l'importer. Mesuré le2026-10-29 contre
origin/main(2f1291f01) :git ls-tree -r --name-only origin/main -- MyIA.AI.Notebooks/GenAI/Audio/04-Applications/v4/→ le module
narration.pyn'y est pas (ninarration.pyni aucun équivalent) ;git grep -n "def parse_narration_script" origin/main→ la fonction est définie en lignedans
04-1-Educational-Audio-Content.ipynb:911et04-6-Audiobook-Pipeline.ipynb:738, doncdeux fois, sans import commun ;
git grep -c "from v4" origin/main→ seulement04-12(2) et04-13(6) ; aucun dans04-1, ni04-6, ni04-13pour cette fonction.Le module n'existe que dans la PR #22905 (ouverte,
MERGEABLE, têtec87955a7e), qui attendune levée ai-01. Prendre ce grain maintenant produirait une seconde implémentation concurrente de
la même fonction, sur les mêmes deux carnets, et une collision directe avec #22905.
Déclencheur de reprise : le merge de #22905. À ce moment-là seulement, les deux définitions
en ligne deviennent supprimables au profit de l'import — et ce sera un grain de suivi réel.
Je rends la main : rien n'est édité par cette lane sur ce sujet.
jsboige commentedon Oct 29, 2026
[DELIVERED] lane myia-po-2028:CoursIA -- PR #23411 -- paths: MyIA.AI.Notebooks/GenAI/shared/helpers/audio_v4.py, MyIA.AI.Notebooks/GenAI/shared/helpers/test_audio_v4.py, MyIA.AI.Notebooks/GenAI/shared/helpers/README.md, MyIA.AI.Notebooks/GenAI/Audio/04-Applications/04-1-Educational-Audio-Content.ipynb, MyIA.AI.Notebooks/GenAI/Audio/04-Applications/04-6-Audiobook-Pipeline.ipynb
Livraison partielle, en PR empilee sur
feature/22901-narration-organ(PR #22905) : les deux cellules visees n'existent que sur cette branche,mainne chargeant pasv4du tout. La PR se retargettera surmainquand #22905 sera mergee.Couvert par #23411 :
v4:shared/helpers/audio_v4.py, trois candidats ordonnes, erreur qui nomme les chemins essayes ;GenAI/Audio) et la descente depuis la racine du depot ;04-1cellule 14 et04-6cellule 12 branchees sur le helper, plus aucune copie du bootstrap ;sys.path, meme parse, meme audio, sorties byte-identiques a la base.Non couvert, avec motif mesure :
http://192.168.0.47:5002/v1) ne repond pas depuis cette machine (curl -m 20 sur/v1/models: http=000, 20,0 s), et la premiere cellule qui l'appelle leveAPITimeoutError. Une execution forcee remplacerait des sorties reelles par des cellules vides, ce que C.2 interdit de commiter. Sorties de la base restaurees et conservees ; re-execution inscrite au registre des verifications en attente de la lane.04-13-Audiobook-FishAudio-S2Pro.ipynb: troisieme variante du bootstrap, fonctionnelle mais divergente. La brancher demande une re-execution complete du pipeline FishAudio, meme blocage d'endpoint. Reste dans le perimetre de cette issue, pas traitee ici.