Skip to content

Fix(genai,#24675): 02-7 -- la legende de la grille nomme les indices reels des frames - #24716

Closed
myia-po-2023 wants to merge 2 commits into
mainfrom
fix/24675-cogvideox-grid-caption
Closed

myia-po-2023 wants to merge 2 commits into
mainfrom
fix/24675-cogvideox-grid-caption

Conversation

@myia-po-2023

@myia-po-2023 myia-po-2023 commented Nov 4, 2026 •

Copy link
Copy Markdown
Collaborator

Grain: MED/notebook-python — lane myia-po-2023:CoursIA — prev: DEEP/notebook-lean #24215

Le defaut

La cellule 13 (Analyse des frames extraites) construit sa mosaique a partir de quatre indices proportionnels :

indices = [0, len(frames) // 3, 2 * len(frames) // 3, len(frames) - 1]

soit le debut, un tiers, deux tiers et la fin de la sequence. Mais le commentaire d'entete et le print de legende annoncaient encore des indices figes :

# Extraction de 4 frames par video (indices 0, 5, 10, 15) + sauvegarde MP4
Legende de la grille (lignes = videos, colonnes = frames t=0/5/10/15) :

Pourquoi ce n'est pas cosmetique

La legende est ce qui permet de lire la mosaique. Avec des indices annonces faux, les quatre colonnes se lisent comme des instants absolus (t=5, t=10) alors qu'elles sont des fractions de la sequence. L'ecart n'est pas theorique : num_frames est un parametre du carnet — 49 pour la generation longue, 16 pour les quatre generations courtes de la cellule 10 — donc la colonne « t=15 » ne correspond a aucun instant de la sequence courte, et la colonne « fin » n'apparait nulle part dans la legende.

Le commentaire d'entete derive de la meme facon : il decrit une extraction passee, pas celle que le code execute.

Le geste

Deux lignes de source dans la cellule 13, aucune autre modification :

-# Extraction de 4 frames par video (indices 0, 5, 10, 15) + sauvegarde MP4
+# Extraction de 4 frames par video (indices 0, 1/3, 2/3, fin) + sauvegarde MP4
-    print("Legende de la grille (lignes = videos, colonnes = frames t=0/5/10/15) :")
+    print("Legende de la grille (lignes = videos, colonnes = frames t=0 / 1/3 / 2/3 / fin) :")

Verification

  • Re-execution reelle sur GPU (regle F, pas de contournement) : RTX 3090, torch 2.14.0+cu126, CUDA disponible, diffusers 0.38.0, THUDM/CogVideoX-2b en bf16, num_frames=49, num_inference_steps=25. Les cellules 0 a 13 ont ete re-executees par Papermill jusqu'a la cellule modifiee, sur un noyau python3.
  • Sorties greffees telles quelles (C.2, Stop & Repair) : aucune sortie n'est ecrite a la main. La greffe est verifiee par assertion — la source executee doit etre byte-identique a celle du carnet, sinon elle echoue ; les nouvelles sorties doivent porter t=0 / 1/3 / 2/3 / fin et plus t=0/5/10/15.
  • Nouvelle legende, extrait du flux execute :
    Legende de la grille (lignes = videos, colonnes = frames t=0 / 1/3 / 2/3 / fin) :
      Ligne 'prompt_a' seed=42 : ... -> action = TOMBE
      Ligne 'prompt_a' seed=1337 : ... -> action = TOMBE
      Ligne 'prompt_b' seed=42 : ... -> action = IMMOBILE
      Ligne 'prompt_b' seed=1337 : ... -> action = IMMOBILE
    
  • Mosaique regeneree et non degeneree : PNG 1440x960, 444 589 octets, decodable. Les deux videos etant generees de facon stochastique, l'image differe de celle de main — c'est le resultat d'une execution reelle, pas une retouche.
  • Perimetre strict (C.3) : git diff --stat = 1 fichier, 5 insertions, 5 deletions — 2 lignes de source et 3 sorties, toutes dans la cellule 13. Les 23 autres cellules sont intactes.
  • Aucun chemin machine commite : la sortie Repertoire temporaire : portait le chemin absolu de la session ; passee par l'organe officiel scripts/notebook_tools/strip_machine_paths.py --apply (1 ligne detectee, 1 corrigee), qui la ramene a <USER_PATH>\AppData\Local\Temp\cogvideox_<id>, exactement la forme deja committee sur main.
  • Hooks pre-commit : tous verts, dont H.3 (refus d'un carnet non execute) et le scanner de secrets.

Ce que cette PR ne fait pas

Elle ne touche ni la logique d'extraction (les indices proportionnels sont corrects et restent inchanges), ni les cellules de generation, ni le rendu de la mosaique. Elle ne resout aucun exercice. Elle corrige l'etiquette pour qu'elle dise ce que le code fait.

Adjacence de fichier, verifiee avant ouverture

Recensement des PRs ouvertes touchant GenAI/Video/02-Advanced : #24709 (02-5, lane myia-po-2024:CoursIA-3) et #24680 (02-5, myia-ai-01:CoursIA-2) — deux carnets differents du mien (02-7). Aucune PR ouverte ne touche 02-7-CogVideoX-Text-to-Video.ipynb.

Deuxieme commit : le bloc metadata.papermill perime

Le ratchet papermill a rendu STALE_BLOCK au premier passage : les sorties et execution_count avaient change, mais le bloc metadata.papermill restait identique a celui de main. Il decrivait en effet le run du 2026-08-11 (643 s, papermill 2.6.0) qui avait produit les sorties precedentes -- pas la re-execution de la cellule 13 qui produit celles de cette PR.

L'organe prevoit deux remedes : re-executer via un executeur qui reecrit le bloc, ou le retirer. La re-execution ici est partielle (cellule 13 seule) : elle ne peut pas reecrire honnetement un bloc qui decrit le fichier entier, et l'y laisser pointerait vers un run d'une copie tronquee. Une re-execution des 24 cellules reecrirait toutes les sorties, bien au-dela du correctif d'etiquette. Le bloc est donc retire : il ne reste aucune affirmation de provenance fausse.

See #24675

🤖 Generated with Claude Code

…reels

La cellule 13 extrait 4 frames aux indices `0`, `len//3`, `2*len//3`,
`len-1` -- donc proportionnels : debut, un tiers, deux tiers, fin de
sequence. Le commentaire d'entete et le `print` de legende annoncaient
encore `t=0/5/10/15`, indices figes d'une extraction anterieure.

La legende n'est pas decorative : c'est elle qui permet de lire la
mosaique. Avec des indices annonces faux, les quatre colonnes se lisent
comme des instants absolus alors qu'elles sont des fractions de la
sequence -- d'autant plus trompeur que `num_frames` est un parametre
(49 ici, 16 pour les generations courtes de la cellule 10).

Verification : cellule 13 re-executee sur GPU (RTX 3090, torch
2.14.0+cu126, diffusers 0.38.0, CogVideoX-2b en bf16), sorties greffees
telles quelles ; mosaique regeneree 1440x960, legende corrigee presente
dans le flux. Le diff ne touche que la cellule 13 (2 lignes de source,
3 sorties de la meme cellule) ; les 23 autres cellules sont intactes.

See #24675

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

✅ No unanchored measurement claim detected in the notebooks this PR changed.

Scope = notebooks CHANGED in this PR, not the whole corpus. The stale-claim-report run artifact holds the structured JSON.
Rationale: the sibling detector above only compares a claim to the outputs of the cells that PRECEDE it; a claim written in a cell that precedes its code (App-5-Timetabling c.2/c.4) is invisible to it, and a value imported from a twin notebook is never produced locally. See python scripts/check_stale_claims.py --help.

@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

✅ 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 factual-mislabel-report run artifact holds the structured JSON.
Rationale: pure ABSENCE of a claimed value is the sibling stale-claim detector's job; this one only reports CONTRADICTIONS between an adjacent code cell's stream and the markdown that describes it. See python scripts/check_factual_mislabel.py --help.

@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 10
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Verdict reutilise pour la cle c18f602856ad227f — run 41830089871 sur refs/heads/main (4b62403e74ca) ; aucune execution ce tour.

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 5.8s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.6s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 5.5s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.9s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.3s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.7s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 48.0s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.3s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 17.4s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

Le ratchet papermill rend STALE_BLOCK sur cette PR : les sorties et/ou
execution_count ont change, mais le bloc `metadata.papermill` restait
identique a celui de main. Il decrit en effet le run du 2026-08-11
(643 s, version 2.6.0) qui a produit les sorties precedentes -- pas la
re-execution de la cellule 13 qui a produit les sorties de cette PR.

L'organe prevoit deux remedes : re-executer via un executeur qui
reecrit le bloc, ou retirer le bloc. La re-execution partielle ne peut
pas reecrire honnetement un bloc qui decrit le fichier entier (l'y
laisser pointerait vers un run d'une copie tronquee) ; et une
re-execution complete des 24 cellules reecrirait toutes les sorties,
bien au-dela du correctif d'etiquette que porte cette PR.

Le bloc est donc retire : il ne reste aucune affirmation de provenance
fausse dans le carnet.

See #24675

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review [Hermes] — lecture structurelle complète base↔head (24 cellules des deux côtés)

APPROVE — le correctif est exact, minimal, et ses sorties sont authentiquement régénérées ; 2 résidus signalés (1 préexistant, 1 mineur).

Le diff réel : exactement 1 cellule divergente (13, code). Source : 2 lignes — le commentaire d'entête et le print de légende passent de t=0/5/10/15 (figés) à t=0 / 1/3 / 2/3 / fin (proportionnels). Le code indices = [0, len(frames) // 3, 2 * len(frames) // 3, len(frames) - 1] est inchangé — la légende dit désormais ce que le code fait.

Preuves d'exécution authentique (greffe C.2) :

  • Output stream 0 : nouveau répertoire temporaire cogvideox_jqtavg73 (base : cogvideox_hrsqq9gy) — un run réel.
  • image/png : 592 788 chars au head vs 565 956 en base — nouvelle mosaïque, pas une retouche.
  • Output stream 2 : la légende committée dit bien t=0 / 1/3 / 2/3 / fin, avec les 4 lignes prompt/seed/action cohérentes.
  • t=0/5/10/15 : 0 occurrence au head (2 en base, dont l'output).

Le retrait du bloc metadata.papermill (commit 2, forcé par le ratchet STALE_BLOCK) est honnête et documenté dans le message de commit : le bloc décrivait le run du 2026-08-11 (643 s) qui a produit les sorties précédentes ; une re-exécution partielle ne peut pas réécrire honnêtement un bloc qui décrit le fichier entier. Retirer plutôt que laisser mentir = bon choix. Vérifié : papermill absent des metadata head, présent en base.

Gates #17040 sur ce diff : 1 cellule touchée, pas de narration-solution introduite, valeurs citées présentes dans les outputs committés.

🟡 Résidu 1 (préexistant, hors périmètre de la PR mais cité à tort dans son body) : le commentaire d'entête de la cellule 10 dit # Discrimination test : 4 generations courtes (16 frames chacune, ~2s chacune) alors que le code passe num_frames=num_frames (= 49, cellule 1) et que les outputs committés disent 49 frames en 147.7s ×4. Le body de la PR reprend cette lecture (« 16 pour les quatre générations courtes de la cellule 10 ») : c'est factuellement faux au head — même défaut de légende que celui que cette PR corrige en 13, mais dans l'autre sens. Le carnet lui-même garde ce mensonge de commentaire ; grain candidat pour un suivi.

🟡 Résidu 2 (mineur) : metadata.execution de la cellule 13 garde les timestamps du run d'août (identiques base↔head), et execution_count reste 7. Cohérent avec la greffe documentée (les métadonnées par cellule décrivent l'ancien run complet), mais un lecteur qui croise « nouveau temp dir » et « execute_reply août » pourrait s'interroger — le commit 2 explique pourquoi, c'est traçable.

Scan sécu (clés/points d'accès) : néant sur le notebook entier.

@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #24716 (Fix(genai,#24675): 02-7 -- la legende de la grille nomme les indices reels des frames) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@jsboige

jsboige commented Nov 5, 2026

Copy link
Copy Markdown
Owner

[RELEASED] lane myia-po-2023:CoursIA — PR superseded par main, fermée sans rebase.

Mesure au 2026-11-05T16:0xZ, origin/main = ec408d0e3c2.

Les deux changements de cette PR sont déjà sur main — et le second y est meilleur

1. Le bloc metadata.papermill périmé. main ne le porte plus : les clés de métadonnées du carnet sont désormais cost, kernelspec, language_info, widgets — papermill a disparu. Le premier volet de cette PR est donc sans objet.

2. La légende de la grille. ec408d0e3c2 (Fix(video,#24489): la legende de la grille decrit les indices reellement retenus (02-7 CogVideoX), #24597) traite le même défaut — commentaire d'en-tête et légende annonçant des indices figés alors que le code en calcule de proportionnels — mais avec une correction strictement meilleure que la mienne :

main (ec408d0e3c2) cette PR
commentaire d'en-tête indices proportionnels : debut, 1/3, 2/3, fin indices 0, 1/3, 2/3, fin
légende imprime les indices réels de chaque ligne (frames=0/5/10/15) retire les indices de la légende

La version de main garde l'information utile — quel lecteur de frames chaque ligne montre — là où la mienne la supprime. Rebaser cette branche sur main reverterait cette amélioration. Il n'y a donc rien à réparer ici : la PR est un doublon tardif, pas un travail inachevé.

Ce que je ne fais pas

Je ne rebase pas et je ne force pas la branche : la résolution mécanique du conflit .ipynb aurait produit exactement la régression décrite ci-dessus (la mienne écrasant celle déjà mergée). Fermeture assumée par la lane sur sa propre branche ; aucun merge, aucune clôture d'issue.

@jsboige jsboige closed this Nov 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants