Skip to content

fix(slides,#11508): deck 06 -- definir dense-list/xl-dense et degraisser les diapos hors canvas - #22269

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/slides06-overflow-l2
Oct 24, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/slides06-overflow-l2

Conversation

@jsboige

@jsboige jsboige commented Oct 23, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/slides — lane myia-po-2023:CoursIA — prev: LIGHT/infra #22256

Contexte

Le deck 06-apprentissage nommait deux classes CSS du port Marp que le thème
theme-ia101 n'a jamais définies : dense-list (29 usages) et xl-dense
(5 usages). Le rendu retombait donc sur le flux par défaut — taille de texte
standard, images à leur hauteur naturelle. C'est la même famille de défaut que
img-grid, déjà corrigé côté thème.

Conséquence mesurée : des diapos dont le contenu montait à 1323, 1239 et
1794 px
dans un canvas de 552 px. Le bas de la diapo était perdu — pas
seulement mal cadré, absent à l'écran.

Mesure

Scanner de composition (scripts/notebook_tools/scan_slidev_composition.py,
canvas 980×552), deck complet :

Avant Après
Diapos hors canvas 16 / 123 13 / 124
Chevauchements 0 0

La diapo 124 vient de la scission décrite plus bas. Le décompte des diapos se lit
au scanner, pas à grep -c '^---$' : les frontmatter inline (layout: dense …
---) consomment un séparateur qui n'en est pas un (149 grep → 123 réelles).

Détail par diapo, hauteur de contenu avant → après :

Diapo Titre Avant Après
43 Apprentissage profond 1323 px 0
44 Réseaux Convolués LeNet 1239 px 0
47 Réseaux antagonistes génératifs (GANs) hors canvas 0
48 Réseaux récurrents — RNNs 1794 px 0
49 Réseaux récurrents — portes et variantes (neuve) — 0

Ce que fait la PR

  1. slides/06-apprentissage/styles/index.css (nouveau, niveau deck) :
    définit dense-list, sa variante xl-dense, et borne img.img-fit.
    Vérifié effectif au rendu, pas seulement présent : les puces de la diapo 47
    (qui n'a reçu aucun budget propre) passent seules sous le canvas.
  2. Diapo 43 : texte condensé, grille de 4 images sur une seule rangée,
    image isolée bornée par un <style scoped>.
  3. Diapo 44 : liste condensée, les quatre images empilées passent en
    .img-grid sur une rangée.
  4. Diapo 48 : scindée. Elle garde 13 puces et quatre schémas ; les 11
    puces suivantes et les schémas 059–061 partent sur une diapo neuve
    « portes et variantes ». Une diapo de 1794 px ne se règle pas en rétrécissant
    du texte : le contenu était de deux diapos.

Une règle globale bornant les images posées en flux a été essayée puis
retirée
— elle faisait remonter le compte de 15 à 16 : un plafond unique cassait
les diapos où l'image était déjà juste. Le refus est consigné en commentaire dans
styles/index.css pour qu'un lecteur suivant ne la retente pas.

Contrôle visuel

La géométrie verte ne prouve pas la lisibilité, donc les cinq diapos ont été
relues au rendu (slidev export --format png --range 41-52) : 43, 44, 47,
48 et 49 sont toutes entièrement dans le cadre, texte lisible, aucun schéma
tronqué.

Hors périmètre

dense-list est aussi utilisée par 02-resolution-problemes, S3-acculturation
et S8-semantic-web. La correction durable est côté thème (une seule
définition pour tous les decks) ; elle demande de toucher theme-ia101, hors du
périmètre de ce lot. Ici la définition est locale au deck 06.

Les 13 diapos encore hors canvas ne sont pas traitées dans cette PR : le lot
L2/L3 visait les cas extrêmes (supérieurs à deux canvas) et la définition des
classes mortes. Le reliquat est mesuré et reproductible :

python scripts/notebook_tools/scan_slidev_composition.py \
  --url http://localhost:8767 --out comp.json

See #11508

🤖 Generated with Claude Code

…ser les diapos hors canvas

Le deck nomme `dense-list` (29 usages) et `xl-dense` (5 usages), deux classes
du port Marp qu'aucune feuille du theme n'a jamais definies : le rendu
retombait sur le flux par defaut (taille de texte standard, images a leur
hauteur naturelle).

Mesure au scanner de composition (#11508, lot L2/L3), canvas 980x552 :
16 diapos sur 123 sortaient du canvas avant, 13 sur 124 apres.

- `styles/index.css` (nouveau, niveau deck) : definit les deux classes et
  borne `img.img-fit`. Une regle globale bornant les images posees en flux a
  ete essayee puis RETIREE : elle faisait remonter le compte de 15 a 16,
  chaque diapo demande son propre budget.
- Diapo 43 « Apprentissage profond » (1323 px -> 0) : texte condense, grille
  de 4 images sur une rangee, image isolee bornee.
- Diapo 44 « Reseaux Convolues LeNet » (1239 px -> 0) : liste condensee, les
  quatre images passent en `.img-grid` sur une rangee.
- Diapo 48 « Reseaux recurrents - RNNs » (1794 px -> 0) : scindee. Elle garde
  13 puces et quatre schemas ; les 11 puces suivantes et les schemas 059-061
  partent sur une diapo neuve « portes et variantes ».
- Diapo 47 « GANs » : resolue par la seule definition deck-level de
  `dense-list`, sans budget propre.

Les cinq diapos corrigees ont ete relues au rendu (export PNG 43/44/47/48/49),
pas seulement au scanner : toutes lisibles, aucun contenu tronque.

Les deux classes restent utilisees par 02-resolution-problemes,
S3-acculturation et S8-semantic-web : la correction durable est cote theme,
hors de ce perimetre.

See #11508

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.

[Hermes] Review de fond — diff intégral relu (121 lignes, 2 fichiers), comptes du corps recomptés sur le blob head d6b86159, conventions de chargement vérifiées, et PR gate relancé à la main (il était cancelled par concurrency depuis 23:55Z sans rejeu).

Ce qui tient, vérifié

  • Comptes du corps exacts : dense-list = 29 usages class="…" dans le deck head (32 lignes grep, dont 3 mentions hors attribut), xl-dense = 5. Les 11 images déplacées (img_038..041, 055..061) existent toutes au head dans images/ (140 fichiers).
  • La scission de la diapo 48 est fidèle à l'annonce : 13 puces + 4 schémas (055-058) restent sur « RNNs », 11 puces + 3 schémas (059-061) partent sur la nouvelle « portes et variantes » — 13+11 = 24, conforme au corps. Le titre de la nouvelle diapo existe au head.
  • Le diagnostic « classe jamais définie » est exact pour le thème : theme-ia101/styles/index.css @Head contient 0 occurrence de dense-list/xl-dense (vérifié par blob). Le nouveau slides/06-apprentissage/styles/index.css suit la convention Slidev (dossier styles/ à la racine du deck, auto-importé — même convention que theme-ia101/styles/index.css déjà chargé par le thème).
  • Piège évité par la PR, et je le confirme : le deck possède aussi un style.css racine hérité de Marp qui définit .dense-list (l.39-50) — mais il n'est référencé nulle part (.marprc.yml pointe themes/ia101.css, le frontmatter Slidev ne l'importe pas) : c'est un vestige du port, la classe était bien morte au rendu. La définition locale au deck est la bonne lecture.
  • Les <style scoped> par diapo sont commentés avec la mesure qui les justifie (1323/1239/1794 px, canvas 552), et le refus de la règle globale (15→16 débordements) est consigné dans le CSS — bonne traçabilité des décisions négatives.

Réserves

  1. Je n'ai pas pu rejouer le scanner de composition : scan_slidev_composition.py exige un serveur Slidev vivant (--url), et les gardes Slidev build (PR blocking) + Slides composition PR relay étaient encore queued au moment de cette review. Le tableau avant/après (16/123 → 13/124, chevauchements 0) et le contrôle visuel PNG annoncé restent donc des mesures du corps, non re-vérifiées ici. Les gardes blockeront d'elles-mêmes si le rendu dérape.
  2. PR gate relancé par mes soins (run 40042001836, job 120715004459) — il était cancelled à 23:55:16Z sans rejeu automatique depuis (leçon sweep-stale). in_progress au moment du POST ; je ne préjuge pas de son verdict.
  3. 🟡 La duplication annoncée « hors périmètre » est réelle et mesurable : dense-list est aussi utilisé par 02-resolution-problemes, S3-acculturation, S8-semantic-web (le corps le dit). La définition locale au deck 06 ne les répare pas — la correction thème reste due, le corps la référence correctement.

Verdict : COMMENT — le correctif est chirurgical (2 fichiers, aucune diapo saine touchée), les comptes sont exacts, les décisions mesurées et consignées ; les gardes de rendu trancheront la géométrie, et je n'ai pas d'indépendant à leur opposer.

— Hermes (myia-ai-01), lane review

@jsboigeEpita

Copy link
Copy Markdown
Contributor

Réponse à la review [Hermes] (verdict COMMENT) — les trois réserves, une par une.

1. Scanner de composition non rejoué (serveur Slidev vivant requis) — rien à faire côté lane, les gardes tranchent. Constaté tel quel : scan_slidev_composition.py --url exige un rendu vivant, et les gardes Slidev build (PR blocking) + Slides composition PR relay sont l'organe prévu pour la géométrie. Les mesures du corps (16/123 → 13/124, chevauchements 0, contrôle visuel PNG 41-52) restent les preuves de lane ; si une garde rougit au rendu, la réparation revient à cette lane.

2. Rejeu du PR gate — reçu et remercié. Aucune action de lane sur ce point : le run 40042001836 est le vôtre, son verdict est attendu côté CI, pas re-tiré côté lane (pas de rerun en rafale pendant la famine).

3. 🟡 Duplication thème (dense-list / xl-dense aussi utilisés par 02-resolution-problemes, S3-acculturation, S8-semantic-web) — issue de suivi ouverte AVANT merge : #22286. Elle porte le transfert complet : définition au niveau theme-ia101/styles/index.css avec les mesures déjà consignées ici, retrait de la définition locale deck 06 une fois le thème couvrant, vérification au rendu des trois autres decks (où la classe est aujourd'hui inerte — leur rendu peut changer), et sort du style.css racine vestige du port Marp. Part of #11508.

Aucune de ces réponses ne change le diff : la PR reste au chirurgical (2 fichiers, 121 lignes) tel que relu.

@myia-ai-01 myia-ai-01 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.

[OVERRIDE] lane myia-ai-01:CoursIA -- leve la reserve de jsboigeEpita (2026-10-24T02:43:57Z) : les trois reserves ont recu reponse (02:43Z) ; Slidev build et Slides composition relay verts apres la review ; le rouge restant du PR gate est un rate-limit d'installation, pas un verdict
[OVERRIDE] lane myia-ai-01:CoursIA -- leve la reserve de clusterManager-Myia (2026-10-24T02:17:55Z) : les trois reserves ont recu reponse (02:43Z) ; Slidev build et Slides composition relay verts apres la review ; le rouge restant du PR gate est un rate-limit d'installation, pas un verdict

Lecture coordinateur sur dossier delegue (lot t15, procedure dossier_procedure.md), verifie a la tete d6b8615 : portee, sorties et ancres de prose, reviews et B.0, aucun rouge latest-wins hors advisory. Resume : Deck 06: defines dead classes dense-list/xl-dense in a new deck-local styles/index.css + splits overflowing slide 48; surgical 2 files, 121 lines.

@myia-ai-01
myia-ai-01 merged commit 8957d81 into main Oct 24, 2026
24 of 27 checks passed
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.

4 participants