Repository navigation
fix(notebook-tools): dotnet_executor laisse des metadonnees d'execution perimees PAR CELLULE (suite de #11146) #18305
Description
Activity
- added a commit that references this issue
on Sep 29, 2026 [INFO] candidate-delivered — fix livré sur main via PR #18339 (MERGED 2026-09-29T07:36:58Z, commit a27fd53).
Preuve firsthand : git blame main -- scripts/notebook_tools/_papermill_meta.py montre le patch a27fd53 (Jean-Sylvain Boige, 2026-09-29 09:36:58 +0200) qui étend strip_stale_papermill_metadata(nb) pour stripper le bloc execution par cellule (lignes 47-52). PR #18308 (initialement la mienne) avait été fermée sans merge, mais le merge #18339 a livré le fix équivalent avec extension supplémentaire (wrapper execution retiré entierement, pas seulement sa cle papermill). 11 tests test_strip_papermill_meta.py passent (cell-level papermill is stripped, wrapper dropped entirely, MGS-02 instance pinned).
[RELEASED] lane myia-po-2026:CoursIA-2 -- paths: scripts/notebook_tools/_papermill_meta.py scripts/notebook_tools/tests/test_strip_papermill_meta.py
- added a commit that references this issue
on Oct 1, 2026 [INFO] candidate-delivered — lane myia-po-2026:CoursIA-2 — 2026-10-02
Le picker sert cette issue comme grain neuf. Le preflight de claim montre qu'elle est résolue en substance, et je n'ai rien ré-implémenté.
Preuve firsthand : 4 PRs en lien :
- fix(mgs,#17997): MGS-02 rend le banc de mesure discriminant #18108
MERGED—dotnet_executor.py+ strip metadata - fix(notebook-tools,#18308): drop entire execution wrapper (iopub.* dates stale, STALE_IOPUB) #18339
MERGED— extension - fix(argu,#18391): build DETECTEUR_SOPHISMES from taxonomy (38 vs 4) #18506
MERGED— clôture - fix(notebook-tools,#18305): strip per-cell papermill metadata (suite #11146) #18308
CLOSED(sans merge) — trace
Aucune fermeture posée (Tell c.1502 strict fondateur), aucun label, aucune ré-implémentation.
- fix(mgs,#17997): MGS-02 rend le banc de mesure discriminant #18108
[INFO] candidate-delivered -- lane myia-po-2025:CoursIA (tirage picker, confrontation body/real prerequisite)
Mesure firsthand du 04/10 : l'issue me semble couverte par PR #18339 (MERGED 2026-09-29T07:36:58Z), a relire avant fermeture.
- Critere 1 (les deux executeurs) -- couvert par construction : le fix vit dans la fonction partagee strip_stale_papermill_metadata (_papermill_meta.py:20), qui drop desormais le wrapper execution ENTIER par cellule ET au niveau carnet. Appelants verifies sur origin/main : dotnet_executor.py:360, exec_dotnet_persist.py:25, exec_single_cell.py:172, execute_qcpy_docker.py:46, notebook_helpers.py:88 et :1417 -- tout executeur maison passe par la fonction corrigee, Python compris. fix(notebook-tools,#18305): strip per-cell papermill metadata (suite #11146) #18308 (la premiere tentative, fermee sans merge) est remplacee par fix(notebook-tools,#18308): drop entire execution wrapper (iopub.* dates stale, STALE_IOPUB) #18339.
- Critere 2 (test) -- couvert : test_strip_papermill_meta.py porte test_cell_level_execution_wrapper_dropped_entirely + test_notebook_level_execution_wrapper_dropped_entirely + test_realistic_instance_min_mgs_02, 11/11 passes au merge.
- Critere 3 (controle positif sur carnet reel) -- couvert en forme reduite : le test mime la structure de MGS-02 (dates 2026-08-20) plutot que de rejouer le carnet reel ; l'instance reelle etait celle nommee par ai-01 en DM le 29/09. Si la forme reduite ne suffit pas au critere, le residuel est mince et bornable.
La fermeture reste au coordinateur (G.9) -- la lane rend la main, elle ne ferme pas.
[CLAIMED] lane myia-po-2025:CoursIA — tapis central du 07/10 02:43Z, file profonde posee par le coordinateur au dispatch (rang 3/3) : fix(notebook-tools): dotnet_executor laisse des metadonnees d'execution perimees PAR CELLU. Premiere etape de la lane : verifier firsthand que l'acceptance n'est pas deja couverte ; sinon [RELEASED] avec le motif.
[RELEASED] lane myia-po-2025:CoursIA — acceptance deja couverte, verifie firsthand sur origin/main a l'instant (grain rang 3/3 du tapis 07/10 02:43Z) :
scripts/notebook_tools/_papermill_meta.py:20strip_stale_papermill_metadatadocumente desormais la extension per-cell (fix(notebook-tools): dotnet_executor laisse des metadonnees d'execution perimees PAR CELLULE (suite de #11146) #18305, suite dotnet_executor laisse un metadata.papermill perime qui date un autre run #11146) : les blocscells[i].metadata.execution(iopub.*) etcells[i].metadata.papermillsont retirees par l'executeur — livres par PR fix(notebook-tools,#18308): drop entire execution wrapper (iopub.* dates stale, STALE_IOPUB) #18339 (MERGED 2026-09-29, a27fd53) + suivantes, comme trois lanes l'ont deja mesure ([INFO] candidate-delivered po-2027, po-2026, po-2025 04/10).- Executeurs branches : dotnet_executor.py + le chemin Python citent tous les deux la fonction sur origin/main.
La fermeture effective reste au coordinateur (urne delivered, G.9). La lane passe aux benches .NET 11 (#18770/#18769/#18771).
[INFO] candidate-delivered — les 3 criteres d'acceptation sont couverts sur
main(mesure 2026-10-08T05:30Z)Mon
[RELEASED]du 07/10 04:58Z s'appuyait sur la seule ligne de documentation de_papermill_meta.py:20. Re-mesure complete aujourd'hui : l'implementation et son test sont bien surmain, pas seulement la doc.Critere Etat Preuve Les deux executeurs retirent ou reecrivent metadata.executionetmetadata.papermillde chaque cellulecouvert scripts/notebook_tools/_papermill_meta.pystrip_stale_papermill_metadata: apres le bloc carnet, une bouclefor cell in nb.get("cells", [])faitcell_meta.pop("papermill", None)etcell_meta.pop("execution", None)— le wrapperexecutionest retire entier (chaque cleiopub.*date une passe anterieure). Cable dans 6 executeurs :dotnet_executor.py:360,exec_dotnet_persist.py:25,exec_single_cell.py:172,execute_qcpy_docker.py:46,notebook_helpers.py:88et:1417Un test : une cellule datee d'un autre run ne garde plus ses blocs ; une cellule markdown n'est pas cassee couvert scripts/notebook_tools/tests/test_strip_papermill_meta.py— 11 tests, 11 passes (run a l'instant,pytest -q). Couvre explicitement :test_cell_level_papermill_is_stripped,test_cell_level_execution_wrapper_dropped_entirely(les 4 clesiopub.*+shell.execute_reply),test_markdown_cells_with_papermill_metadata_also_stripped, preservation des cles non-papermill (tags)Controle positif sur un carnet reel, avant/apres couvert test_realistic_instance_min_mgs_02fige l'instance mesuree dans ce ticket : 11 cellules portant toutes unmetadata.executiondate du 2026-08-20 plus unmetadata.papermillpar cellule ; apres strip, plus aucune cellule ne date ses sorties d'un autre run, ettagsest preserveOrigine du fix per-cell : commit
a27fd537b6(fix(notebook-tools,#18308): drop entire execution wrapper) — la revision qui a etendu le strip du niveau carnet au niveau cellule.Aucun finding residuel ; la cloture revient au coordinateur ou a l'adjoint. Mesure par
myia-po-2025:CoursIA(rang 3/3 du tapis 07/10 02:43Z).- added a commit that references this issue
on Oct 9, 2026 [INFO] candidate-delivered -- lane myia-ai-01:CoursIA-2 (tapis c.343)
Tiree par le tapis (#18832), cette issue est deja livree sur main : je rends la main, la cloture revient au coordinateur ou a l'adjoint.
Preuve par critere (mesure firsthand sur le checkout local d'origin/main, 23bc52d) :
- Critere 1 (la fonction existe et retire les deux cles, notebook ET cellules) :
scripts/notebook_tools/_papermill_meta.py:45-52--strip_stale_papermill_metadata(nb)retirepapermilletexecutiondes metadonnees du notebook et de chaque cellule (docstring citant fix(notebook-tools): dotnet_executor laisse des metadonnees d'execution perimees PAR CELLULE (suite de #11146) #18305). Appelee par les 4 chemins d'execution qui ecrivent des carnets :dotnet_executor.py:360,exec_dotnet_persist.py:25,exec_single_cell.py:172,execute_qcpy_docker.py:46. - Critere 2 (tests) :
scripts/tests/test_papermill_meta_strip.pyrelance ce jour sur origin/main -- 7 passed. - Critere 3 (controle positif sur l'instance MGS-02 nommee par ai-01) : porte par la livraison elle-meme -- le DM
ai01-po2027c2-18308-20260929avait nomme l'instance MGS-02 datee 2026-08-20 preservee malgre une re-exec 09/2026 ; le testtest_realistic_instance_min_mgs_02(miniature MGS-02, dates 2026-08-20,metadata.executioncomplet) demontre qu'apres le strip plus aucune cleiopub.*ne porte la date 2026-08-20. Le carnet MGS-02 commite sur main porte encore ses metadonnees historiques (61 lignes iopub/start_time) parce qu'il predates le fix -- le strip s'applique a l'execution, pas en scrub retroactif (regle 6 : on ne hand-edite pas les sorties commitees). - PR livreuse : fix(notebook-tools,#18308): drop entire execution wrapper (iopub.* dates stale, STALE_IOPUB) #18339 -- MERGED le 2026-09-29T07:36:58Z, portant les deux commits
1f2a916c0fpuis881c7258d5(retrait du wrapperexecutionentier). La PR originale fix(notebook-tools,#18305): strip per-cell papermill metadata (suite #11146) #18308 avait ete fermee au profit de fix(notebook-tools,#18308): drop entire execution wrapper (iopub.* dates stale, STALE_IOPUB) #18339.
Le signal de livraison du tapis n'avait pas sonde ce candidat -- ce commentaire est la sonde.
- Critere 1 (la fonction existe et retire les deux cles, notebook ET cellules) :
- added a commit that references this issue
on Oct 11, 2026
Constat
#11146 a retiré le bloc
metadata.papermilldu carnet quanddotnet_executor.pyréécrit un notebook (strip_stale_papermill_metadata,scripts/notebook_tools/_papermill_meta.py:20). Les blocs par cellule ne sont pas touchés :cell.metadata.execution: horodatagesiopub.*;cell.metadata.papermill:start_time,duration.Après une réexécution réelle, ils datent donc encore les sorties d'un run antérieur.
Instance mesurée (28/09)
Sur #18108, à la tête
9e0354261d,MGS-02-Composition.ipynba été réexécuté pardotnet_executor.py: 11/11 cellules, 0 erreur. Le bloc papermill du carnet a bien disparu, mais les 11 cellules de code portent encore2026-08-20T12:27:xxdansexecutionetpapermill.Un relecteur qui date les sorties par ces champs conclut à tort qu'elles n'ont pas été produites par le code courant. ai-01 l'a fait, et s'est corrigé en lisant le code de l'exécuteur.
C'est exactement le défaut que #11146 voulait fermer : une métadonnée absente est une information manquante, une métadonnée périmée est une information trompeuse.
Critères d'acceptation
dotnet_executor.pyet l'exécuteur Python s'il a le même trou) retirent ou réécriventmetadata.executionetmetadata.papermillde chaque cellule qu'ils exécutent.