# MANIFEST des figures README — IIT/ICT-Series

Provenance des images de `assets/readme/` (EPIC #5654, source 1 = extraction d'outputs de notebooks Python, série `ict/`). Les index de cellule sont absolus (toutes cellules : markdown + code), conformément à la convention `extract_readme_figures.py`. Les figures couvrent les strates 1-5 de la série : les strates 1-4 sont stables ; la strate 5 a ICT-16 livré et le capstone [ICT-Synthese-CrossSubstrat](../../ICT-Synthese-CrossSubstrat.ipynb) illustré par sa convergence Φ/F/K et sa jambe temporelle de réversibilisation (Epic #4588 ; ICT-15..25 sinon gated).

**Audit visuel juillet 2026** : chaque PNG a été rouvert via l'outil `Read` (Claude vision) et son **contenu réel** documenté ci-dessous. Les figures ont été **ré-intégrées dans le flux narratif** du `README.md` (au niveau du notebook discuté, pas dans une section Galerie isolée), avec une légende qui décrit exactement ce qui est visible et signale honnêtement ce qui ne l'est pas (« limitation illustrative assumée »). Plusieurs noms de fichiers s'écartent du contenu rendu — c'est une dette de nommage connue, discloseée dans la légende de chaque figure concernée.

**Migration c.778 (2026-07-22, doctrine #5780, asset-side enforcement)** : ajout du champ canonique `Description visuelle` aux 9 entrées. Source = vision-QA MiniMax M3 (`Read` direct des 9 PNG via po-2024, mandat 2026-07-11) + stats RGB PIL (mean/std par canal, échantillonnage 2000 pixels random). 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.493 po-2025) reste en place comme preuve falsifiable détaillée ; le nouveau `Description visuelle` est la version canonique courte destinée à l'extraction automatique et au lecteur rapide. **9/9 figures conformes au détecteur post-migration.** G-VAR-3 : registre `notebook-tools` sub-genre MANIFEST-desc-visuelle distincte de c.777 (ML racine, famille IIT ≠ ML, vision-QA fresh sur 9 PNG distincts).

## ict1-phitrajectories.png

- **Source** : notebook `ICT-01-PhiTrajectories-Python.ipynb` (cellule 12, output 0)
- **Strate** : 1 (Phi-trajectories)
- **Description visuelle** : Figure matplotlib unique (989×490, fond blanc, axes étiquetés) titrée « Trajectoires de Φ — reseau AND/OR ». Axe X = `pas de temps` (0 à 6, ticks entiers), axe Y = `Φ de l'état courant` (0 à ~2.3). **4 courbes en zigzag (markers cercles)** avec 4 départs : `depart 000` bleu (steep diagonale 2.3→0), `depart 100` orange (oscillation 2.3→0.2→2.3), `depart 010` vert (montée progressive vers pic 2.3 à pas 4 puis chute), `depart 111` rouge (montée pic 2.3 à pas 2 puis descente). Légende interne coin haut-droite avec marqueurs ronds. **Pulsations nettes** (alternance haut/bas) sans convergence asymptotique. Stats RGB PIL : moyenne (248.51, 248.06, 247.09), std (35.14, 35.48, 38.94) — std faible typique d'un scatter épars monochrome sur blanc. **Cohérent avec Φ PyPhi calculée par pulsations sur réseau AND/OR jouet**.
- **Contenu réel vérifié** : 4 courbes superposées, axe X = `pas de temps` (0 à 6), axe Y = `Φ de l'état courant` (0 à ~2.3), légende interne en haut-droite (4 départs : `depart 000` bleu, `depart 100` orange, `depart 010` vert, `depart 111` rouge). Les 4 trajectoires oscillent entre 0 et ~2.3, marquant des **pulsations** (alternance haut/bas) plutôt qu'une convergence asymptotique unique. La Φ est ici calculée par **PyPhi** sur un réseau AND/OR (jouet).
- **Alt-text (FR)** : Trajectoires de Φ sur réseau AND/OR — quatre départs (000, 100, 010, 111), Φ varie entre 0 et ~2.3 sur 6 pas de temps.
- **Poids** : 52.2 KB (natif)
- **Ce qui n'est PAS dans la figure** : un paysage de Φ en 2D/3D (Φ est tracée en 1D au cours du temps) ; la robustesse aux perturbations (c'est une mesure distincte dans une autre cellule du notebook).

## ict2-selfsorting.png

- **Source** : notebook `ICT-02-SelfSortingMorphogenesis-Python.ipynb` (cellule 7, output 0)
- **Strate** : 1 (tri auto-organisé)
- **Description visuelle** : Figure matplotlib 2 panneaux côte-à-côte (1189×390, fond blanc, axes étiquetés). **Gauche « Inversions (desordre global) »** : courbe rouge décroissante monotone de 60 à 0 sur axe X `pas` (0 à ~220), axe Y `inversions` (0 à 60). **Droite « Sortedness vs erreur de monotonie »** : courbe verte `sortedness` (0.5→1.0 croissante monotone), courbe orange `erreur de monotonie (locale)` (~0.5→0 décroissante avec fluctuations), axe X `pas` (0 à ~210), axe Y (0 à 1.0). Stats RGB PIL : moyenne (248.18, 247.65, 246.82), std (32.21, 32.27, 35.22) — std très faible = scatter épars lignes pures sur blanc. **Convergence des deux panneaux** = la séquence devient globalement ET localement monotone.
- **Contenu réel vérifié** : 2 panneaux côte-à-côte mesurant le **tri auto-organisé** d'une séquence par un automate minimal. **Panneau gauche** : `Inversions (désordre global)`, axe X `pas` (0 à ~220), axe Y `inversions` (0 à 60), courbe rouge décroissante monotone de 60 à 0 (signature d'un tri efficace : le nombre de paires désordonnées chute vers 0). **Panneau droite** : `Sortedness vs erreur de monotonie`, axe X `pas` (0 à ~210), axe Y (0 à 1.0) ; courbe verte = `sortedness` (0.5→1.0 croissante, monotonie globale), courbe orange = `erreur de monotonie (locale)` (~0.5→0 décroissante avec fluctuations, monotonie locale). Les deux panneaux convergent : la séquence devient globalement ET localement monotone.
- **Alt-text (FR)** : Métriques de tri auto-organisé : gauche « Inversions (désordre global) » 60→0 en ~220 pas, droite « Sortedness vs erreur de monotonie » (sortedness 0.5→1.0 croissante verte, erreur locale orange qui décroît).
- **Poids** : 40.2 KB (natif)
- **Ce qui n'est PAS dans la figure** : (a) la **dynamique Gray-Scott** sous-jacente (la morphogenèse Gray-Scott elle-même est rendue dans `ict9-gray-scott.png`) ; (b) la **robustesse aux cellules défectueuses** et l'**auto-réparation après ablation**, traitées dans ICT-3 et ICT-4 (figures distinctes).

## ict8-attractor.png

- **Source** : notebook `ICT-08-AttractorLandscapesEWS-Python.ipynb` (cellule 3, output 0)
- **Strate** : 2 (paysages d'attracteurs)
- **Description visuelle** : Figure matplotlib 4 courbes lisses superposées (839×440, fond blanc, axes étiquetés) titrée « Champ de vitesse : les zeros (dx/dt=0) sont les equilibres ». Axe X = `x (biomasse de vegetation)` (0 à 10), axe Y = `dx/dt` (-3.0 à +1.0), ligne horizontale noire `y=0` (équilibres). 4 courbes colorées : `c = 1.60` bleu (3 zéros = bistable : 2 stables + 1 instable), `c = 2.20` orange (2 zéros), `c = 2.60` vert (1 zéro + tangente), `c = 2.90` rouge (1 seul zéro, régime mono-stable). Légende interne coin haut-droite. **Bifurcation pli** lisible par la **disparition** des zéros entre `c=2.20` et `c=2.60`. Stats RGB PIL : moyenne (246.49, 245.72, 244.87), std (39.78, 39.74, 42.66) — std typique scatter épars sur blanc.
- **Contenu réel vérifié** : 4 courbes, axe X = `x (biomasse de végétation)` (0 à 10), axe Y = `dx/dt` (-3.0 à +1.0), légende interne avec 4 valeurs du paramètre de pâturage `c ∈ {1.60, 2.20, 2.60, 2.90}`. À `c=1.60` (bleu), 3 zéros (bistabilité : 2 équilibres stables + 1 instable) ; à `c=2.90` (rouge), 1 seul zéro (régime mono-stable). La bifurcation pli est lisible par la **disparition** des zéros entre `c=2.20` et `c=2.60`.
- **Alt-text (FR)** : Champ de vitesse dx/dt pour 4 valeurs du paramètre c (1.60, 2.20, 2.60, 2.90) — les zéros de la courbe sont les équilibres, leur nombre passe de 3 (bistable) à 1 au-delà du pli.
- **Poids** : 55.1 KB (natif)
- **Ce qui n'est PAS dans la figure** : les signaux précurseurs (variance ↑, autocorrélation ↑, τ de Kendall) — tracés dans des cellules séparées du notebook.

## ict9-gray-scott.png

- **Source** : notebook `ICT-09-AgencyRegeneration-Python.ipynb` (cellule 3, output 0)
- **Strate** : 2 (agence et régénération)
- **Description visuelle** : Figure **non-matplotlib** (heatmap numpy, 977×495) titrée « Morphogenese generative : la reaction-diffusion engendre un attracteur de forme » (sans `suptitle`, titre global inline au-dessus). **2 panneaux côte-à-côte** dark-field : **Gauche `t=0 : germe localise`** — carré rouge centré (germe pixelisé) sur fond bleu sombre uniforme quasi-noir (≈70% pixels noirs). **Droite `t=6000 : motif auto-entretenu (structure=0.0095)`** — ~25 taches rougeâtres-oranges (hot colormap) disposées en grille décalée, sur fond noir. Stats RGB PIL : moyenne (79.16, 72.30, 81.24), std (113.23, 110.50, 107.29) — **mean très bas** = fond noir dominant + **std très élevé** = signature d'un heatmap dark-field+rouge-oranger avec taches saturées. **Cohérent avec une réaction-diffusion Gray-Scott (Pearson 1993)** rendue via `imshow` (pas une courbe matplotlib).
- **Contenu réel vérifié** : 2 panneaux côte-à-côte illustrant la **morphogenèse générative** par réaction-diffusion (Gray-Scott, Pearson 1993). Le titre interne est « Morphogenèse générative : la réaction-diffusion engendre un attracteur de forme ». **Panneau gauche** : `t=0 : germe localisé` (carré rouge centré sur fond bleu sombre uniforme). **Panneau droit** : `t=6000 : motif auto-entretenu` (structure=0.0095, ~25 taches rougeâtres disposées en grille décalée, sur fond noir). C'est la **dynamique de référence** qu'ICT-9 soumet ensuite à l'ablation `do(·)` pour mesurer le gain de réparation (`repair_gain`).
- **Alt-text (FR)** : Morphogenèse générative (Gray-Scott) : t=0 (germe localisé en rouge sur fond bleu sombre) à gauche, t=6000 (motif auto-entretenu de ~25 taches rougeâtres, structure=0.0095) à droite.
- **Poids** : 51.8 KB (natif)
- **Ce qui n'est PAS dans la figure** : (a) les **métriques de tri auto-organisé** (inversions / sortedness), qui sont rendues dans `ict2-selfsorting.png` ; (b) le `repair_gain` formel (RD vs diffusion, mesure contrefactuelle) et l'ablation `do(·)`, qui sont calculés dans des cellules séparées du notebook avec leur propre figure dédiée.

## ict13-axelrod.png

- **Source** : notebook `ICT-13-AxelrodStrategicMorphodynamics-Python.ipynb` (cellule 13, output 0)
- **Strate** : 3 (morphodynamique stratégique)
- **Description visuelle** : Figure matplotlib 6 courbes (markers cercles) sur fond blanc (690×390, axes étiquetés) titrée « Gate 3 : effondrement sous bruit (TFT chute, Pavlov resists) ». Axe X = `bruit d'implementation ε` (0.00 à 0.40), axe Y = `score de tournoi` (~1.7 à 2.6). **6 stratégies** : `allc` bleu (chute brutale à ε=0.05 puis remontée ~2.1), `allD` orange (leader stable ~2.4-2.5), `tft` rouge (chute 2.6→2.1 puis remontée ~2.4), `grim` rouge-foncé, `pavlov` vert (stable ~2.5), `tft-generous` (intermédiaire). Légende interne en bas-gauche. Stats RGB PIL : moyenne (243.92, 243.28, 241.34), std (44.16, 43.50, 49.27) — std modéré typique de 6 courbes serrées sur blanc. **Note cross-validation L490 ★★★** : la légende in-situ README ligne 90 omet `tft-generous` (5 stratégies) mais la figure porte bien 6 courbes — alignement MANIFEST sur le contenu figurel réel.
- **Contenu réel vérifié** : 6 courbes, axe X = `bruit d'implémentation ε` (0.00 à 0.40), axe Y = `score de tournoi` (~1.7 à 2.6), légende interne en bas-gauche avec les 6 stratégies (`allc`/`alld`/`tft`/`grim`/`pavlov`/`tft-generous`). Le titre annonce « Gate 3 : effondrement sous bruit (TFT chute, Pavlov résiste) ». **Lecture critique** : `TFT` (rouge) chute de ~2.6 à ~2.1 entre ε=0 et ε=0.05, puis remonte progressivement vers ~2.4 à ε=0.40 ; `Pavlov` (vert) reste ~2.5 (quasi-stable) ; `allc` (bleu) plonge à 1.7 vers ε=0.10 puis remonte à ~2.1 ; `allD` (orange) reste leader ~2.4-2.5 ; `tft-generous` (violet) ~2.3-2.4 (intermédiaire).
- **Alt-text (FR)** : Gate 3 — effondrement sous bruit (TFT chute, Pavlov résiste) : 6 stratégies (allc/alld/tft/grim/pavlov/tft-generous) tracées par leur score de tournoi en fonction du bruit d'implémentation ε ∈ [0, 0.40].
- **Alt-text in-situ README** (ligne 90) : « Gate 3 — effondrement sous bruit (TFT chute, Pavlov résiste) : 6 stratégies (allc/alld/tft/grim/pavlov) » → **omet tft-generous** (cohérence croisée README ligne 88 qui mentionne « TFT généreuse » dans le corps narratif) — cross-validation L490 ★★★ « README source de précision » : alignement MANIFEST sur le contenu figurel réel (6 courbes) + README narratif.
- **Poids** : 46.7 KB (natif)
- **Ce qui n'est PAS dans la figure** : les Gates 1 (score pur sans bruit), 2 (seuil δ* du Folk theorem) et 4 (bassins d'invasion) — discutés dans le texte du notebook, tracés dans des cellules séparées.

## ict14-freeenergy.png

- **Source** : notebook `ICT-14-FreeEnergySurprise-Python.ipynb` (cellule 4, output 0)
- **Strate** : 4 (énergie libre et représentationnel)
- **Description visuelle** : Figure matplotlib 2 panneaux verticaux empilés (889×490, fond blanc, axe X partagé `temps` 0 à 300) titrée « Lacet de predation (sinus bruite) ». **Haut `position` (-1 à 1)** : 3 courbes — `proie o_t` bleue (signal sinusoidal bruité de référence), `p̂_t (anticipateur)` orange (oscille en avance sur `o_t`, variance plus grande), `persistance` verte (suit `o_t` avec léger retard). **Bas `surprise S_t` (~0.9 à 1.1)** : 2 courbes — `S_t - p̂` bleue (plus basse, plus prévisible), `S_t - persistance` orange (plus haute, fluctuations plus marquées). Légendes internes dans chaque panneau (coin haut-droit). Stats RGB PIL : moyenne (243.04, 241.31, 238.76), std (44.31, 39.79, 46.49) — std typique de 5 courbes bruitées denses sur blanc. **Dette de nommage discloseée** : nom de fichier trompeur (freeenergy) — figure illustre en réalité le **lacet de prédation** (batterie anticipation/persistance ICT-10). **Dette de rigueur audit #4 #7733** : `p̂` = anticipateur représentationnel, **PAS** prégnance thomienne (cf `docs/cadrage/grothendieckian-lens.md:41`).
- **Contenu réel vérifié** : 2 panneaux. **Haut** : `Lacet de prédation (sinus bruité)`, axe X `temps` (0 à 300), axe Y `position` (-1 à 1) ; 3 courbes (`proie o_t` bleue, `p̂_t (anticipateur)` orange, `persistance` verte) suivant un signal sinusoidal bruité. **Bas** : `surprise S_t` (~0.9 à 1.1), 2 courbes (`S_t - p̂` bleue, `S_t - persistance` orange) — la surprise de l'anticipateur est **plus basse** (signal plus prévisible pour `p̂`).
- **Alt-text (FR)** : Lacet de prédation (sinus bruité) : panneau haut = position proie/anticipateur/persistance, panneau bas = surprise S_t - p̂ (bleu) vs S_t - persistance (orange).
- **Poids** : 132.0 KB (natif)
- **Ce qui n'est PAS dans la figure** : (a) la **free energy** formelle $F = E_q[\ln q(\theta) - \ln p(\theta, x)]$ et l'**expected free energy** $G$ (interviennent dans le texte mais ne sont pas tracées) ; (b) une généralisation à un signal non sinusoidal.
- **Dette de nommage (disclose)** : le nom de fichier `ict14-freeenergy.png` est **trompeur** — la figure illustre en réalité le **lacet de prédation** (batterie anticipation/persistance développée dans ICT-10 sur la catastrophe fronce) appliquée à un signal sinusoidal bruité. Le lien avec la free energy est dans le texte du notebook, mais la figure rendue ici est un cas d'application du **représentant interne `p̂`**. Le nom de fichier est conservé par compatibilité avec la table d'extraction.
- **Dette de rigueur (audit #4, [#7733](https://github.com/jsboige/CoursIA/issues/7733))** : le `p̂` tracé ici est un **anticipateur représentationnel** (extrapolation du signal) — il **n'est pas** la *prégnance* thomienne (« fluide invasif entre formes saillantes », qui serait plutôt une *section locale* au sens de Grothendieck, cf. `docs/cadrage/grothendieckian-lens.md:41`). La correspondance `p̂ ↔ anticipation` du Ch.2 « Le Langage » de Thom est *nommée*, pas démontrée — cf. note de rigueur dédiée dans [ICT-0-Framing.md § « Note de rigueur »](../ICT-0-Framing.md#note-de-rigueur--prégnance-thomienne-vs-représentant-interne-p-audit-4-7733).

## ict16-mdl-bosse.png

- **Source** : notebook `ICT-16-MDLTwoPartCode-Python.ipynb` (cellule 11, output 0)
- **Strate** : 5 (MDL et bosse complexité-entropie)
- **Description visuelle** : Figure matplotlib 1 panneau (839×490, fond blanc, axes étiquetés) titrée « Bosse complexite-entropie (Crutchfield-Feldman 1998) — La complexite statistique est maximale a entropie intermediaire ». Axe X = `Taux d'entropie H (bits/symbole)` (0.4 à 3.0), axe Y = `Longueur de code du modele (bits)` (-50 à +40). **3 éléments superposés** : points gris `trajectoires echantillonnees` (n=20, dispersion large), courbe rouge avec marqueurs `mediane par bucket (bosse)` (creux H≈1.0 C≈-50, pic marqué H*≈2.0 C*≈38), étoile dorée `pic C*≈38.3 bits a H*≈1.99`. **Bosse complexité-entropie canonique** Crutchfield-Feldman 1998 : complexité statistique maximale à entropie intermédiaire. Légende interne coin bas-droit. Stats RGB PIL : moyenne (246.06, 244.47, 244.37), std (39.89, 43.87, 44.40) — std typique scatter épars sur blanc.
- **Contenu réel vérifié** : 1 panneau, axe X `Taux d'entropie H (bits/symbole)` (~0.4 à 3.0), axe Y `Longueur de code du modèle (bits)` (-50 à +40). Points gris = `trajectoires échantillonnées` (n=20), courbe rouge avec marqueurs = `mediane par bucket (bosse)`, étoile dorée = `pic C*≈38.3 bits à H*≈1.99`. La médiane montre un **creux** vers H≈1.0 (C≈-50) puis un **pic** marqué à H*≈2.0 (C*≈38). C'est la **bosse complexité-entropie** canonique de Crutchfield-Feldman 1998 : la complexité statistique du modèle est maximale à entropie intermédiaire.
- **Alt-text (FR)** : Bosse complexité-entropie (Crutchfield-Feldman 1998) — axe X = taux d'entropie H (bits/symbole, 0.5-3.0), axe Y = longueur de code du modèle C (bits, -40 à +40) ; points gris = trajectoires échantillonnées, courbe rouge = médiane par bucket, étoile = pic C*≈38.3 bits à H*≈1.99.
- **Poids** : 57.0 KB (PIL optimisé)
- **Ce qui n'est PAS dans la figure** : la généralisation cross-substrat (gate Φ/F/K d'ICT-15, qui prend la bosse comme observable d'un des substrats du banc). La bosse est ici calculée pour un seul couple (modèle, famille de sources).

## ict-synthese-gate4-phifk.png

- **Source** : notebook `ICT-Synthese-CrossSubstrat.ipynb` (cellule 23, output 5)
- **Strate** : 5 (capstone cross-substrat — convergence Φ/F/K)
- **Description visuelle** : Diagramme en barres groupées vertical (740×349, fond blanc, axes étiquetés) titré « Gate 4 — convergence Φ/F/K sur 4 substrats ». Axe X = 4 substrats catégoriels (`S1_tri`, `S2_bistable`, `S3_replicateur`, `S4_LLM`), axe Y = `gain reel vs controle degénéré` (0 à 4.0). **3 séries de barres** : `Φ (ec_gain)` bleu, `F (fe_gain)` orange, `K (k_gain)` vert. **Lecture** : Φ et F ordonnent tri > réplicateur > bistable > LLM (covariant, τ Kendall = +1.00) ; K ordonne autrement (réplicateur et bistable au-dessus du tri). S4_LLM nettement plus faible (~0.1-0.3) sur les 3 jambes vs S1_tri dominant (~2.1-4.1). Légende interne coin haut-droit. Stats RGB PIL : moyenne (224.42, 224.42, 222.59), std (72.07, 62.44, 72.82) — **std très élevé** = signature de 12 barres colorées pleines sur fond blanc.
- **Contenu réel vérifié** : barres groupées par substrat (tri auto-organisé, bistable, réplicateur d'Axelrod, activations SAE d'un LLM), trois jambes (Φ = ec_gain, F = fe_gain, K = k_gain). Φ et F covarient et ordonnent les substrats à l'identique (tri > réplicateur > bistable > LLM, τ de Kendall Φ-F = +1.00) ; K ordonne autrement (réplicateur et bistable au-dessus du tri). Le substrat LLM, le plus riche en représentations, est le plus faible sur les trois jambes.
- **Alt-text (FR)** : Capstone ICT-Synthese gate 4 — convergence Φ/F/K sur quatre substrats : barres groupées par substrat, trois jambes (Φ, F, K) ; Φ et F covarient (tri > réplicateur > bistable > LLM, τ Kendall = +1.00), K ordonne autrement.
- **Poids** : 20.0 KB (PIL optimisé)
- **Ce qui n'est PAS dans la figure** : la jambe temporelle (réversibilisation) du capstone, tracée dans `ict-synthese-gate5-reversibilisation.png` ; le 5e substrat (Gray-Scott) testé par le notebook n'est pas rendu dans cette figure.

## ict-synthese-gate5-reversibilisation.png

- **Source** : notebook `ICT-Synthese-CrossSubstrat.ipynb` (cellule 26, output 2)
- **Strate** : 5 (capstone cross-substrat — jambe temporelle ICT-18)
- **Description visuelle** : Diagramme en barres groupées vertical (740×330, fond blanc, axe Y **symlog** `asymetrie temporelle (echelle symlog)` 10⁻³ à ~3.0) titré « Gate 5 — reversibilisation : tri irreversibles, bistable reversible ». Axe X = 4 substrats catégoriels (`S1_tri`, `S2_bistable`, `S3_replicateur`, `S4_LLM`). **2 séries de barres** : `σ_real (production d'entropie)` violet (saturé pour S1_tri), `dist(reel, reversible)` cyan-clair. **Lecture** : S1_tri fortement irréversible (barres hautes >1, compression symlog), S2_bistable **quasi-nul invisible sur symlog** (équilibre détaillé = réversibilité thermodynamique), S3_replicateur et S4_LLM faibles mais visibles (>0). Légende interne coin haut-droit. Stats RGB PIL : moyenne (214.03, 220.79, 229.29), std (62.90, 61.08, 45.34) — **B mean > R mean** = signature de la dominante cyan-clair ; **R std > B std** = saturation violette S1_tri. **Cohérent avec un bar plot symlog matplotlib** (échelle log autour de 0).
- **Contenu réel vérifié** : par substrat (tri, bistable, réplicateur, LLM), production d'entropie σ_real et distance à la chaîne réversibilisée, sur échelle symlog. Le tri est fortement irréversible (σ élevé, trajectoire directionnelle, barres visibles en haut) ; le bistable (S2) est **quasi-nul et donc invisible sur l'échelle symlog** — équilibre détaillé satisfait (réversibilité thermodynamique) ; le réplicateur et le LLM restent faibles mais leurs barres sont visibles car >0 après compression symlog. L'asymétrie temporelle discrimine les substrats de façon orthogonale aux jambes Φ/F/K.
- **Alt-text (FR)** : Capstone ICT-Synthese gate 5 — jambe temporelle de l'émergence (réversibilisation ICT-18) : par substrat, production d'entropie σ_real et distance à la chaîne réversibilisée (échelle symlog) ; tri fortement irréversible (barres hautes), bistable S2 quasi-nul et invisible sur symlog (équilibre détaillé), réplicateur et LLM faibles mais visibles.
- **Poids** : 21.2 KB (PIL optimisé)
- **Ce qui n'est PAS dans la figure** : les jambes Φ/F/K statiques du capstone, tracées dans `ict-synthese-gate4-phifk.png`.

## ict40-spatialcomputing.png

- **Source** : notebook `ICT-40b-AnalogCognitionWaves-Python.ipynb` (cellule 12 en numérotation 1-based, index outil 11, output 0)
- **Strate** : distillation externe — hors strates (grain [#16550](https://github.com/jsboige/CoursIA/issues/16550), Miller-Brincat-Roy 2026)
- **Description visuelle** : Grille 2×3 de cartes de chaleur (downscale PIL 800px). Ligne 1 : « stencil — contexte 1 (premier) » en colormap **magma** (bandes diagonales claires sur fond sombre, colorbar verticale 0-1), puis « objet A — contexte 1 » et « objet B — contexte 1 » en **viridis** (blobs lisses jaune-vert sur fond violet sombre). Ligne 2 : mêmes panneaux pour le contexte 2, avec une bande diagonale nettement différente. Axes gradués 0-80 (x) / 0-40 (y) sur tous les panneaux. Vision-QA MiniMax M3 (po-2023, 2026-09-18) : aucun panneau vide, aucun texte tronqué.
- **Contenu réel vérifié** : six panneaux rendus — deux stencils inhibiteurs (un par contexte) et, pour chaque contexte, l'expression spatiale des deux objets sous ce stencil. Les patterns d'expression diffèrent entre les deux lignes alors que les poids synaptiques sous-jacents sont identiques : c'est le gating Spatial Computing (Lundqvist et al. 2023) tel qu'opérationnalisé dans ICT-40.
- **Alt-text (FR)** : Grille 2×3 — stencil inhibiteur d'un contexte (magma) et expression des deux objets sous ce stencil (viridis), pour deux contextes : le même objet produit deux patrons différents sans re-câblage.
- **Poids** : 197.6 KB (PIL optimisé, max_dim 800 pour respecter le plafond 200 KB)
- **Ce qui n'est PAS dans la figure** : la carte des voxels ayant changé de préférence d'objet ni l'indice de sélectivité mixte numérique (sortie de texte de la même cellule) ; l'angle entre sous-espaces de codage (cellule suivante).

## ict40-analogcombos.png

- **Source** : notebook `ICT-40b-AnalogCognitionWaves-Python.ipynb` (cellule 21 en numérotation 1-based, index outil 20, output 0)
- **Strate** : distillation externe — hors strates (grain [#16550](https://github.com/jsboige/CoursIA/issues/16550), Miller-Brincat-Roy 2026)
- **Description visuelle** : Grille 2×4 de cartes de chaleur en colormap **magma** (downscale PIL 950px). Ligne 1 : « onde d'ordre — premier » (bande diagonale claire), « onde de mode — appariement » (bande horizontale), puis les deux patrons sommes étiquetés « premier·appariement » et « premier·rappel ». Ligne 2 : onde d'ordre « second » (diagonale miroir), onde de mode « rappel », et les deux autres sommes. Pas de colorbar sur cette figure (échelle implicite magma). Vision-QA MiniMax M3 (po-2023, 2026-09-18) : aucun panneau blanc ni texte tronqué.
- **Contenu réel vérifié** : huit panneaux — les deux ondes de contrôle de chaque type de contexte (ordre : premier/second ; mode : appariement/rappel) et les quatre patrons obtenus par sommation, tous distincts à l'œil. C'est l'opérationnalisation de la Fig. 7 du préprint : l'intersection de contraintes par superposition, une combinaison = un patron.
- **Alt-text (FR)** : Grille 2×4 — onde d'ordre et onde de mode, puis les quatre patrons sommes distincts, un par combinaison de contextes (premier/second × appariement/rappel).
- **Poids** : 168.8 KB (PIL optimisé)
- **Ce qui n'est PAS dans la figure** : la matrice des distances cosinus entre les quatre sommes et l'effet d'interaction numérique (output 1 de la même cellule) ; le témoin analytique 2|cos(Δφ/2)| (cellule précédente).

---

**Total** : 11 figures, ~850 KB. **Politique** (#5654) : ≤200 KB/fichier, downscale ≤1200 px max. PNG lossless natif pour les courbes matplotlib (netteté du texte privilégiée). Arc pédagogique : Strate 1 (Φ-trajectories + tri Gray-Scott) → Strate 2 (bifurcation pli May + métriques réparation) → Strate 3 (Axelrod régime-dépendance) → Strate 4 (lacet anticipation/persistance) → Strate 5 (bosse Crutchfield-Feldman MDL + capstone cross-substrat Φ/F/K & réversibilisation) → distillation externe (Spatial Computing + calcul analogique ICT-40). Chaque figure est placée **dans la section du README où le notebook correspondant est discuté** (et non dans une section Galerie isolée), conformément à la doctrine figures amendée 2026-07-09.
