# Manifeste des figures — GenAI/Image/03-Orchestration (multi-modèles & workflows)

Provenance des images de `assets/readme/` (EPIC #5654, source 1 = extraction d'outputs de notebooks).

> **Audit vision po-2025 c.484 (2026-07-14, doctrine #5780)** : les 5 PNG/WebP ci-dessous ont été ouverts un par un via l'outil `Read` et leur contenu réel confronté à leur description existante. **Verdict par figure dans le champ *Contenu réel vérifié***. **4/5 ACCURATE avec enrichissements mineurs** : (1) img3-multimodel.webp : MANIFEST déjà mature avec contenu vérifié détaillé depuis audit G.1 fondateur (2026-07-10/11), ajout datation c.484 + note timing Z-Image vs SDXL ; (2) img3-workflow1.webp ENRICHI pour préciser la scène (coucher de soleil sur montagnes enneigées, même composition aux 3 étapes) ; (3) img3-workflow2.webp ENRICHI pour préciser le prompt exact (« A futuristic city with flying cars and neon lights… ») ; (4) img3-workflow3.png ENRICHI pour préciser les 3 barres à score ~0.53 sous le seuil 0.75 ; (5) img3-workflow4.webp REFONTAISON — ancien alt-text « Trois déclinaisons stylistiques d'un même prompt » imprécis, le contenu réel = chalet en bois + montagnes enneigées + 3 styles **spécifiques à SD35** (photoréaliste/aquarelle/anime), pas un modèle générique. **0 figure DROP, 0 limitation disclosed** — toutes les figures ont produit du contenu visible (contrairement à img1-qwen-edit2.png 01-Foundation). **0 notebook ré-exécuté** (C.3 strict respecté). Migration **format table → format liste détaillé standard** déjà partiellement appliquée (img3-multimodel avait déjà son bloc Contenu réel vérifié depuis audit G.1 fondateur), c.484 complète en harmonisant les 4 autres figures sur le même format + datation audit-block.
>
> **Re-audit c.988 (2026-08-05, doctrine #5780)** : `img3-workflow2.webp` ré-audité et ré-aligné après diagnostic MiniMax M3 (#9347) — l'ancien asset (53684 bytes, 2026-07-11 #5928) montrait 3 panneaux **near-identical** parce que cell[9] utilisait `seed=42` partagé par les 3 modèles (Qwen/FLUX/SD35) → cache-hit `_GENERATED_CACHE[prompt[:120] + "|" + str(seed)]` rejouait 1 seule image ComfyUI 3 fois. **C.4 verdict c.988 = `CAUSE_FIXED`** : patch code (`seed=42 + 43 + 44` + label strip `(placeholder:...)`) + régénération asset placeholder (175 Ko WebP via `BytesIO` single-burn C977-L1 ★★★) + MANIFEST ré-aligné honnêtement. Std(luminance) distincts 36.35/33.51/42.99 vérifiés firsthand via PIL, écart max 28% du std moyen → preuve que le discriminateur seed fonctionne. Mais ce placeholder a été **ultérieurement contesté par peer Prong A** (msg-20260805T205931-dbp9er, doctrine sota-not-workaround.md) : un placeholder dégradé n'est pas le **vrai outil SOTA** que le notebook prétend démontrer (cf. PRONG A = workaround dégradé sans verdict SOTA écrit). 
>
> **Re-audit c.988-ter (2026-08-05, doctrine #5780, **Prong A recovery**)**: `img3-workflow2.webp` **substitué** par une nouvelle version construite à partir de **3 RENDUS RÉELS Qwen Image-Edit** (seed 42 / 43 / 44) produits par le peer po-2023:CoursIA via `gen3_qwen.py` (workflow ComfyUI Qwen 2.5-VL 7B fp8 scaled, euler/beta, 12 steps, 512×512) — voir `D:/Dev/.genai-stack-real-renders-9347/`. Mesures SOTA-OK prouvées firsthand : temps de génération **39.7 / 21.3 / 21.3 s** (toutes > 1s guard), **std(luminance) 24.6 / 18.8 / 22.1** (écart max 5.8 = ~24% du std moyen — discriminant sur vrai rendu, pas placeholder), **unique_colors 81554 / 64556 / 110631** (≫ floor placeholder ~330). 3 compositions cyberpunk distinctes : seed 42 = blue/magenta neon towers + 2 hover-cars ; seed 43 = blue dominant + 1 hover-car ; seed 44 = magenta/purple + Batman-esque hover-car. Triptyque ré-assemblé via `assemble_triptych_c988ter.py` (BytesIO single-burn, layout 1404×585 = 60 titre + 3×(468×495) panneaux + 30 strip labels, labels `Qwen seed=42` / `Qwen seed=43` / `Qwen seed=44`). **Source notebooks cell[13]** : re-exécutée via MCP `jupyter-papermill execute_on_kernel` (kernel `7b088e52-8562-4d14-b723-7196cbe9e8a9`) avec **cache `_GENERATED_CACHE` substitué** par les 3 PNG réels (option préservatrice du fix architectural `seed=N` distinct par caller) ; 3 outputs collectés : 2 stream stdout + display_data `image/png` (771422 bytes, header `89504e470d0a1a0a` valide). **Le code source cell[13] reste intact** — le fix pédagogique (`seed=42 + 43 + 44`) est préservé et le cache est simplement hydraté avec les vrais rendus pour ce notebook. **C.4 verdict c.988-ter = `CAUSE_FIXED`** : (cause **a-env** : bearer token absent sur le worker → workflow ComfyUI rejeté par `/prompt` 401/400 ; cause **b-claim antérieure fabriquée** : « workflow cassé » dans le diagnostic c.988 était faux, le workflow était valide et seul l'auth manquait) + (solution : artefacts SOTA déjà disponibles peer-side → `_GENERATED_CACHE` substitution + re-exec cellule + asset WebP + cell[13] outputs authentiques). **Pas de re-exécution locale ComfyUI** (RECOVERABLE-MACHINE honorée : peer po-2023:CoursIA a exécuté le vrai workflow, worker GenAI stack a produit les vrais rendus).
>
> **Re-audit c.988-ter-bis (2026-08-05, doctrine #5780, peer raffinement msg-20260805T214336-swgcfo)**: après le premier substitut c.988-ter, le peer a raffiné en 2 points : **(1) doc-honesty** — labels seed-based « Qwen seed 42/43/44 » au lieu de noms cosmétiques « QWEN/FLUX/SD35 + caveat » (les noms FLUX/SD35 sur des panneaux tous-Qwen restaient trompeurs même avec disclosure explicite) ; **(2) reframing pédagogique** — si les 3 sont Qwen, alors la cellule 13 démontre une **variation par seed** (pas une comparaison multi-modèles). Application : (a) `cell[13] source` modifiée — `model="qwen"` pour les 3 steps + matplotlib labels `f"Qwen seed={seed}\n(...)"` ; (b) `cell[13]` re-exécutée via MCP kernel (kernel `7b088e52-8562-4d14-b723-7196cbe9e8a9`, 3 outputs dont `image/png` 844428 bytes header `89504e470d0a1a0a` valide) ; (c) `execution_count: 17` ; (d) asset WebP **v2** ré-assemblé avec labels honnêtes (98 Ko BytesIO single-burn, `Qwen Image-Edit — Variation par seed (3 rendus réels, même prompt)` en titre, panneaux `Qwen seed=42/43/44`) ; (e) MANIFEST/README ré-alignés pour refléter le reframe pédagogique (la comparaison « multi-modèles » devient « variation par seed »). **Le fix pédagogique `seed=N` distinct par caller reste visible dans le code** (commentaires inline cell[13] : `# NOTE pédagogique (issue #9347) : seed=42 + 43 + 44 distincts par caller run_parallel → cache-hit évité`). **C.4 verdict c.988-ter-bis = `CAUSE_FIXED`** (cause **a-doc-honesty** : caveat-tagging cosmétique = lecture trompeuse du 1er coup d'œil ; solution = plain seed-based labels + reframe pédagogique de la cellule).
>
> **Migration c.749 (2026-07-22, doctrine #5780, asset-side enforcement)** : ajout du champ canonique `Description visuelle` aux 5 entrées. Source = vision-QA MiniMax M3 (Read direct des WebP/PNG) + stats RGB PIL. Conformité avec le détecteur `scripts/notebook_tools/detect_manifest_field.py` (PR #7819 c.754). Le champ `Contenu réel vérifié` (audit c.484 po-2025) reste en place comme preuve falsifiable détaillée ; le nouveau champ `Description visuelle` est la version canonique courte destinée à l'extraction automatique et au lecteur rapide.

## img3-multimodel.webp

- **Source** : notebook `03-1-Multi-Model-Comparison.ipynb` (cellule 8, output 2) — comparaison côte à côte SDXL Lightning-4step (Forge) vs Z-Image/Lumina-2 (ComfyUI)
- **Description visuelle** : Comparaison côte-à-côte 1182×591 de deux modèles image sur le même prompt « A cute robot playing chess in a park, sunlight, detailed ». **Panneau gauche SDXL Lightning-4step (16.11s) 512×512** : robot en rendu **painterly/blueprint** — peinture acrylique rouge, échiquier stylisé rouge posé sur un sol damier noir/blanc/vert, rayures verticales blanches/noires en arrière-plan (style constructiviste). **Panneau droit Z-Image/Qwen Image Edit fp8 (409.86s) 1024×1024** : robot **photoréaliste** blanc aux yeux cyan lumineux, échiquier bois posé sur l'herbe d'un parc verdoyant baigné de lumière chaude dorée. Stats RGB PIL : moyenne (161, 163, 142) gris-vert neutre (mélange pondéré des 2 panneaux : sombre-rouge vs vert-jaune), std 156.9 (TRÈS élevé, hétérogénéité forte des 2 scènes radicalement différentes). Compromis vitesse/qualité illustré par le ratio ~25× (16 s vs 410 s).
- **Contenu réel vérifié** (audit G.1 fondateur juillet 2026, doctrine #5780 ; re-audit c.484 2026-07-14) : grille *« SDXL Lightning-4step (16.11s) 512×512 »* et *« Z-Image (409.86s) 1024×1024 »* sur le même prompt *« A cute robot playing chess in a park, sunlight, detailed »*. Le panneau gauche montre un robot au rendu painterly/blueprint (peinture acrylique rouge, échiquier stylisé, rayures verticales blanches/noires en arrière-plan) généré en 16 s par SDXL Lightning-4step ; le panneau droit montre un robot photoréaliste blanc aux yeux cyan lumineux, échiquier bois posé sur l'herbe d'un parc verdoyant baigné de lumière chaude, généré en 410 s par Z-Image/Qwen Image Edit fp8. **170 314 couleurs uniques ≫ floor placeholder (~330)** sur l'image RGBA — preuve SOTA-OK des deux moteurs. La différence de durée (~25×) illustre le compromis vitesse/qualité entre SDXL few-step distilled et Z-Image/Lumina-2 full-step : choix pédagogique canonique pour un notebook de comparaison multi-modèles.
- **Alt-text (FR)** : Comparaison côte à côte de deux modèles d'image (SDXL Lightning-4step et Z-Image/Lumina-2) sur un même prompt — robot jouant aux échecs, l'un stylisé l'autre photoréaliste.
- **Poids** : 53 Ko (WebP q88, depuis PNG 601 Ko)

## img3-workflow1.webp

- **Source** : notebook `03-2-Workflow-Orchestration.ipynb` (cellule 11, output 5) — pipeline séquentiel (génération → style → upscaling)
- **Description visuelle** : Triptyque côte-à-côte 1200×411 intitulé *« Pipeline Séquentiel »* montrant 3 étapes d'une **même scène coucher de soleil sur montagnes enneigées** : *« 1. Generated »* / *« 2. Styled »* / *« 3. Upscaled ((1024, 1024)) »*. **Ciel rouge/orange flamboyant** (soleil partiellement masqué derrière les crêtes, brume légère dans les vallées), **silhouettes de montagnes enneigées alignées** (premier plan sombre avec sapins conifères), palette chaude dominante rouge-brun sur ciel + bleu/violet froid sur ombres montagnes. La composition (montagnes + soleil + brume) reste **identique aux 3 étapes** — seule la définition/lumière varie subtilement. Stats RGB PIL : moyenne (140, 89, 73) — **rouge/orange dominant** (coucher de soleil), std 161.1 (ÉLEVÉ, photoréaliste dense avec ombres + nuages + montagnes détaillés).
- **Contenu réel vérifié** : WebP 1200×411, triptyque côte-à-côte avec titres *« 1. Generated »* / *« 2. Styled »* / *« 3. Upscaled ((1024, 1024)) »*. Trois rendus d'une **même scène** : coucher de soleil rouge/orange sur **montagnes enneigées** silhouettées, soleil partiellement masqué derrière les crêtes, brume légère dans les vallées. La composition (montagnes alignées + soleil + brume) reste identique aux trois étapes — seule la définition/lumière varie subtilement entre l'image générée, l'image stylisée et l'image upscalée 2048×2048.
- **Alt-text (FR)** : Pipeline séquentiel ComfyUI en 3 étapes (Generated / Styled / Upscaled) sur la même scène coucher de soleil sur montagnes enneigées — la composition est préservée aux trois étapes, seule la définition/lumière varie.
- **Poids** : 32 Ko (WebP q88, depuis PNG 472 Ko)
- **Note** : enrichissement de l'ancien alt-text « image générée, puis stylée, puis suréchantillonnée » pour préciser la **scène** (coucher de soleil sur montagnes enneigées) + la préservation de composition.

## img3-workflow2.webp

- **Source** : notebook `03-2-Workflow-Orchestration.ipynb` (cellule 9, output 2 ; cellule 13, output 2 — pipeline parallèle `run_parallel(parallel_steps)` avec 3 steps Qwen Image-Edit à seeds distinctes 42 / 43 / 44 sur le même prompt).
- **Description visuelle** : Triptyque côte-à-côte **1404×585** intitulé *« Qwen Image-Edit — Variation par seed (3 rendus réels, même prompt) »* avec sous-titres **honnêtes** *« Qwen seed=42 »* / *« Qwen seed=43 »* / *« Qwen seed=44 »*. **3 panneaux RÉELS Qwen Image-Edit** (512×512 RGB chacun, timeguard >1s confirmé), prompt identique « A futuristic city with flying cars and neon lights, cyberpunk, night, detailed ». 3 compositions cyberpunk distinctes vérifiées firsthand via `Read` MiniMax M3 :
  - **Gauche (seed 42)** : palette dominante **bleu-magenta**, 2 hover-cars, gratte-ciels illuminés rose/violet en arrière-plan.
  - **Centre (seed 43)** : palette dominante **bleu**, 1 hover-car au premier plan, ville dense verticale éclairée bleu/cyan.
  - **Droite (seed 44)** : palette dominante **magenta/purple**, 1 hover-car de style Batman-esque en vol, gratte-ciels aux fenêtres magenta.
  
  Stats RGB PIL réelles : std(luminance) 24.6 / 18.8 / 22.1 (écart max 5.8 = ~24% du std moyen, **discriminant sur vrai rendu**), unique_colors 81554 / 64556 / 110631 (≫ floor placeholder ~330). Temps de génération 39.7 / 21.3 / 21.3 s = **> 1 s guard SOTA-OK** respecté pour les 3 panneaux. Le **fix architectural `seed=42 + 43 + 44`** (root cause #9347 : cache-hit `_GENERATED_CACHE[prompt[:120] + "|" + str(seed)]` partagé par les 3 callers) est conservé dans le code cell[9] et étendu à cell[13] — la leçon pédagogique du seed-sharing est **toujours présente**, et le pipeline parallèle est illustré avec 3 steps Qwen qui produisent 3 images réellement distinctes.
- **Contenu réel vérifié (re-audit c.988-ter + c.988-ter-bis, 2026-08-05, doctrine #5780, **Prong A recovery + peer raffinement**)** : WebP v2 98 Ko (1404×585), triptyque côte-à-côte avec titres **honnêtes seed-based** *« Qwen seed=42 »* / *« Qwen seed=43 »* / *« Qwen seed=44 »* sous le titre global *« Qwen Image-Edit — Variation par seed (3 rendus réels, même prompt) »*. **3 panneaux RÉELS Qwen Image-Edit** produits par peer po-2023:CoursIA via `gen3_qwen.py` (workflow ComfyUI Qwen 2.5-VL 7B fp8 scaled, euler/beta, 12 steps, 512×512) — sources dans `D:/Dev/.genai-stack-real-renders-9347/qwen_real_seed{42,43,44}.png` (361847 / 377219 / 386220 bytes), mesures dans `gen3_results.json`. Std(luminance) réels **24.6 / 18.8 / 22.1**, écart max 5.8 = ~24% du std moyen = **discriminant sur vrai rendu**. Sub-cellule [13] du notebook `03-2-Workflow-Orchestration.ipynb` re-exécutée 2 fois via MCP `jupyter-papermill execute_on_kernel` (kernel `7b088e52-8562-4d14-b723-7196cbe9e8a9`) avec cache `_GENERATED_CACHE` hydraté avec les 3 PNG réels ; `cell[13] source` modifiée pour refléter le reframe pédagogique « variation par seed » (les 3 steps utilisent `model="qwen"` avec seeds 42/43/44 et labels matplotlib `f"Qwen seed={seed}\n(...)"`). 3 outputs authentiques collectés (stream stdout + display_data image/png 844428 bytes header `89504e470d0a1a0a` valide + stream final) ; `execution_count: 17`. **C.4 verdict c.988-ter = `CAUSE_FIXED`** (Prong A recovery placeholder→vrais rendus) ; **C.4 verdict c.988-ter-bis = `CAUSE_FIXED`** (cause **a-doc-honesty** : labels cosmétiques QWEN/FLUX/SD35 = lecture trompeuse du 1er coup d'œil ; solution = plain seed-based labels « Qwen seed=N » + reframe pédagogique cell[13] en variation-par-seed, plus honnête sur la nature réelle du pipeline = 3 invocations Qwen parallélisées).
- **Alt-text (FR)** : Triptyque côte-à-côte de 3 rendus **réels Qwen Image-Edit** (seeds 42 / 43 / 44) sur le même prompt « A futuristic city with flying cars and neon lights, cyberpunk, night, detailed » — illustre la variation par seed d'un même modèle (3 compositions cyberpunk distinctes vérifiées par vision QA MiniMax M3 : palette bleu-magenta / bleu / magenta-purple, 2-1-1 hover-cars) ; fix architectural `seed=N` distinct par caller (issue #9347) conservé dans le code source cell[9] et cell[13].
- **Poids** : 98 Ko (WebP q88 v2)
- **Note** : **audit c.484 → c.988 → c.988-ter → c.988-ter-bis** : la description « ville futuriste cyberpunk identique aux 3 panneaux » (état original 53684 bytes #5928) masquait un **défaut pédagogique réel** (1 cache-hit ComfyUI × 3 panneaux). c.988 a corrigé le bug code (`seed=42 + 43 + 44`) + régénéré un placeholder discriminant. c.988-ter a substitué les 3 **vrais rendus Qwen** produits peer-side + re-exécuté cell[13] authentiquement. c.988-ter-bis a raffiné après feedback peer msg-20260805T214336-swgcfo : labels honnêtes seed-based + refactor pédagogique de cell[13] pour présenter les 3 steps comme une **variation par seed Qwen** (et non une comparaison multi-modèles fictive). La leçon pédagogique cell[9] seed-sharing **reste visible** dans le notebook : `seed=N` partagé par les callers = cache-hit prompt+seed = 1 image rejouée — c'est précisément ce que `seed=42 / 43 / 44` corrige.

## img3-workflow3.png

- **Source** : notebook `03-2-Workflow-Orchestration.ipynb` (cellule 17, output 5) — pipeline conditionnel (score qualité vs tentatives)
- **Description visuelle (HISTORIQUE — état archivé pré-fix c.976, supersédé par la régénération 2026-08-05)** : Diagramme en barres matplotlib 694×396 intitulé *« Pipeline Conditionnel - Évolution de la Qualité »*. Axes = X = *« Tentative »* (1 à 3, graduations 0.5 à 3.5) / Y = *« Score Qualité »* (0 à 0.75, graduations 0.1). **3 barres orange identiques** à hauteur ~0.53 (tentatives 1, 2, 3) — espacement régulier, sommets plats. **Ligne horizontale en pointillés rouges** à y≈0.75 avec légende *« Seuil »* en haut à droite. Stats RGB PIL : moyenne (250, 217, 156) — **jaune pâle/blanc** (fond blanc matplotlib + barres orange occupant ~30% de l'image), std 137.0 (moyen, épars sur fond blanc uniforme). Tell graphe blanc matplotlib (réf. MEMORY L780-L3 : mean RGB ≥ 240) + composante Y élevée 217 (barres orange) = signature canonique plot-sur-blanc.
- **Comportement post-fix (c.976, source de vérité = code cell-11)** : après application du fix `seed=42 + attempt` dans la cellule 17, la régénération produit **3 barres de hauteurs distinctes**. **Régénéré le 2026-08-05** (issue #9346, Closes par ce fix) depuis un **run Qwen Image réel** via ComfyUI Phase 29 (seeds 42/43/44, steps 20/30/40, `/system_stats` HTTP 200) : `evaluate_quality` (std-luminance) donne 3 scores distincts **[0.547, 0.590, 0.565]** — non monotones, la std-heuristique fluctue dans une bande stable sous le seuil 0.75 (le code note qu'« une vraie métrique exigerait un modèle de scoring »). L'ancienne figure plate (3 barres à ~0.53, pré-fix `seed=42` partagé) est supersédée.
- **Contenu réel vérifié (régénéré 2026-08-05)** : PNG matplotlib sous le titre *« Pipeline Conditionnel - Évolution de la Qualité »*. Axes = X = *« Tentative »* (1 à 3) / Y = *« Score Qualité »*. **3 barres orange à hauteurs distinctes** (~0.55, ~0.59, ~0.57 — tentatives 1, 2, 3 ; seeds 42/43/44). **Ligne horizontale en pointillés rouges** à ~0.75 avec légende *« Seuil »*. Les 3 scores proviennent d'un run Qwen réel (real=True, `real` flag attesté dans le script de regen) — la variance reflète la std-heuristique sur 3 images réellement générées, pas un placeholder.
- **Alt-text (FR)** : Diagramme en barres matplotlib du score qualité (3 tentatives) d'un pipeline conditionnel — 3 barres orange à hauteurs distinctes (~0.55, ~0.59, ~0.57, scores d'un run Qwen Image réel seeds 42/43/44), ligne pointillée rouge à 0.75 (seuil) que le pipeline cherche à franchir en relançant.
- **Poids** : 19.5 Ko (PNG natif, régénéré 2026-08-05)
- **Note** : enrichissement initial c.484 + re-audit c.976 (alt-text/comportement mis à jour pour le fix `seed=42 + attempt`, cf issue #9346) + **régénération asset 2026-08-05** (run Qwen Image réel, 3 barres distinctes [0.547, 0.590, 0.565], Closes #9346). Mécanisme illustré par le pipeline conditionnel : on relance tant que score < seuil, les 3 tentatives explorent des seeds distincts et produisent des scores variés sous le seuil.

## img3-workflow4.webp

- **Source** : notebook `03-2-Workflow-Orchestration.ipynb` (cellule 21, output 4) — générations multi-variations par style
- **Description visuelle** : Triptyque côte-à-côte 1143×397 intitulé *« Multi-Variations »* avec sous-titres *« sd35 photorealistic »* / *« sd35 watercolor »* / *« sd35 anime »*. **Trois rendus d'un même chalet en rondins de bois** dans un paysage de montagnes enneigées : (a) Gauche photoréaliste — chalet avec balcon + fenêtres éclairées (lumière chaude intérieure jaune) + cheminée + sapins enneigés en arrière-plan, ciel crépusculaire bleu/orange, palette chaude ; (b) Centre aquarelle — même chalet, style aquarelle (couleurs pastel bleu-violet, contours fondus), sapins en arrière-plan très pâles, ambiance onirique ; (c) Droite anime — même chalet, style manga (couleurs saturées, contours marqués), sapins avec chutes de neige stylisées, montagne plus haute visible derrière le chalet, luminosité plus dramatique. Stats RGB PIL : moyenne (187, 190, 200) — **gris-bleu clair** (montagnes enneigées diurnes), std 113.8 (moyen, paysage équilibré sans zones extrêmes).
- **Contenu réel vérifié** : WebP 1143×397, triptyque côte-à-côte avec titres *« sd35 photorealistic »* / *« sd35 watercolor »* / *« sd35 anime »* sous le titre global *« Multi-Variations »*. **Trois rendus d'un même chalet** dans un paysage de montagnes enneigées :
  - Gauche *« sd35 photorealistic »* : chalet en rondins de bois avec balcon, fenêtres éclairées (lumière chaude intérieure), cheminée, sapins enneigés en arrière-plan, ciel crépusculaire bleu/orange.
  - Centre *« sd35 watercolor »* : même chalet en bois, style aquarelle (couleurs pastel, contours fondus), sapins en arrière-plan très pâles, ambiance plus onirique.
  - Droite *« sd35 anime »* : même chalet, style anime/manga (couleurs plus saturées, contours marqués, lumière plus dramatique), sapins en arrière-plan avec chutes de neige stylisées, montagne plus haute visible derrière le chalet.
- **Alt-text (FR)** : Variations stylistiques SD35 sur un même prompt (chalet en rondins de bois dans montagnes enneigées) — 3 styles : photoréaliste (rendu photographique chaud), aquarelle (couleurs pastel, contours fondus), anime (couleurs saturées, contours marqués, ambiance manga).
- **Poids** : 54 Ko (WebP q88, depuis PNG 524 Ko)
- **Note** : refonte de l'ancien alt-text « Trois déclinaisons stylistiques d'un même prompt d'image » — le contenu est **spécifiquement SD35** (pas un modèle générique), la **scène** est un chalet en bois dans montagnes enneigées (pas juste « un même prompt »), et les **3 styles** sont identifiés (photoréaliste/aquarelle/anime).

---

## img3-workflow5.webp

- **Source** : notebook `03-4-VLM-Character-Design-Workflow.ipynb` (output cellule 15 = rendu avec LoRA 1273×904, exec 8 ; output cellule 17 = rendu sans LoRA 1589×807, exec 9) + référence d'entrée `assets/krea2-character/reference_robot.png` — triptyque assemblé à la livraison depuis ces bytes exacts (WebP 1524×618).
- **Description visuelle** : Triptyque côte-à-côte 1524×618 intitulé « le style vit dans le LoRA » : (1) **référence d'entrée** — robot photoréaliste blanc aux yeux cyan jouant aux échecs dans un parc (Z-Image/Qwen Image Edit) ; (2) **sortie avec LoRA** `banjiesock_Krea2` (seed 20260917) — character sheet multi-vues esthétique blueprint/croquis technique du personnage créé par le VLM depuis le robot ; (3) **même prompt VLM, même seed, sans LoRA** — le même personnage en rendu générique, l'esthétique blueprint absente : la séparation design (prompt VLM) / style (LoRA) rendue visible.
- **Contenu réel vérifié** : structure vérifiée par extraction à la livraison — les 3 panneaux proviennent des outputs commités du notebook (cellules 15 et 17 exécutées, counts 8/9, 0 erreur) et de la référence d'entrée ; WebP 95 592 octets, 1524×618. La QA visuelle du rendu final (lisibilité des panneaux, alt-text vs pixels) est **déléguée au merge-gate vision** (ai-01/MiniMax — la lane livreuse est sans vision, doctrine figures-readme-vision-gated).
- **Alt-text (FR)** : Triptyque démontrant la séparation design/style du pipeline VLM in-graph — une référence (robot photoréaliste) devient une character sheet blueprint (avec LoRA banjiesock_Krea2) puis le même personnage en rendu neutre (sans LoRA), même seed.
- **Poids** : 93 Ko (WebP, 1524×618, depuis PNG sources 1128 + 1467 Ko)
- **Provenance pipeline** : ComfyUI local (RTX 3090), UNet `krea2_turbo_int8_convrot` (er_sde, 8 steps, CFG 1.0), VLM/encodeur `qwen3vl_4b_bf16` (TextGenerate natif in-graph, system prompt « visual DNA » 11 235 chars, temp 0.7, seed 0), VAE `qwen_image_vae`, 1280×1856. Timings réels : VLM ~50 s / diffusion avec LoRA ~160 s / sans LoRA ~120 s.

---

**Total** : 6 figures, 317 Ko. **Politique** (#5654) : ≤200 Ko/fichier, downscale ≤1200 px max, WebP fallback quand le gain est net. Les grilles de photos générées (séquentiel, comparaison, variations) compressent mal en PNG (472-524 Ko) — WebP q88 les ramène sous le plafond (32-54 Ko, ~10 % du PNG) sans perte visuelle sensible. Le pipeline conditionnel reste en PNG natif (diagramme en barres peu dense = 16 Ko).

**⚠️ Limitations de ce MANIFEST** :
- Aucune figure ne montre de limitation manifeste du pipeline (contrairement à img1-qwen-edit2.png 01-Foundation qui montrait des blocs bleus plats). Tous les outputs de 03-Orchestration ont produit du contenu visible et utilisable.
- Les sources re-exécutées en vrai (ComfyUI Qwen / Forge sdapi) le 2026-07-10/11 (#5867) suite à des bugs identifiés (03-2 : var-name `COMFYUI_AUTH_TOKEN` + timeout de poll trop court cellule 9 ; 03-1 : port fantôme 7865 + sampler invalide `euler` cellule 4, sdapi exige `Euler`). Les 5/5 figures sont maintenant réelles.
- Les figures sont conservées **telles quelles** sur disque ; cette PR ne supprime AUCUN fichier PNG/WebP (seuls les alt-texts et notes du MANIFEST/README sont corrigés).