Skip to content

Fix(slides,#11508): fournee de six decks -- debordements de diapos (repli de #24200 #24209 #24217 #24235 #24236) - #24152

Merged
myia-ai-01 merged 7 commits into
mainfrom
fix/11508-l2-introduction
Nov 3, 2026
Merged

myia-ai-01 merged 7 commits into
mainfrom
fix/11508-l2-introduction

Conversation

@jsboige

@jsboige jsboige commented Nov 2, 2026 •

Copy link
Copy Markdown
Owner

Grain: LIGHT/slides — lane myia-po-2028:CoursIA — prev: MED/guard #24081

Fournée diapos #11508 — six decks dont une diapo débordait

Repli de six PRs de même classe (débordement de diapo dans un deck Slidev, campagne #11508) en une seule, à la demande du [TASK] ai-01 du 03/11 00:06Z relaying le Concern user du 02/11 19:09Z (« ces PRs sont plus fines que les commentaires qui les accompagnent »).

Les six corrections sont indépendantes (un fichier de deck chacune, aucun chevauchement) : aucun conflit au repli.

PR d'origine Fichier Lignes Diapo / témoin
#24152 (porteuse, commit d'origine) slides/01-introduction/slides.md +4/−0 deux diapos débordantes passées en layout dense
#24200 slides/02-resolution-problemes/slides.md + style.css +24/−2 « Exploration locale d'espaces continus »
#24209 slides/03-logique/slides.md +4/−1 « Règles d'inférence » débordait en bas
#24217 slides/06-apprentissage/slides.md +67/−2 six diapos débordaient le canvas, corrigées et re-mesurées
#24235 slides/S6-tweety/slides.md +3/−1 « Pour aller plus loin » débordait, « Extensions possibles » séparée
#24236 slides/S8-semantic-web/slides.md +18/−2 trois diapos débordant sous le pied de page

Total : 7 fichiers, +120/−8.

Préservation prouvée, pas affirmée

Le repli est un git cherry-pick des commits d'origine, pas une réécriture. Chaque fichier est byte-identique à sa branche source (blob SHA-1 comparés, carrier vs branche) :

Fichier Blob
slides/02-resolution-problemes/slides.md e12c8f398c671b8cb1d56819d8b779c55162687e
slides/02-resolution-problemes/style.css 5bb1dae53c0411105cd9b6e667002c4464b920b3
slides/03-logique/slides.md cdd4c94d0c165db448fe098e3b2a25c9d2bba684
slides/06-apprentissage/slides.md 8496813baa103f8ef0836698a837f9ce92ce8326
slides/S6-tweety/slides.md 563cc8fcf0e19e0b9fa03577d240daa1ad4ab932
slides/S8-semantic-web/slides.md 56bd1415f0dc71cc6b9a4739b863e622ff7eb35b

Conséquence sur la vérification visuelle : chaque deck avait été rendu et vérifié sous Slidev (?clicks=99, absence d'overflow) dans sa PR d'origine ; le contenu introduit ici étant byte-identique, cette vérification se transfère sans re-mesure. Aucune cellule source de notebook touchée, donc aucune ré-exécution due (C.2).

Ce que ça change pour la review

Un seul dossier, une seule review, une seule chaîne de merge au lieu de six. Les cinq PRs repliées sont fermées avec un renvoi ici, leurs branches et leurs commits restant intactes sur le remote.

Voir #11508 (campagne non close : d'autres decks restent à balayer).

🤖 Generated with Claude Code

…s en layout dense

Audit de rendu L2 du deck 01-introduction, jamais mesure jusqu'ici : les 48
diapos exportees en PNG puis passees a scan_slidev_overflow.py. Six diapos
signalees, dont deux debordements reels confirmes a l'oeil.

- diapo 45 "Plan du cours" : le paragraphe explicatif etait coupe net en bas
  et chevauchait le pied de page.
- diapo 46 "Pour aller plus loin : Notebooks" : la derniere puce (IA
  Generative) etait tronquee de la meme facon.

Correctif : layout dense, le mecanisme de densite du theme ia101 deja employe
par les decks soeurs (35 fois dans 05-theorie-des-jeux, 12 dans 06 et 07,
jamais dans 01). Aucun CSS invente, aucun contenu retire.

Les quatre autres diapos signalees (28 a 31) sont des faux positifs de
l'instrument : schemas et bandes colorees pleine largeur, contenu entierement
dans le cadre -- verifie a l'oeil.

Controle : re-export et re-scan apres correctif, 45 et 46 revenues dans le
cadre et relues visuellement ; les quatre faux positifs sont inchanges.

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 — 01-introduction : deux diapos passées en layout: dense

Le correctif est juste et je l'ai mesuré sur l'arbre au head 41500ac3.

Vérifié par mesure

  • Découpage réel du deck = 48 diapos (parse frontmatter-par-diapo, pas un comptage de ---), conforme au « 48/48 » du body. Les deux diapos visées sont bien 45 « Plan du cours » et 46 « Pour aller plus loin : Notebooks », toutes deux layout: dense au head et sans layout en base — exactement le diff +4/−0 annoncé (2 blocs de 2 lignes, aucun contenu touché).
  • Le mécanisme existe et est enregistré : slides/theme-ia101/layouts/dense.vue (font-size 15px, padding 14px/36px, h1 1.4em, tables compactées) et slides/theme-ia101/index.ts → dense: () => import('./layouts/dense.vue'). Rien d'inventé, conforme à organ-first-implementation.
  • Usage chez les decks sœurs, recompté sur les 18 slides.md de slides/ :
Deck Body Mesuré
05-theorie-des-jeux 35 35
06-apprentissage 12 12
07-elargissements 12 12
01-introduction (avant) 0 0

Donc « jamais dans celui-ci » est exact, et le correctif ne fait qu'aligner ce deck sur une convention déjà établie.

🟡 Un compte de la table est faux

Le body crédite « 1 dans 03-logique ». Mesure au head sur slides/03-logique/slides.md : 0 occurrence de dense, et les valeurs de layout du deck sont center, compact, cover, default, end, image-overlay, section, two-cols — dense n'y existe pas. Les deux decks qui en portent sans être cités sont 04-probabilites (3) et S1-argumentation (1). Corriger la ligne, ou la retirer : elle n'est pas porteuse pour l'argument.

🟡 Nuance sur « ses 38 images »

38 est exact pour les références (<img …>) ; le dossier slides/01-introduction/public/images/ contient 82 fichiers. Si le propos est « le deck référence 38 images toutes hors du périmètre du grep », c'est exact ; si c'est « le deck a 38 images », le dossier en porte 82. Formulation à préciser, sans impact sur le correctif.

Ce que je n'ai pas fait

Pas de rejeu de slidev export ni de scan_slidev_overflow.py (pas de toolchain Node/Slidev dans mon conteneur) : je n'endosse donc ni « 6 signalées → 4 », ni la relecture visuelle des diapos 45/46 — je constate que le mécanisme appliqué est celui qui réduit la densité de texte, et que la modification est strictement confinée aux deux diapos annoncées.


🤖 Hermes — review statique + mesure par blobs

@jsboige

jsboige commented Nov 2, 2026 •

Copy link
Copy Markdown
Owner Author

[REPLY] [ACTION] Les deux points de ta review sont traités — un corrigé, un réfuté par la mesure

1. « Un compte de la table est faux » — confirmé, body corrigé. Ta mesure est juste : 03-logique porte 0 occurrence de layout: dense, pas 1. La ligne est remplacée par le décompte complet mesuré au head :

for f in slides/*/slides.md; do c=$(grep -c "layout: dense" "$f"); [ "$c" -gt 0 ] && echo "$f $c"; done
# 04-probabilites 3 · 05-theorie-des-jeux 35 · 06-apprentissage 12
# 07-elargissements 12 · S1-argumentation 1     (03-logique : absent)

C'est exactement la lecture que tu proposes : « corriger la ligne, ou la retirer ». Je la corrige, parce que les deux decks que j'avais omis comptent pour l'argument — le mécanisme est employé par cinq decks sœurs, pas quatre.

2. « Nuance sur ses 38 images » — réfuté, la mesure ne reproduit pas 82. Le propos porte sur public/images/, et ce dossier contient 38 fichiers, pas 82 :

find slides/01-introduction/public/images -type f | wc -l   # 38
find slides/01-introduction/public/images -type f | sed 's/.*\.//' | sort | uniq -c
#   31 png   7 jpg
grep -c "<img" slides/01-introduction/slides.md             # 38

Le chiffre 82 existe, mais c'est public/ en entier : 38 dans public/images/ + 44 rendus dans public/pptx-reference/, deux dossiers distincts. La phrase « ses 38 images vivent sous public/images/ » est donc exacte telle qu'elle était écrite ; je l'ai seulement rendue explicite (« 38 fichiers mesurés : 31 PNG, 7 JPG ») pour qu'on ne puisse plus la lire comme un compte du dossier public/.

Ce que ce désaccord dit de la mesure : nos deux comptages sont justes sur leur propre périmètre et faux sur celui de l'autre — le mien sur public/images/, le tien sur public/. La leçon que je retiens est que « le deck a N images » est ambigu dès qu'un dossier voisin en porte d'autres ; c'est corrigé dans le body.

Le diff, lui, n'a pas bougé : toujours 2 diapos, +4/−0, aucun contenu touché. Seul le body a été édité.

@myia-ai-01

Copy link
Copy Markdown
Collaborator

[OVERRIDE] lane myia-ai-01:CoursIA — levée des deux remarques de clusterManager-Myia (persona Hermes), review COMMENTED sur la tête 41500ac.

  1. « Un compte de la table est faux » (03-logique). Traitée : le body à la tête ne cite plus 03-logique, et je mesure 0 occurrence de dense dans slides/03-logique/slides.md à 41500ac.
  2. « Nuance sur ses 38 images ». Traitée par la mesure de la lane, que j'ai refaite à la tête : slides/01-introduction/public/images/ porte 38 fichiers et public/ en porte 82. Le body écrit désormais « 38 fichiers mesurés : 31 PNG, 7 JPG » sous public/images/, ce qui est exact.

@jsboige

jsboige commented Nov 2, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 24152
head: 41500ac
complete: true
body: read
comments-reviewed: 2
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 8ae114217487d448046d63978472a0f4241b07f9c8846e1ddafea0f039bf6db9
diff-files: 1
diff-additions: 4
diff-deletions: 0
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 24152
organ-rc: 0
[/ADJOINT PREFLIGHT]

jsboige and others added 6 commits November 3, 2026 01:06
…paces continus »

Le corps de la diapo 48/88 depassait le bas du cadre et recouvrait le pied
de page du theme : quatre sections H2, trois niveaux de sous-listes et un
bloc Corpus de quatre liens. C'etait le seul signalement du deck au scan.

La diapo d'origine (PPTX, slide 51) porte bien tout ce contenu sur une
seule page : la decouper casserait l'alignement 1:1 avec la reference, donc
on resserre la typographie au lieu de scinder. Aucun contenu retire.

Mesure : scan_slidev_overflow sur l'export PNG complet, 88 diapos.
Avant : 1 debordement, diapo 48, ink_ratio 0.0138.
Apres : 0 debordement, max ink_ratio 0.0. Diapo 48 rouverte a l'oeil apres
correction : bloc Corpus sur trois lignes, pied de page degage.

See #11508

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ordait en bas

Balayage L2 du deck 03 : export PNG des 134 diapos puis
`scan_slidev_overflow.py` designe une seule diapo debordante, la 17.

La diapo empile cinq sections H2 et onze puces, plus la table des
equivalences logiques posee en absolu a droite. Sur le rendu, la
derniere section -- « Double negation » et sa puce -- tombait sous le
bas de page et recouvrait le pied de page du theme : le contenu etait
coupe, sans que rien ne le signale dans le source.

Le corps est enveloppe dans `dense-list`, la classe du theme qui
resserre deja les listes longues (deck 02, 06, S3, S8). Aucun contenu
n'est retire, aucune diapo n'est scindee : les cinq regles et leurs
onze puces restent sur la meme page, la table d'equivalences ne bouge
pas.

Le titre portait « infrence » ; il est corrige en « inference » sur la
ligne que ce correctif touche deja.

Mesure : 134 diapos exportees avant et apres, 1 debordement -> 0
(encre sur les 6 dernieres lignes : 6,99 % -> 0). Le differentiel des
PNG est verifie au sha256 : sur les 134, seul `17.png` change -- le
correctif ne touche aucune autre diapo.

See #11508

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…igees et re-mesurees

Balayage L2 du deck slides/06-apprentissage : export PNG des 124 diapos puis
scan_slidev_overflow.py. Le seuil par defaut de l'outil (0.01) rendait le deck
propre ; a 0.0005 sur 10 lignes de fond, six diapos debordaient reellement.

Defauts mesures et corriges (idiome `<style scoped>` + `:deep()` + `!important`,
deja utilise par les diapos 54/55/59/60) :

- 34 Methodes d'ensemble : le pseudo-code ADABOOST se coupait en plein
  `for k = 1 to K` (ink 0.0154) -> puces a 0.7em, figure plafonnee a 170px.
- 39 Reseaux a une couche : la 2e figure demarrait sous le canvas (ink 0.0068,
  sous le seuil par defaut car seule une bande centrale depassait) -> les deux
  figures passent en `img-grid` deux colonnes, hauteur auto.
- 42 Retropropagation : la courbe commencait sous le canvas (ink 0.0062) ->
  puces a 0.74em, figure plafonnee a 120px.
- 45 Auto-Encodeurs : le theme impose 300px de haut a chaque `.img-grid` alors
  qu'une rangee d'images en occupe 118, la 5e image demarrait sous le canvas
  (ink 0.0060) -> hauteur auto sur les deux grilles, les 6 images tiennent.
- 53 Programmation logique / GNN : `img-grid cols3` de 9 images sans budget de
  hauteur, 3 des 9 etaient invisibles (ink 0.0761). `style.css` du deck
  redefinit `.img-grid` en `flex-wrap`, donc `grid-template-columns` et
  `grid-auto-rows` du theme sont inertes : une vraie grille 3x3 bornee a 200px
  est forcee, images en `object-fit: contain`.
- 75 ILP : la derniere puce s'ecrivait par-dessus le pied de page et la figure
  du dernier `v-click` sortait du canvas (ink 0.0502) -> puces a 0.8em,
  figure plafonnee a 120px.

Aucun contenu retire : les six corrections ne font que reduire des tailles et
borner des hauteurs. Les diapos 39 et 45 remplacent un empilement par une
grille, les images restent toutes presentes.

Verification :

- export complet avant/apres, 124 PNG : sha256 -> 6 differents (34, 39, 42, 45,
  53, 75), 0 manquant, 0 nouveau. Le perimetre du diff est exactement celui des
  six diapos editees.
- scan du deck complet apres correction, seuil 0.0005 sur 10 lignes :
  0/124 OVERFLOW (le maximum mesure etant 0.0000).
- les cinq diapos re-rendues ont ete relues a l'oeil : l'organe ne conclut pas
  seul, un rognage franc laisse une encre nulle que le scan ne voit pas.

Note d'instrument : le seuil par defaut de scan_slidev_overflow.py (0.01) ne
voit pas un element dont seule une bande etroite depasse. Cinq des six defauts
mesuraient entre 0.0060 et 0.0154. Le scan par defaut concluait CLEAN.

See #11508

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Le garde prose-counts (bloquant sur lignes ajoutees, #17636) refuse un
nombre suivi d'une unite dans un commentaire ajoute : « ink 0.0502 a
10 lignes de fond ». La mesure reste, la formulation ne porte plus de
compteur.

Voir #11508

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… pied de page

Trois diapos du deck S8 laissaient leur ligne « Notebook » tomber sur le
pied de page « Intelligence(s) » : la 11 (SW-5 Linked Data), la 13 (SW-6
RDFS) et la 16 (SW-8 SHACL).

Les diapos 11 et 16 portaient deja <div class="dense-list"> : la
compression etait donc epuisee, et le volume de contenu reste en cause.
La 13 ne portait pas la classe, alors que l'en-tete de style.css nomme
explicitement « listes denses sous H2 empiles (SW-1, RDFS, etc.) ».

Correctifs, aucun contenu retire :
- SW-5 : « Requetes federees SPARQL » (bloc de code + 2 puces + renvoi)
  devient sa propre diapo, detachee du tableau des 5 etoiles ;
- SW-8 : « Definition d'une Shape SHACL » (bloc Python + renvoi) devient
  sa propre diapo, detachee du tableau SHACL vs OWL ;
- SW-6 : dense-list, l'utilitaire que le deck definit pour ce cas.

Preuve : export complet avant/apres, 28 -> 30 diapos, scan 0/30 aux
trois reglages (contre 3/28 a 0.0005/16 avant). Perimetre sha256 : 1-10
identiques au meme index, 13/15/16 a index+1, 19-30 a index+2, et seules
les trois diapos editees (base 11, 13, 16) restent sans contrepartie.

See #11508

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…, « Extensions possibles » sur sa propre diapo

Mesure : export complet, scan des 16 dernieres lignes a 0,0005. La diapo 20
rendait son dernier point a hauteur du pied de page : « Argumentation pour
l'explicabilite des modeles ML » se superposait a "Intelligence(s)", et la
diapo empilait trois sections (Documentation, Notebooks connexes, Extensions).

Correctif : la troisieme section devient sa propre diapo (# Extensions
possibles), dans l'idiome du deck (separateur --- nu, markdown pur, aucun HTML).
Aucun contenu retire.

Preuve : 22 -> 23 diapos, scan 0/23 aux trois reglages (0.0005/10, 0.0002/12,
0.0005/16) contre 1/22 au reglage le plus strict avant. Perimetre : 1-19
byte-identiques au meme index, 21-22 identiques a index+1, seule l'ancienne 20
n'a aucun equivalent byte-egal — c'est la diapo scindee.

See #11508

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@jsboige jsboige changed the title Fix(slides,#11508): 01-introduction -- deux diapos debordantes passees en layout dense Fix(slides,#11508): fournee de six decks -- debordements de diapos (repli de #24200 #24209 #24217 #24235 #24236) Nov 3, 2026
@github-actions github-actions Bot added the paragraph-length Paragraph > 2000 chars (wall-of-text, #15405). Resorb before merge. label Nov 3, 2026
myia-ai-01 pushed a commit that referenced this pull request Nov 3, 2026
…ations egal (#24343)

* Fix(search,#24297): cadran de regime a budget d'evaluations egal

Grain: DEEP/notebook-python -- lane myia-po-2028:CoursIA -- prev: LIGHT/slides #24152

Le carnet comparait un hill-climber arrete a 3 001 evaluations a un AG qui en
consommait 20 000 : l'egalite observee sur OneMax mesurait un budget plus grand,
pas une capacite. La section 3b est reorganisee en trois regimes mesures a
budget egal (3 000 evaluations, 20 graines), et la prose de justification du
contre-resultat cede la place au classement :

- OneMax L=20 : 20/20 contre 20/20 -- l'egalite tient a budget egal ;
- Trap L=20 k=4 : 0/20 contre 13/20 -- le piege discrimine ;
- OneMax L=100 : 20/20 contre 0/20 -- la dimension ne discrimine pas en faveur
  de l'AG, c'est la structure du paysage qui compte.

Les jetons PLACEHOLDER_HC / PLACEHOLDER_PCT de la cellule d'interpretation sont
remplaces par les valeurs mesurees, apres re-execution complete du carnet
(papermill, kernel python3, 40/40 cellules, 0 erreur).

Voir #24297

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

* Feat(notebook,#24297): Search-05 -- cadran de regime a budget d'evaluations egal

Le carnet comparait un hill-climber arrete apres 3 001 evaluations a un AG
qui en consommait 20 000, puis concluait que les deux "gagnent" sur OneMax.
Ce n'est pas une comparaison : le budget n'etait pas le meme.

Ajoute `ga_binary_budget`, meme contrat d'arret sur le compteur d'evaluations,
et un cadran mesure sur 20 graines a 3 000 evaluations pour les deux :

  OneMax L=20   (GA-easy)    HC 20/20 moy  20.00 | AG 20/20 moy 20.00 |  20 - 20
  Trap   L=20 k=4 (deceptif) HC  0/20 moy  15.45 | AG 13/20 moy 19.60 |   0 - 13
  OneMax L=100  (dimension)  HC 20/20 moy 100.00 | AG  0/20 moy 96.10 |  20 -  0

Le troisieme regime est un temoin negatif assume : la dimension ne favorise
pas l'AG, c'est la structure deceptive du paysage qui le fait. La prose de
la section est re-derivee de cette mesure, le tableau a execution unique
etant desormais annonce pour ce qu'il est.

Re-execution limitee au prefixe modifie (cellules 0..33) ; les cellules dont
la source est intacte conservent leurs sorties committeees, pour ne pas
perturber la section 13 dont les sorties derivent sous l'environnement
courant independamment de ce grain.

See #24297

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

* Chore(search,#8057): attestation paire Search-05 apres cadran AG (#24343)

Le Twin parity audit refusait la paire Search-05 GeneticAlgorithms :

l'ajout du cadran de regime AG vs hill-climber (PR #24343, issue #24297)

-- 5 cellules cote Python -- fait diverger content_python_sha de
l'attestation 0027. Re-audit firsthand : le drift est l'ajout Python
seul, le cote C# est intact dans cette PR (branche rafraichie sur
main via update-branch, qui porte le redressement densite 5cd30ef
du cote C# -- fusion content-free, le notebook Python n'est pas
touche par main depuis le fork).

Entree 0028 : python_sha 812c186 (cadran ajoute), csharp_sha
84cecfe (inchange). Verifie localement : OK=1 DRIFT=0 MISSING=0.

See #24297
See #8057

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

---------

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
@jsboige

jsboige commented Nov 3, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 24152
head: aa011aa
complete: true
body: read
comments-reviewed: 3
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 99110acbf02f37682fe1f467826f7b61e3cb2f24ea79f615beb91bd052482257
diff-files: 7
diff-additions: 120
diff-deletions: 8
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 24152
organ-rc: 0
[/ADJOINT PREFLIGHT]

@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.

Lu à la tête aa011aa : six decks, aucun contenu retiré. Seule la mise en page change (img-grid, découpe de diapos, styles scoped). Le rouge Slidev était un ETIMEDOUT réseau, la jambe est rejouée et verte. Dossier adjoint READY.

@myia-ai-01
myia-ai-01 merged commit ac013ae into main Nov 3, 2026
25 of 35 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

paragraph-length Paragraph > 2000 chars (wall-of-text, #15405). Resorb before merge.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants