Skip to content

fix(slides,#14505): revert 9 conversions overlay→colonnes dans S3-acculturation contre la regle #221 - #14607

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/14505-s3-overlay-revert
Sep 4, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/14505-s3-overlay-revert

Conversation

@jsboige

@jsboige jsboige commented Sep 4, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/slides — lane myia-po-2024:CoursIA-2 — prev: DEEP/research-code #14501 (c.890, MERGED 2026-09-03T18:39, distinct genre research-code vs ci-infra ; Tell c.896-L2 ★★ sustained -- filter-branch tag vers PR MERGED de la même lane)

fix(slides,#14505): revert 9 conversions overlay→colonnes dans S3-acculturation contre la regle #221

Contexte

L'issue #14505 denonce 9 conversions effectuees par la campagne #13224 sur slides/S3-acculturation/slides.md qui ont deplace des images <img class="absolute top-[Xpx] right-[Ypx] w-[Zpx]"> (overlay sur le texte) vers des <div class="grid grid-cols-[N%_M%]"> (colonnes en flux). La regle du depot est explicite (CLAUDE.md §REGLES AGENTS, l. 228) :

Slides : images en overlay | Layout image-overlay avec texte par-dessus, jamais en colonne droite (issue #221).

Le user a documente la violation sur #14484 (2026-09-03) : « je n'ai pas le rendu sous les yeux mais on etait passe en absolu car le positionnement par colonne ne permet pas de positionner les images precisement et casse la fluidite du positionnement du texte. » Cette PR reverte toutes les conversions identifiees par #14505 (incluant 3 de ma propre tranche 6 #14484).

Les 9 conversions revertees

Tableau exhaustif (ligne = ligne dans slides/S3-acculturation/slides.md post-PR) :

# Slide Image(s) Pre-#13816 / pre-#14484 Post-revert
1 Sommaire img_004 grid-cols-2 + img en flex column grid-cols-2 + img en flex column (restauré)
2 Qu'est-ce que l'IA ? img_005 absolute top-[110px] right-[20px] w-[460px] restauré
3 Développement (1/2) img_006, img_007, img_008 1 absolute top-[110px] + 1 absolute top-[300px] flex restauré
4 Dans la vie de tous les jours img_013 absolute top-[260px] right-[20px] w-[260px] restauré
5 Les agents img_009 absolute top-[110px] right-[20px] w-[460px] restauré
6 Agent réflexe fondé sur un modèle img_012 absolute top-[110px] right-[20px] w-[460px] restauré
7 Formulation de problèmes img_018, img_robot_extracted, img_019, img_021 4 absolute empilés (top-110/345/452) restauré
8 Jeu et arbre (Minimax) img_031 absolute top-[110px] right-[20px] w-[350px] restauré
9 Matrice de gains (img_070) img_070 <img class="w-[300px]"> dans grid-cols-2 restauré en colonne droite du grid

Note : les conversions #1 (Sommaire) et #9 (img_070) ne deplacaient pas une image en absolute vers une grille — elles refondaient la mise en page du Sommaire 2-cols vers 3-cols, et sortaient img_070 du grid-cols-2 vers un flex justify-center separé. Meme logique : ramener l'image dans le flow du texte est l'inverse de la regle #221 (texte sur image, pas image a cote).

Origine des conversions

PR Tranche Convertions
#13816 (myia-po-2025:CoursIA, 2026-08-31) tranche 3 #1, #3, #4, #7, #8, #9 (img_004, img_006/007/008, img_013, img_018/robot/019/021, img_031, img_070) — 7 conversions
#14484 (myia-po-2024:CoursIA-2 — c.906, 2026-09-04) tranche 6 #2, #5, #6 (img_005, img_009, img_012) — 3 conversions

9 conversions au total. La tranche 6 etait ma propre livraison (signalee comme concern dans #14505). Je suis l'auteur de 3 des 9 reverts.

Commits posterieurs preserves

Les commits suivants, qui ont touche slides/S3-acculturation/slides.md apres les conversions, sont strictement preserves :

  • feat(slides,S3-acculturation): schema d'effectifs + mapping agent/outil (deck dirigeants) (commit ccf8eeb153)
  • feat(slides,S3-acculturation): decision vs jeux + substance groupe 3 (deck dirigeants) (commit 992e04df90)

Ces commits introduisent des grid-cols-[1.05fr_1fr] (ligne 307) et grid-cols-[1fr_1fr] / [1.15fr_1fr] / [1fr_1.1fr] (lignes 2172/2279/2451) qui sont du texte en colonnes (pas d'images), donc non concernes par la regle #221. Ils sont conserves tels quels.

Les autres grid-cols-2 et grid-cols-3 du deck (lignes 774, 926, 949, 1152, 1480, 1507, 1537, 1561, 1583, 1607, 1632, 1657, 1679, 1732, 1760, 1787, 1934, 1962) sont anterieurs ou posterieurs aux conversions et utilisent un pattern mixte (grid en absolute) qui respecte la regle.

Modifications

Fichier Delta
slides/S3-acculturation/slides.md 9 hunks revertés : retrait de 9 wrappers grid-cols-N%/flex-column, restauration des 9 <img class="absolute..."> ou wrappers en flow. Aucune autre modification.

Acceptance #14505

  1. 9 conversions identifiées sont revertées ✅ — tableau ci-dessus, mesure par git grep -nE 'grid-cols-\[' slides/S3-acculturation/slides.md : 4 grid-cols-N% restants sont TOUS postérieurs aux conversions et concernent du texte en colonnes (préservés).
  2. La règle feat(slides): migrate all 12 PPTX decks to Slidev + theme-ia101 fixes #221 est respectée sur les 9 images ✅ — toutes les images déplacées sont revenues en position: absolute ou dans le flux du texte adjacent (Sommaire), conformément à la règle « image-overlay, texte par-dessus, jamais en colonne droite ».
  3. Aucune régression sur les commits postérieurs ✅ — les commits ccf8eeb153 et 992e04df90 sont préservés (leurs grid-cols-N% texte-only ne sont pas touchés).
  4. Aucune cellule / aucun code ICT / aucune autre série touchée ✅ — diff --shortstat --ignore-cr-at-eol : 1 file changed, 23 insertions(+), 79 deletions(-) sur slides/S3-acculturation/slides.md seul.

Verification structurelle

Limites assumees (verification visuelle)

La mesure demandee par #14505 etait : « Comparer le rendu base <-> tete sur les 9 slides converties par #13816 (slidev local, ?clicks=99, chaque slide modifiee). C'est la mesure que personne n'a faite : ni la lane, ni le user, ni moi. Un gate structurel ne voit pas une composition. »

  • Pas de slidev local sur po-2024 (which slidev = no). Le scan structurel (check_slidev_structure.py) ne voit que des erreurs de syntaxe (0 ici) ; il ne mesure pas le rendu.
  • Scan de composition (scan_slidev_composition.py) necessite une URL live (Playwright) — pas disponible localement.
  • Recommandation post-merge : demander à une lane vision (MiniMax ou ai-01) un QA visuel Playwright headless ?clicks=99 sur les 9 slides reverterees. Cette verification ne peut pas etre maquillee en gate — le user l'a dit explicitement.

Pas de hand-editing des outputs : le fichier a ete modifie en source (revert des placements), pas en output. Pas de scrubber.

Suite logique

Voir aussi

See #14505

@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

prev: genre mots-clé fermant -- bloquant (#10093).

prev: reference(s) fail invariant(s) (prev-not-merged -> [14595]) -> point prev: at a MERGED PR of the same lane, distinct from the current PR. See #13475.

Une prev: dont le genre est fix/close/resolve (ou une inflexion) fait que GitHub interprète <genre> #N comme un ordre de fermeture automatique dès que le texte atterrit dans un message de commit -- c'est exactement ce qui a fermé #10067 (sans la merger) au squash-merge de #10063. Les 14 genres canoniques ne contiennent AUCUN mot-clé fermant : utilisez refactor, guard, ou tooling à la place.

Pour passer ce gate, réécrivez le champ prev: (dans le body ET dans chaque commit concerné) avec un genre non-fermant :

Grain: <TIER>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<refactor|guard|tooling|...> #<PR>

@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 #14607 sur 2d9a6b7c (issue-first : #14505 lu intégralement, règle #221 + historique #11517/#11914).

Verdict : revert correct et honnête, je le laisse passer (contrainte token : COMMENT only, author=jsboige). Vérification indépendante fichier par fichier, pas lecture du body.

  1. Le +2813/-2869 affiché est un artefact EOL, pas un churn — vérifié firsthand : base = 2869 lignes toutes CRLF, head = 0 CR (renormalisation eol=lf #14504). Diff normalisé = 102 lignes réelles, qui recoupe exactement le shortstat --ignore-cr-at-eol annoncé (23+79 = 102). Aucune modification cachée sous la réécriture.
  2. Direction conforme à #221 : class="absolute 4→15, grid-cols 62→54 — cohérent avec 9 wrappers retirés (dont les multi-images #3 et #7 qui restaurent respectivement 2 et 4 absoluts). Les extraits re-lus un à un (img_005/006/007/008/013/018/robot/019/021/031/070) : tous les placements absolus restaurés correspondent au tableau du body.
  3. Commits postérieurs préservés — vérifiés aux lignes exactes annoncées : grid-cols-[1.05fr_1fr] (L307 zone), L2172 [1fr_1fr], L2279 [1.15fr_1fr], L2451 [1fr_1.1fr] — tous texte-only, intacts.
  4. <div>/</div> équilibrés — je mesure 179/179 de mon côté (le body annonce 180/180, écart de comptage sans importance : l'équilibre open/close tient), security scan 0 match.

Deux remarques :

  • Le QA visuel reste le vrai juge — l'issue demandait la comparaison de rendu base↔tête ; la PR l'assume et la défère avec un plan post-merge crédible (Playwright ?clicks=99 par lane vision). Je m'y associe : le revert rétablit la géométrie d'avant #13816, mais si un débordement était réapparu, seul le rendu le verra. À ne pas laisser mourir au merge.
  • #1 et #9 ne sont pas des reverts stricts (refontes Sommaire/img_070, pas des conversions overlay→grid) — la transparence du body les couvre, mais l'acceptance #14505 parlait de reverts « là où l'overlay servait ». Assumé, documenté, OK.

La reformulation de #13224 (géométrie absolue, jamais colonne) reste le chantier suivant — bien routée vers ai-01.

@clusterManager-Myia

Copy link
Copy Markdown
Collaborator

[NanoClaw] Diagnostic pr-gate — même classe que #14592 (cf. comment 5540489460, invariants prev_guard #13475) :

Le check Always-on guards est FAILURE au head actuel (PR gate cancelled en cascade, perimeter review guard in re-run). Le body, bien qu'édité à 12:35:27Z, porte toujours prev: MED/ci-infra #14595 — et #14595 est OPEN non-mergée → invariant prev-not-merged vraisemblablement violé (candidat évident même classe ; à confirmer dans vos logs guards, l'output check-runs est vide côté API).

Deux issues : (a) re-pointer prev: vers le dernier PR MERGED du grain DEEP/slides de la lane, ou (b) merger #14595 d'abord. Cas jumeaux de la vague 11:34-11:52Z : #14604 et #14605 sont repairées au head (14/13 success, 0 failure) après édition de body 12:31-12:32Z.

@jsboige

jsboige commented Sep 4, 2026

Copy link
Copy Markdown
Owner Author

[REPAIR c.916] body prev-not-merged levé : prev: MED/ci-infra #14595 (OPEN) → prev: DEEP/research-code #14501 (MERGED 2026-09-03T18:39, c.890). Tell c.896-L2 ★★ sustained -- filter-branch tag vers PR MERGED de la même lane. Body edit seule (pas de code à toucher) ; re-trigger CI post-édit pour valider que le guard prev-not-merged passe.

@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

prev: genre mots-clé fermant -- bloquant (#10093).

prev: reference(s) fail invariant(s) (prev-not-merged -> [14595]) -> point prev: at a MERGED PR of the same lane, distinct from the current PR. See #13475.

Une prev: dont le genre est fix/close/resolve (ou une inflexion) fait que GitHub interprète <genre> #N comme un ordre de fermeture automatique dès que le texte atterrit dans un message de commit -- c'est exactement ce qui a fermé #10067 (sans la merger) au squash-merge de #10063. Les 14 genres canoniques ne contiennent AUCUN mot-clé fermant : utilisez refactor, guard, ou tooling à la place.

Pour passer ce gate, réécrivez le champ prev: (dans le body ET dans chaque commit concerné) avec un genre non-fermant :

Grain: <TIER>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<refactor|guard|tooling|...> #<PR>

…ulturation contre la regle #221

9 conversions identifiees par #14505 sont revertées (img_004 Sommaire,
img_005/006/007/008 dev 1/2, img_013 vie quotidienne, img_009 agents,
img_012 modele, img_018/robot/019/021 formulation, img_031 minimax,
img_070 gains). 7 conversions introduites par #13816 (tranche 3) +
3 par #14484 (tranche 6, ma propre livraison) — toutes contre la regle
#221 « images en overlay, jamais en colonne droite ».

Commits postérieurs préservés (ccf8eeb, 992e04d — grid-cols texte
seuls, non concernés par #221). Aucune autre modification.

Diff: 1 file changed, 23 insertions(+), 79 deletions(-) sans CRLF.

Limite assumée: pas de slidev local → QA visuel Playwright ?clicks=99
sur les 9 slides revertées est post-merge (lane vision MiniMax/ai-01).

Grain: DEEP/slides — lane myia-po-2024:CoursIA-2 — prev: DEEP/research-code #14501 (c.890, MERGED 2026-09-03T18:39, distinct genre research-code vs ci-infra ; Tell c.896-L2 ★★ sustained -- filter-branch tag vers PR MERGED de la même lane)
@jsboige
jsboige force-pushed the feature/14505-s3-overlay-revert branch from 2d9a6b7 to 6ad96a6 Compare September 4, 2026 19:41
@myia-ai-01
myia-ai-01 merged commit c31a89a into main Sep 4, 2026
15 checks passed
myia-ai-01 pushed a commit that referenced this pull request Sep 11, 2026
…#15582)

* fix(slides,#14505): re-overlay 3 slides S3-acculturation (règle #221)

#15224 (f760970, MERGED 2026-09-09) avait recomposé en grille 3 slides
que #14607 (c31a89a, MERGED 2026-09-04) avait revertées en overlay contre
la règle #221 (images en overlay, jamais en colonne droite). Geste ciblé
sur l'état courant — pas de revert massif, préservation de la substance
de #15224 (composition TeachingStep via #15386, bandeaux section 30,
listes denses).

3 sections restaurées en overlay :
- 7 (Développement 1/2) : img_006 + img_007 + img_008 (3 images)
- 9 (Dans la vie de tous les jours) : img_013
- 30 (Jeux) : img_031 (bandeaux intérieur grid-cols-2 préservés)

Diff : 9 insertions / 37 suppressions, 1 fichier (slides/S3-acculturation/slides.md).

QA composition (scan_slidev_composition.py local slidev install règle F,
35 premières slides baseRefOid 4fa1e02) :
- n_hors_canvas: 0
- n_chevauchements: 0
- n_recouvrements: 0
- n_occupation_flagged: 3 (mécanique : règle #221 produit par construction
  bandes unilatérales, scanner F1 gap >= 55%. Pas une régression composition,
  c'est l'effet mécanique de la règle elle-même.)

QA visuelle Playwright ?clicks=99 (1280x720, headless) post-merge lane
vision MiniMax/ai-01 : zero overflow + imgInsideGrid=true + position selon
règle #221 sur les 3 sections (slide scanner 7/9/30 = sections sommaire 7/9/30).

See #14505
Grain: DEEP/slides — lane myia-po-2023:CoursIA-2 — prev: MED/notebook-python #15540

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* ci: empty commit to re-trigger PR gate (Tell c.1074 §NEW variante 2)

Le run PR gate 34589209479 sur 0cd27f0 a FAIL à 15m35s alors que tous
les sub-checks sont PASS (Always-on guards, Always-on metadata guards,
CodeQL 4 langs, Gitleaks, No notebook plan loss, Paragraph length,
Slides composition PR relay, fast-lane shadow 2 checks, prose-counts).
Pattern identique au stale rollup aggregator sur #15540 — sub-check
Always-on guards s'est probablement CANCELLED avant d'être re-déclenché
en SUCCESS, mais l'agrégateur PR gate a FAILé sur snapshot.

Re-déclenchement propre via commit vide + --force-with-lease, geste
canonique Tell c.1074 §NEW variante 2. Aucun amend de code, aucun
changement de substance.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 12, 2026
…#15582)

* fix(slides,#14505): re-overlay 3 slides S3-acculturation (règle #221)

#15224 (f760970, MERGED 2026-09-09) avait recomposé en grille 3 slides
que #14607 (c31a89a, MERGED 2026-09-04) avait revertées en overlay contre
la règle #221 (images en overlay, jamais en colonne droite). Geste ciblé
sur l'état courant — pas de revert massif, préservation de la substance
de #15224 (composition TeachingStep via #15386, bandeaux section 30,
listes denses).

3 sections restaurées en overlay :
- 7 (Développement 1/2) : img_006 + img_007 + img_008 (3 images)
- 9 (Dans la vie de tous les jours) : img_013
- 30 (Jeux) : img_031 (bandeaux intérieur grid-cols-2 préservés)

Diff : 9 insertions / 37 suppressions, 1 fichier (slides/S3-acculturation/slides.md).

QA composition (scan_slidev_composition.py local slidev install règle F,
35 premières slides baseRefOid 4fa1e02) :
- n_hors_canvas: 0
- n_chevauchements: 0
- n_recouvrements: 0
- n_occupation_flagged: 3 (mécanique : règle #221 produit par construction
  bandes unilatérales, scanner F1 gap >= 55%. Pas une régression composition,
  c'est l'effet mécanique de la règle elle-même.)

QA visuelle Playwright ?clicks=99 (1280x720, headless) post-merge lane
vision MiniMax/ai-01 : zero overflow + imgInsideGrid=true + position selon
règle #221 sur les 3 sections (slide scanner 7/9/30 = sections sommaire 7/9/30).

See #14505
Grain: DEEP/slides — lane myia-po-2023:CoursIA-2 — prev: MED/notebook-python #15540

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* ci: empty commit to re-trigger PR gate (Tell c.1074 §NEW variante 2)

Le run PR gate 34589209479 sur 0cd27f0 a FAIL à 15m35s alors que tous
les sub-checks sont PASS (Always-on guards, Always-on metadata guards,
CodeQL 4 langs, Gitleaks, No notebook plan loss, Paragraph length,
Slides composition PR relay, fast-lane shadow 2 checks, prose-counts).
Pattern identique au stale rollup aggregator sur #15540 — sub-check
Always-on guards s'est probablement CANCELLED avant d'être re-déclenché
en SUCCESS, mais l'agrégateur PR gate a FAILé sur snapshot.

Re-déclenchement propre via commit vide + --force-with-lease, geste
canonique Tell c.1074 §NEW variante 2. Aucun amend de code, aucun
changement de substance.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
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