LifePlay-Revival/Docs/28_Synthese_Migration_UE58.md
edujiro5972 8084622450 LifePlay UE 5.8 : état de développement au 2026-10-19
Tickets : REP1-T4

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 22:57:42 +02:00

351 lines
40 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 28 — Synthèse de la migration UE 5.5 → 5.8 (audit UA, porte G-U, lot SK)
Fiche U0-DOC1 — Niveau N1 — Modèle prévu sonnet | utilisé sonnet — Agent lp-writer — Skills sk-protocol, lp-doc, lp-lot
Mise à jour U1-DOC — Niveau N1 — Modèle prévu sonnet | utilisé claude-sonnet-5-5 — Agent lp-writer
Date : 2026-10-08. Complète le plan [27_Plan_Migration_UE58.md](27_Plan_Migration_UE58.md) (décisions et lots : on n'y
revient pas ici). Ce document se suffit à lui-même : il reprend les constats de l'audit UA, l'effort et les risques, les
décisions de la porte G-U, l'arbre de compétences des sous-agents (lot SK) et tient le journal des lots U0 à U9.
## 1. Objet et statut des sources
- Les fiches de travail de l'audit UA et du lot SK vivent dans le dossier `Docs/Migration/etat/`, **local et hors git**
(décision de l'utilisateur, 2026-10-08) ; copie de sûreté : `D:\Game\LifePlay_Backup_5.5\etat\`. Ce document les remplace
dans le dépôt ; il ne renvoie à aucune d'elles par lien.
- Sources de synthèse : fiches UA-T1 à UA-T7 (jeu, plugins, mods, moteur, essai de compilation, synthèse, outils),
UA-FAB, fiches SK-T1 à SK-T4. L'essai de compilation 5.8 (UA-ESSAI) **fait foi** sur les audits antérieurs.
- Conventions (comme les docs 25 à 27) : **établi** = constaté dans un fichier ou un journal, avec référence ;
**estimé** = déduit, méthode dite ; **incertain** = ne se tranche que par un essai nommé. Les décisions appartiennent à
l'utilisateur. Unité d'effort : 1 séance ≈ une demi-journée ≈ 3 h de travail orchestré, builds compris.
- Moteurs : 5.5.4 (projet actuel) et 5.8.3 (CL 58210709, installé le 2026-10-08) ; 4.27.2 abandonné.
## 2. Audit UA — constats établis par domaine
### 2.1 Jeu (UA-T1)
| Constat | Statut | Preuve |
|---|---|---|
| Module `LifePlay` : 51 fichiers, 9 212 lignes, 25 UCLASS dont 16 sous-systèmes ; 17 fonctions exposées aux Blueprints | établi | `Source/LifePlay/*.h` (UA-JEU § 1) |
| Module `LifePlayEditorTools` : 69 fichiers, 7 915 lignes, 32 UCLASS (tous des commandlets) | établi | `Source/LifePlayEditorTools/` (UA-JEU § 1) |
| Cibles en `BuildSettingsVersion.V5` et `Unreal5_5` : elles bloquent la cible éditeur sous 5.8 | établi | `Source/LifePlay.Target.cs:11-13`, `Source/LifePlayEditor.Target.cs:11-13` ; essai A (voir 2.5) |
| 40 lignes `FTSTicker` dans 14 sous-systèmes ; `FTSTicker`, `FSavePackageArgs`, `IPluginManager::GetEnabledPlugins*` inchangés en 5.8 | établi | `LPColorGradeSubsystem.cpp:76,81` ; en-têtes 5.8 (UA-MOTEUR c20) |
| 32 commandlets : 18 classés « portage 4.27 », 1 portage/optimisation, 3 diagnostics ponctuels, 10 outils actifs | établi (décompte) ; classement à confirmer par le propriétaire | en-têtes des `*Commandlet.h` (UA-JEU § 3) |
| `Content` : 9 068 `.uasset` dont 8 270 sous `Heavy` (6 219,3 Mo) et 798 hors `Heavy` ; `BPs/GI` 51,9 Mo | établi | `find Content -name '*.uasset'` (UA-JEU § 4) |
| Rendu verrouillé : TAA (`r.AntiAliasingMethod=2`), sans Lumen, sans VSM, SSR ; DX12 | établi | `Config/DefaultEngine.ini` (UA-JEU § 5.2) |
| Empaquetage pak + IoStore, `StagingDirectory` codé en dur, clé `bUseZenStore` absente (le défaut moteur s'applique) | établi | `Config/DefaultGame.ini` (UA-JEU § 5.3, UA-MOTEUR (a)) |
| `r.TranslucencyLightingVolumeDim` renommée `r.TranslucencyLightingVolume.Dim` (alias déprécié, appliqué avec avertissement) | établi | `UE_5.8/Engine/Source/Runtime/Renderer/Private/TranslucentLighting.cpp:3398` |
| `r.PostProcessAAQuality` et `r.MinScreenRadiusForCSMDepth` introuvables dans le code des deux moteurs (clés probablement déjà sans effet en 5.5) | incertain | essai : lire la valeur par la console (UA-MOTEUR c11, c12) |
| 10 scripts codent le chemin `UE_5.5` (2 côté jeu, 8 côté addon) | établi | `Tools/BuildDebug.ps1:19`, `Tools/RunCommandlet.ps1:20` (UA-OUTILS § 2) |
| Graphes Blueprint : nœuds dépréciés par 5.6 à 5.8 sur `GI`, `Person`, `UI/ModManager`, `UI/ModuleTick`, `UI/MainMenu`, `CharGen` | incertain | aucun `.uasset` ouvert en UA ; Blueprint Reader en 5.5 puis `CompileAllBlueprints` en 5.8 |
### 2.2 Plugins (UA-T2, corrigé par l'essai)
| Constat | Statut | Preuve |
|---|---|---|
| `LPAnimCore` : 5 fichiers, 783 lignes ; `ModdingExtra` : 6 fichiers, 655 lignes, 12 assets y font référence | établi | `Plugins/LPAnimCore`, `Plugins/ModdingExtra` (UA-PLUGINS § 1-2) |
| `UAnimSequence::GetCompressedTrackToSkeletonMapTable` n'existe plus : rupture certaine | établi | `Plugins/LPAnimCore/Source/LPAnimCore/LPCoupleSimCore.cpp:127` (essai A1/A2) |
| `GetBoneTransform(..., double Time, ...)` à `LPCoupleSimCore.cpp:155` : probablement sans correction (le même appel compile) | incertain | `LPPoseMeasure.cpp:1283` compile (`essai-A1.log:99-100`) ; masqué par l'erreur de `:127` |
| `StreetMap` (tiers, MIT) compile : 0 erreur, 7 C4996 ; 310 assets du jeu le référencent ; amont figé depuis 2023 | établi (compilation) ; estimé (amont) | `StreetMapSceneProxy.cpp:21`, `StreetMapComponentDetails.cpp:36,51,157,165,173,299` ; recherche web UA-PLUGINS |
| Rendu du proxy `StreetMap` sous le renderer 5.8 identique à 5.5 | incertain | captures même cadrage (U5/U6), `LPCheckStreetMap` 280/280 |
| `McpAutomationBridge` compile sous 5.8 (0 erreur) mais ajoute ≈ 20 min à un build complet | établi | durée 25,5 min (A2) contre 4,9 min (B) |
| `Fab` et `Bridge` sont présents dans 5.8 (l'hypothèse « absents » est infirmée) | établi | UA-ESSAI § 4 ; le `.uproject` ne les marque pas `Optional` |
| Addon : `LPSandbox`, `LPAnimMeasure`, `LPModTools` compilés ; 1 C4996 | établi | `essai-A1.log:81-304` ; `LPHairFromStaticMeshCommandlet.cpp:430` |
### 2.3 Mods — contrat figé (UA-T3)
| Constat | Statut | Preuve |
|---|---|---|
| Le contrat compte 17 surfaces (S1-S17) : fichiers texte (`.lpmod`, `.lphair`, données de module, `GI.ModEnableds`, `GameSettings.sav`), gestionnaire de mods, plugin `Mods/<id>/`, conteneur cuit, version de référence | établi | UA-MODS § 1 ; ex. `Source/LifePlay/LPModInfoSubsystem.cpp:49-72` |
| Aucune surface texte ne change de format avec le moteur ; le code lecteur est à recompiler, les Blueprints à réenregistrer | établi | UA-MODS § 2 |
| Tout conteneur cuit pour 5.5 est à recuire : cuisson sans version, le chargeur applique alors la version du moteur courant | établi | `ProjectParams.cs:1989`, `CookCommand.Automation.cs:44-46`, `AsyncLoading2.cpp:6525-6528` |
| Un conteneur 5.5 monté par 5.8 : refus propre, erreur de chargement ou plantage (le TOC 5.5 serait accepté) | incertain | test T4 de U7 (`IoStore.cpp:1140-1147`) |
| L'avertissement de version ne couvre que les modules cochés, 2 s après le démarrage | établi | `LPModInfoSubsystem.cpp:124-150` |
| Versions de référence présentes : `Releases/2026.10.1.5` et `2026.10.1.6` (1,3 Go chacune) ; il faut recréer `2026.10.2.0` | établi | UA-MODS S12 ; `.gitignore:46` |
| 3 mods d'assets à recuire (1 de coiffures, 2 d'animations) ; mods texte inchangés | établi | UA-MODS § 1 |
| Interaction du Zen store avec `-createreleaseversion` / `-basedonreleaseversion` | incertain | neutralisée par la décision D1 ; sinon test R1 de UA-MODS |
| Une sauvegarde `GameSettings.sav` 5.5 est relue par 5.8 | estimé | en-tête versionné (`GameplayStatics.cpp:123-141`) ; test T6 |
### 2.4 Moteur (UA-T4)
| Constat | Statut | Preuve |
|---|---|---|
| Cible Windows minimale : Windows 10 (`0xA00`) ; Windows 7/8 exclus | établi | `UE_5.8/Engine/Config/Windows/Windows_SDK.json:89` |
| MSVC `14.44.35207` **n'est pas banni** (le ban vise la version du compilateur 19.44.0-35210) ; 5.8 préfère 14.50.35717+ puis 14.44.35207+ | établi | `MicrosoftPlatformSDK.cs:1156` ; `Windows_SDK.json:31-46` (correction apportée à UA-MOTEUR) |
| Zen store activé par défaut en 5.8 (5.5 : `False`) | établi | `UE_5.8/Engine/Config/BaseGame.ini:95` |
| `FJsonObject` : clés `FStringView`, `Values` n'est plus un `TMap<FString,...>` sauf `UE_JSONOBJECT_LEGACY_STRING_KEYS=1` | établi | `UE_5.8/.../Json/Public/Dom/JsonObject.h:36-53,153-183` |
| Audio Windows par défaut : WASAPI (5.5 : XAudio2) | établi | `UE_5.8/Engine/Config/Windows/WindowsEngine.ini` |
| Substrate, Lumen, MegaLights : défauts inchangés pour un projet existant ; TAA reste disponible | établi | `RenderUtils.cpp:2069` ; `RendererSettings.h:194-199` (UA-MOTEUR c14-c16) |
| Navigation, registre d'assets, `FString::ParseIntoArray` / `Find` : API présentes, sémantique non modifiée | établi (code) ; incertain (corps non comparé ligne à ligne) | `String.cpp.inl:479,1356-1365` ; test `LPTestStringCompat` en U3 |
| Nouvelles clés de scalabilité de base (`r.Fog.SeparateComposition`, volumes hétérogènes) peuvent changer les brouillards aux niveaux 0-1 | établi (clés) ; estimé (effet visuel) | diff de `BaseScalability.ini` 5.5/5.8 ; contrôle en U6 |
| Notes officielles 5.6 et 5.7 lues en entier seulement pour « Upgrade Notes » et « Platform SDK Upgrades » (reste filtré par mots-clés) | incertain | diff ciblé du code moteur en U1 |
### 2.5 Essai de compilation 5.8 (UA-T5) — copie jetable, aucune correction
Commande commune : `Build.bat LifePlayEditor Win64 Development -Project=<copie> -WaitMutex -NoHotReload` sur 5.8.3 complet ;
toolchain retenue par UBT : `14.50.35739` (VS 2026), SDK 22621, .NET 10 embarqué.
| Passage | Réglage de la copie | Résultat | Durée |
|---|---|---|---|
| A | cibles d'origine (V5) | code 6, blocage de règle de cible avant compilation, 0 erreur C++ | 9,9 s |
| A1 | `bOverrideBuildEnvironment = true` | 5 lignes d'erreur (2 causes), 9 C4996 ; 120 compilations lancées sur 143 | 26,5 min |
| A2 | `BuildSettingsVersion.Latest` | mêmes erreurs et avertissements que A1 : le mode strict n'ajoute rien | 25,5 min |
| B | A2 sans `McpAutomationBridge` | mêmes erreurs ; 7 C4996 (2 modules non atteints) | 4,9 min |
**Les 2 erreurs de compilation** (établies, identiques en A1, A2 et B) :
| # | Cause | Fichier:ligne | Erreurs |
|---|---|---|---|
| 1 | `UAnimSequence::GetCompressedTrackToSkeletonMapTable` supprimée du moteur | `Plugins/LPAnimCore/Source/LPAnimCore/LPCoupleSimCore.cpp:127` | C2039, C2530, 2 × C2143 |
| 2 | `TMap<FString,...>::Contains` appelé avec le nouveau type de clé `FJsonObject` | `Plugins/ModdingExtra/Source/ModdingExtra/Private/LPDataCache.cpp:198` | C2664 |
9 avertissements C4996 (établi) : 7 dans `StreetMap` (`GetMaterialRelevance`, `GetDetailsView` ×2, `FSlateFontInfo` ×3,
`ImportVersion`), 1 dans `LPDumpAssetsCommandlet.cpp:110` (`GetObjectsWithPackage(bool)`), 1 dans l'addon
(`LPHairFromStaticMeshCommandlet.cpp:430`). Statuts : toutes les unités de compilation des 9 modules ont été compilées
(établi, `essai-A1.log:81-304`) ; les 23 actions non exécutées sont des éditions de liens et la cible (estimé) ; le
bilan complet des avertissements des modules non atteints reste incertain.
### 2.6 Outils et chaîne (UA-T7, UA-FAB)
| Constat | Statut | Preuve |
|---|---|---|
| VS 2022 17.14 (`D:\Game\VS2022`) et VS 2026 18.10 coexistent ; MSVC 14.38.33130, 14.44.35207 et 14.50 installés | établi | `vswhere` (UA-OUTILS) ; UA-SYNTHESE § 6 |
| UBT 5.5 retient 14.38 ; UBT 5.8 retient 14.50.35739 depuis VS 2026 | établi | journal UBT 5.5 du 2026-10-07 ; `essai-A1.log` |
| Un build 5.5 reste sur le toolset 14.38 après l'ajout de VS 2026 | incertain | build 5.5 de contrôle en U0-T2b |
| GPU RX 6600M (8 Go), pilote 26.8.1 conforme (suggéré 26.2.2) ; RAM 63,3 Go ; 8 cœurs | établi | `BaseHardware.ini:85-87` (UA-OUTILS § 1) |
| `D:` est un NVMe en boîtier USB (moteurs, projet, DDC) : latence d'E/S plus forte | établi | UA-OUTILS § 1 |
| Zen commun : installation 5.6.6, remplacée par 5.8.13 au premier lancement de l'éditeur 5.8, puis utilisée par 5.5 | estimé | `Common\Zen\Install` ; test : lancer l'éditeur 5.5 après 5.8 |
| Bibliothèque Fab : 394 éléments acquis, 11 outils retenus en priorité 1 (Blueprint Reader, Blueprint Backup & Restore…) | établi | UA-FAB (lecture seule, rien installé) |
Bilan du § 2 : **48 constats étiquetés** (45 lignes des tableaux 2.1 à 2.4 et 2.6, plus les 3 statuts de l'essai 2.5) :
33 établis, 3 estimés, 9 incertains, 3 mixtes (deux statuts dans la même ligne). Les passes, erreurs et avertissements
de l'essai (tableaux 2.5) sont des mesures établies, non recomptées ici.
### 2.7 Cartographie U1 (2026-10-08, lecture seule ; hors du bilan des 48 constats ci-dessus)
Contrat des mods et moteur (U1-T1) :
| Constat | Statut | Preuve |
|---|---|---|
| Contrat des mods inchangé en 5.8 : découverte `Mods/`, activation par défaut, montage pak ordre 0, point de montage, registre d'assets dans le paquet, `-basedonreleaseversion` ; risque R2 de UA-MODS écarté par le code, confirmation en build empaqueté (test T-M1, U7) | établi (code) ; incertain (empaqueté) | lecture des sources 5.8 ; test T-M1 |
| Formats cuits : pak 11 → 12, en-tête de conteneur 4 → 5, version d'objet UE5 1013 → 1018 : recuisson obligatoire | établi | en-têtes 5.5 / 5.8 |
| Un mod cuit pour 5.8 dans le jeu 5.5 : arrêt fatal au démarrage | estimé | `PakFile.cpp:300` |
| `bUseZenStore` : False (5.5) → True (5.8) ; le projet ne le fixe pas : écriture explicite en U3 (D1) | établi | `BaseGame.ini:95` |
Correctifs de compilation (U1-T2) : ni compilés ni appliqués (statut « proposé, non compilé »).
| # | Site | Correctif retenu | Garde | Équivalence |
|---|---|---|---|---|
| R1 | `LPCoupleSimCore.cpp:127` (fichier CRLF) | `GetCompressedData().Get().CompressedTrackToSkeletonMapTable` (`AnimSequence.h:885`, `AnimCompressionTypes.h:780`) ; même migration chez Epic (`MovieSceneSkeletalAnimationSection.cpp:722-723`) | `UE_VERSION_OLDER_THAN(5, 8, 0)` | jeu cuit : établi ; éditeur : estimé |
| R2 | `LPDataCache.cpp:198` | `FString(File.Key.ToView())` (`SharedString.h:92-95`) ; variante sans garde `FString(*File.Key)` | oui (forme recommandée pour D11) | établi (mêmes caractères) |
| `:155` | `LPCoupleSimCore.cpp:155` | aucun : conversion implicite `double` → `FAnimExtractContext` (constructeur non `explicit`, `AnimationAsset.h:303`) | non | estimé ; preuve au premier build U3 |
Piste `IAnimationDataModel` écartée : API réservée à l'éditeur. Repli D11 (b) par macro `UE_JSONOBJECT_LEGACY_STRING_KEYS`
impossible avec le moteur installé (`TargetRules.cs:2776-2778`, DLL Json compilée avec la valeur 0) : seul le correctif de
code vaut. Autres clés `FJsonObject` du jeu et de l'addon : compilent, copies silencieuses sans effet (établi).
Reliquats 4.27 (U1-T3) : 32 commandlets dont 16 à retirer (15 `LPFix*` et `LPConvertAtmosphericFog`) et 2 gardés
(`LPResavePackages`, `LPTestStringCompat`) ; 3 réglages de chemin moteur (`LifePlay.uproject:3`, `Tools/BuildDebug.ps1:19`,
`Tools/RunCommandlet.ps1:20`) ; environ 411 mentions 4.27 dans 28 docs (établi, décompte). Décisions : plan 27, § U2.
Blueprints (U1-T4, commandlet en lecture seule `LPAuditBlueprintCalls` de l'addon, relevé en 5.5 puis croisé avec les
en-têtes 5.8) :
| Mesure | Valeur | Statut |
|---|---|---|
| Relevé 5.5 | 110 Blueprints (27 Blueprint, 73 Widget, 7 Anim, 3 ControlRig), 977 graphes, 46 617 nœuds, 498 membres natifs (449 fonctions, 49 propriétés), 63 classes de nœud, 0 échec | établi |
| Croisement 5.8 | 458 membres inchangés, 25 propres au projet, 15 à signature changée (931 nœuds) ; aucun redirigé ni retiré | établi |
| 15 signatures changées | surtout 11 `Array_*` passés en `UPARAM(ref)` : tolérés par `AllowedMutableContainerFunctions` (`BaseEditor.ini:197-215`, « REMOVE IN UE 5.9 ») ; la liste tolérée compte 13 entrées, pas 11 (U5) ; diagnostic U5 `bEnableMutableContainerWarnings` : 0 nœud, aucune correction avant 5.9 | établi (tolérance) ; fin en 5.9 |
| Classes de nœud dépréciées | `K2Node_InputAction`, `K2Node_InputAxisEvent` : 38 nœuds dans `/Game/BPs/PC`, sans effet tant que `DeprecatedActionAndAxisNames` est vide | estimé |
| Nœud à corriger en 5.8 | aucun | estimé |
| Non couverts | `.umap`, nœuds Make/Break, AnimGraph, RigVM | incertain (U5) |
## 3. Effort et risques (UA-SYNTHESE)
Marge : bornes hautes = bornes basses × 1,5 (première exécution en 5.8) + une escalade de niveau par lot ; scénario
noir (échec de T4 **et** Blueprint cassé **et** écart StreetMap) : +3 à +5 séances. Méthode : UA-SYNTHESE § 7 (postes
décomposés, cycles de build mesurés, durées 5.5 × facteur 5.8).
| Lot | Contenu | Séances | Niveaux | Durée machine |
|---|---|---|---|---|
| U0 Préparation | VS Installer, épinglage 5.5, build de contrôle, tag `ue5.5-final`, copie 5.8, décisions | 1 - 1,5 | N0, N1, N2 | copie 5-15 min |
| U1 Cartographie | diff moteur ciblé, spec des 2 correctifs, relevé Blueprint Reader | 1 - 2 | N1, N3 | — |
| U2 Retrait 4.27 | 16 commandlets, point unique du chemin moteur | 1 - 1,5 | N1, N0 | build < 1 min |
| U3 Bascule et compilation | 2 correctifs, 9 C4996, premier lancement éditeur 5.8, `LPTestStringCompat` | 1,5 - 3 | N3, N0, N4 | 4-8 builds de 8-12 min (estimé) |
| U4 Plugins et addon | StreetMap, Mcp, scripts de l'addon, tournée Mesure | 2 - 3,5 | N3, N1, N2 | 2-4 builds |
| U5 Contenu | resave hors `Heavy`, `CompileAllBlueprints`, `LPCheckStreetMap`, cuisson à froid | 2 - 4 | N1, N0, N3 | resave 0,2-3 h ; cook à froid 1-3 h (incertain) |
| U6 Comportement en jeu | build Development 5.8, A/B `LogStats`, VQ, audio | 2 - 3 | N1, N3 | 15-30 min |
| U7 Mods | version de référence, 3 cuissons DLC, tests T1-T7 dont T4 | 2,5 - 4 | N1, N0, N3 | 3 × 5-15 min |
| U8 Shipping et publication | build Shipping, archives, évaluation, porte de publication | 1,5 - 2,5 | N1, N2 | ≈ 10 min + cook 15-30 min |
| U9 Voie UE5 native | interrupteurs des correctifs de sémantique (différé) | 2 - 4 | N3, N1 | — |
| **Total U0-U8** | | **14,5 - 25** | | ≈ 7 à 16 h ; actions utilisateur ≈ 6 à 10 h |
| avec U9 | | 16,5 - 29 | | |
Constantes mesurées (établi) : build éditeur 5.8 complet avec Mcp 26,5 min (A1) ; build 5.5 incrémental 13 s
(`AP7_Build_20261006-212651.txt:74`) ; cook 5.5 à chaud 8 884 paquets en 6,0 min (`AP7_Ship_20261007-023526.txt:3697`) ;
`CompileAllBlueprints` 121 s (référence propre 5.5 L7i : 269 BP, 0/0 ; le « 115 s » cité jusqu'ici venait de L1, avant correctifs ; corrigé en U5) ; `LPCheckStreetMap` 25 s ; resave de la liste CX-B07 86 s.
| # | Risque | P×I | Parade principale |
|---|---|---|---|
| R1 | Mod cuit pour 5.5 monté dans le jeu 5.8 (plantage possible) | 3×3 = 9 | test T4 ; garde `MODULE_GAME_VERSION` (D2) |
| R2 | Resave de masse (ERR-019), `GI` 51,9 Mo, nœuds dépréciés | 2×3 = 6 | Blueprint Backup & Restore, resave par lots hors `Heavy` (D10) |
| R3 | Zen store par défaut change la chaîne de cuisson | 3×2 = 6 | `bUseZenStore=False` avant le premier cook (D1) |
| R4 | Contrat JSON / `LPDataCache` altéré silencieusement | 2×3 = 6 | conversion explicite des clés (D11) + diff des caches |
| R5 | Proxy de rendu StreetMap sous 5.8 | 2×3 = 6 | `LPCheckStreetMap`, captures même cadrage |
| R6-R10 | Cook à froid très long (4) ; modules non mesurés (2, réduit) ; Zen server commun 5.5/5.8 (4) ; MSVC partagé (4) ; disque USB (3) | 2 à 4 | tâche de fond ; toolset épinglé par projet, jamais globalement ; `Snapshot.ps1` et git avant tout resave |
| R11-R16 | Mcp bêta (2) ; pont IA expérimental (2) ; erreur résiduelle `:155` (1) ; sémantique `FString` (3) ; sauvegardes 5.5 (2) ; rendu / audio par défaut (2) | 1 à 3 | Mcp désactivé (D4) ; `LPTestStringCompat` dès U3 ; test T6 ; écoute et captures en U6 |
Points de non-retour : réenregistrement des assets (U5, uniquement dans la copie 5.8 ; git ne suit que 292 fichiers de
`Content` sur les 590 resauvés, donc « réversible par `git checkout` » était inexact : le filet est l'instantané
`Snapshot.ps1 -Lot U5`, complété par `git checkout U5-avant -- Content` pour les 292 suivis ; correction U5, CHG-255) ; recuisson et republication des 3 mods (U7) ; publication V2.0 (U8, derrière une porte utilisateur
explicite) ; désinstallation de 4.27 (reportée après V2.0, D6 ; réalisée (avancée, ARCH427, CHG-332) : dossiers remisés, moteur UE_4.27 gardé). Tout ce qui précède U7 est jetable depuis le tag
`ue5.5-final`. Portes intermédiaires : **G-U3** (0 erreur, `LPTestStringCompat` vert, éditeur 5.8 ouvert) et
**G-U6** (A/B et contrôle visuel équivalents à DC4).
## 4. Décisions de la porte G-U (2026-10-08)
Décision : **GO séquencé U0-U8, U9 différé après V2.0** (détail dans le plan 27, section « Porte G-U »). Décisions
déjà verrouillées avant la porte : cible 5.8, abandon de 4.27, mods figés, règles PUB, P2 à P5, P8.
| # | Décision retenue | État |
|---|---|---|
| D1 | `bUseZenStore=False` explicite pour toute la migration ; Zen en lot dédié après V2.0 | tranchée |
| D2 | Garde C++ `MODULE_GAME_VERSION` : décidée après le test T4 (U7) | en attente de T4 |
| D3 | Retirer 16 commandlets de portage ; garder `LPResavePackages` et `LPTestStringCompat` | tranchée |
| D4 | `McpAutomationBridge` désactivé pour V2.0 ; MCP officiel Epic évalué hors chemin critique, sur copie jetable | tranchée |
| D5 | Référence de comportement : `LifePlay_Build_5.5_DC4` et V1.5 | tranchée |
| D6 | Désinstallation et archivage de 4.27 après la publication V2.0 | réalisée (avancée, ARCH427, CHG-332) |
| D7 | Mcp désactivé « pour V2.0 » (motif : coût et bêta, non plus l'absence de version 5.8) | tranchée avec D4 |
| D8 | Blueprint Reader activé en 5.5 (Editor, non commité) avant U1 | tranchée |
| D9 | U9 après V2.0 | tranchée |
| D10 | Réenregistrement hors `Heavy` (798 assets) ; `Heavy` reste au format 5.5, converti à la volée | tranchée |
| D11 | Correctif `LPDataCache` : code ou macro de compatibilité ; décision en U3 (recommandation : conversion explicite des clés) | à prendre en U3 |
| D12 | Réglages stricts `Latest` et sort des 9 C4996 ; décision en U3 (recommandation : `Latest` et corriger les 9) | à prendre en U3 |
| D13 | `Fab` et `Bridge` en `Optional: true` dans le `.uproject` de la copie 5.8 | tranchée |
Préalable demandé par l'utilisateur : lot SK avant U0 (§ 5).
## 5. Lot SK — arbre de compétences des sous-agents
### 5.1 Niveaux de modèles (règle du 2026-10-08, plan 27)
Opus en effort high orchestre ; il délègue vers le bas et vers le haut. Niveau (note a-f) : **N0** Haiku (0-2 :
compilation, copies, inventaires) ; **N1** Sonnet (3-4 : outillage spécifié, retraits mécaniques, docs, commits) ;
**N2** Opus high, orchestrateur (5-6 : fiches, arbitrages) ; **N3** Opus xhigh (7-8 : portage d'API, diagnostic sur
graphe d'appels) ; **N4** Opus max (9-10 : portage transversal, échec de N3) ; **N5** Fable (11-12 : enjeu maximal).
Grille de complexité : six critères de 0 à 2 (étendue, couplage, incertitude, coût d'erreur, difficulté de
vérification, jugement). La fiche comporte 9 rubriques plus la rubrique 2b « agent + skills ».
### 5.2 Agents (option C : un agent par rôle, escalade par les agents de niveau)
| Agent | Rôle | Niveau par défaut |
|---|---|---|
| `lp-builder` | compile, lance commandlets et cuissons, rapporte le journal | N0 |
| `lp-inventory` | inventaires chiffrés, états git | N0-N1 |
| `lp-cart` | cartographie C++ / Blueprint, audit de sous-système | N3 |
| `lp-research` | recherche externe et sources moteur | N3 |
| `lp-spec` | spécification exécutable | N3 |
| `lp-impl` (+ variante `-max`) | C++, portage, refactor, configuration | N3 (N4) |
| `lp-tooling` | commandlets, Python éditeur, PowerShell | N1 |
| `lp-content` | chaînes de contenu, cuisson DLC des mods | N1 |
| `lp-validator` | validation statique, smoke, diff, preuve par l'échec | N1 |
| `lp-measure` | mesure A/B, préparation des tests utilisateur | N1 |
| `lp-debugger` (+ variante `-max`) | diagnostic sémantique, runtime, plantage | N3 (N4) |
| `lp-integrator` | commits par phase, pins, simulation de publication ; jamais de push | N1 |
| `lp-writer` | journal, registre, docs numérotées, fiches | N1 |
| `opus-xhigh`, `opus-max`, `fable-top` | agents d'escalade N3, N4, N5 (socle de méthode préchargé) | N3-N5 |
Le niveau descend par la surcharge `model` de l'appel ; il monte par l'agent d'escalade. Les agents d'audit et de
validation n'ont pas l'outil d'édition. Chaque agent précharge au plus 4 skills (≤ 6 000 jetons estimés).
### 5.3 Skills par couche (33 prévus)
| Couche | Préfixe | Emplacement | Contenu |
|---|---|---|---|
| 1 — socle de méthode (9) | `sk-` | `%USERPROFILE%\.claude\skills\` (hors dépôt) | preuve établi / estimé / incertain, interdits et arrêt, recompte, orchestration, sécurité des changements, comparabilité, shell Windows, estimation, spécification, données web |
| 2 — domaine générique (8) | `ue-`, `git-`, `debug-` | idem | build C++ et UBT, cuisson et empaquetage, patron de commandlet, UMG / Slate, lecture d'un plantage, commits par phase, débogage systématique, vérification avant clôture |
| 3 — projet LifePlay (16) | `lp-` | dépôt addon privé, `Tools/claude/skills/`, exposé par une jonction vers `.claude/skills` | build, cuisson, mods, commandlets, mesure, diagnostic, git, publication, docs, lots, chemins, environnement, compatibilité UE4, chaînes de contenu, profils de validation |
Règles d'adoption : revue intégrale avant toute copie tierce, licence MIT ou Apache-2.0 seulement, révision épinglée
par SHA, SKILL.md ≤ 120 lignes, skills et agents en français, aucun contenu de jeu dans un skill, rien dans le dépôt
public (`/.claude/` est ignoré, `.gitignore:72`). Rédaction en 4 vagues : V1 avant U0, V2 avant U4, V3 avant U7, V4 à
l'évaluation de U8 (effort total estimé 3,5 à 5 séances).
### 5.4 Livré en V1 (constaté par présence des fichiers)
| Livrable | État | Fiche |
|---|---|---|
| Couche 1-2 (7 skills) : `sk-protocol`, `sk-recount`, `sk-orchestrate`, `sk-change-safety`, `sk-windows-shell`, `debug-verification`, `ue-cpp-build` (adapté d'un dépôt MIT, révision épinglée) | établi | SK-T4-V1a, V1c |
| Couche 3 (7 skills) : `lp-build`, `lp-commandlets`, `lp-doc`, `lp-lot`, `lp-paths`, `lp-env`, `lp-ue-compat` | établi | SK-T4-V1b, V1c |
| Agents : `lp-builder`, `lp-inventory`, `lp-cart`, `lp-impl`, `lp-impl-max`, `lp-validator`, `lp-writer` (+ les 3 agents de niveau existants) | établi (fichiers présents) | `%USERPROFILE%\.claude\agents\` |
| Témoin de préchargement : skill et agent `sk-probe` | établi (fichiers présents) | SK-T5 |
Reste à écrire : V2 à V4 (19 skills, 6 agents de rôle dont `lp-spec`, `lp-research`, `lp-tooling`, `lp-measure`,
`lp-debugger`, `lp-integrator`, `lp-content`). Résultat des tests SK-T5 (préchargement par l'application de bureau,
jonction, surcharge de `model` sans effort) : non relevé dans les sources de cette synthèse, donc **incertain**.
## 6. Journal des lots U0 à U9
À compléter à chaque clôture de lot (une ligne par lot : date, résultat, CHG). Les lots UA, la porte G-U et le lot SK
sont décrits aux § 2, 4 et 5.
| Lot | Date de clôture | Résultat | CHG |
|---|---|---|---|
| U0 Préparation | 2026-10-08 | VS 2026 en coexistence ; 5.5 épinglé `CompilerVersion=14.38.33130` (compilation de contrôle code 0, éditeur démarré sans erreur) ; toolset 5.8 `14.50.35717` non banni (cl.exe 14.50.35739) ; tag `ue5.5-final` ; copie `LifePlay-master 5.8` sur `ue5.8` ; P1, P6, P7 verrouillées ; VAL PASS (T2, T2b, T3, doc 28) | CHG-249, CHG-250 |
| U1 Cartographie | 2026-10-08 | Contrat des mods inchangé (recuisson obligatoire : pak 12, conteneur 5, objet 1018) ; 2 correctifs spécifiés avec garde de version (R1 `GetCompressedData()`, R2 `FString(File.Key.ToView())`), pistes `IAnimationDataModel` et macro D11 (b) écartées ; 32 commandlets (16 à retirer) et 3 réglages de chemin moteur ; audit Blueprint 5.5 : 110 BP, 46 617 nœuds, 15 signatures changées (931 nœuds), aucun nœud à corriger (estimé) | CHG-251 |
| U2 Retrait 4.27 et chemin moteur | 2026-10-08 | 16 commandlets de portage retirés (32 fichiers, `SlateCore`/`NavigationSystem` sortis du Build.cs de `LifePlayEditorTools`) ; point unique `Tools/Engine.ps1` (version lue dans `EngineAssociation`, surcharge `LP_ENGINE_ROOT`, builds `LifePlay_Build_<ver>`) ; `CheckIntegrity.ps1` sans 4.27 (`-InitRef`, référence Modules à figer après G-U6) ; `StagingDirectory` `_5.8` ; bandeau « historique 4.27 » sur 12 docs, docs 08/09/10/13/index alignés ; compilation de contrôle UE 5.5 code 0 (toolset 14.38, aucun avertissement nouveau), `LPTestStringCompat` 3120/0/60 ; branche `ue5.8` seulement ; VAL PASS | CHG-252 |
| U3 Bascule et compilation (porte G-U3) | 2026-10-08 | `EngineAssociation` 5.8, Target.cs V7 / Unreal5_8, MSVC 14.50.35717 ; R1 et R2 (forme A, D11) ; `bUseZenStore=False` ; CVar `r.TranslucencyLightingVolume.Dim` ; addon hors compilation jusqu'à U4, Mcp désactivé ; 1 build : 0 erreur, 8 C4996 (6 min 15) ; `LPTestStringCompat` 3120/0/60 ; éditeur 5.8 et PIE (3 signatures d'erreur Blueprint sur 47 propres à 5.8, pour U6) ; Zen commun 5.8.13 accepté par 5.5 ; `Tools/Build.ps1` et skill `lp-validate` ; VAL PASS | CHG-253 |
| U4 Plugins tiers et addon | 2026-10-08 | Addon de retour dans la copie 5.8 : worktree `LifePlay-Sandbox-5.8` (branche `ue5.8` depuis `f9033a1`), le checkout 5.5 reste pour le jeu 5.5 ; scripts de l'addon lisant le moteur par `Engine.ps1`, Target.cs V7 ; D12 : 9 C4996 corrigés sous garde `UE_VERSION_OLDER_THAN(5,8,0)` (StreetMap ×7, `LPDumpAssetsCommandlet`, `LPHairFromStaticMeshCommandlet`), `LifePlayEditor` 0 erreur 0 avertissement ; `LPSandbox.uproject` autonome corrigé (UBT ne lit que les sous-dossiers d'un `AdditionalPluginDirectories`), piège AP7 confirmé en 5.8 ; tournée Mesure 5.8 contre référence 5.5 refaite au pin : R1 identique au caractère (boîte du couple tranchée), fichiers 44/44 et 73/73, écarts bruit flottant ≤ 3,8e-6 et libellés d'égalités nulles (PASS-ÉCART) ; plantage D3D12 en fenêtre minimisée ; VAL PASS (V1–V9), PASS-STATIC pour `BuildMod`, `EditMod`, `HairPipeline` | CHG-254 |
| U5 Contenu | 2026-10-08 | Resave D10 : 590 paquets hors `Heavy` (800 moins 210 acteurs externes orphelins de cartes gabarit absentes), 590/590, 0 échec, 126 s, pic 8,8 Go, versions 5.5 → 5.8, −125,65 Mo, 292 fichiers suivis modifiés et rien hors `Content` ; conversion des assets d'animation sans perte (9 reciblages identiques au bit près, 3 témoins sensibles ; 2 drapeaux Stride Warp de `RTG_Mannequin` perdus au chargement, pas au resave) ; `CompileAllBlueprints` 5.8 avant et après : 410 BP (110 sous `/Game`), 0 erreur, 0 avertissement BP, 28 avertissements « pose non à jour » inchangés ; `bEnableMutableContainerWarnings` : 0 nœud ; `LPCheckStreetMap` 280/280, CSV identique à 5.5 ; cuisson complète à froid : 8 915 paquets, 0 erreur, 0 avertissement, 6 min 10 (DDC chaude), 2,6 Go ; éditeur 5.8 ouvert sans erreur de chargement ; filet : tag `U5-avant` + instantané `Backup_5.5\U5` (3 092 fichiers) ; VAL PASS (V1–V7) ; 4 reports au doc 21 | CHG-255 |
| U6 Comportement en jeu (porte G-U6) | 2026-10-08 | Build Development 5.8 OK au 4e essai (2 échecs C1001 / C2206 sous UBA, mémoire ~61 / 75 Go ; sans UBA OK ; UAT code 0, 179 s, 1 avertissement de cuisson `LegacyIterative`) ; A/B `LogStats` 5.5 DC4 / 5.8 : AccessedNone 442 / 364, erreurs 6 / 5, fatal 0 / 0, équivalent (estimé, un parcours) ; `LogStats.ps1` corrigé pour « (real) property » (0 → 364) ; menu Video, « Recommended » → High (VRAM 8 146 Mo), relance, son, reprise de partie et rues OK selon l'utilisateur ; NaN, `PersonCumming`, `Save Preset`, « pose non à jour » : 0 au journal ; référence Modules 5.8 figée (2 195 fichiers) ; reports U7 (Mesure, poses, `-NoUBA`, copie de sauvegarde) et U8 (brouillard, hitch `MapMarkers_C`, cuisson à froid) ; VAL PASS | CHG-256 |
| U7 Mods | 2026-10-09 | Mod 5.5 dans le jeu 5.8 : plantage au démarrage (2/2) → garde D2 (moteur / version min `2026.10.2.0` / version max = `ProjectVersion`, mod refusé démonté, 3 cases Settings > Misc, « (not loaded) » au gestionnaire, `EngineVersion` écrit par `BuildMod`) ; essais T1–T7 passés (3 mods acceptés, 104 clips, 138 coiffures ; mod V2.0 dans le jeu 5.5 : plantage explicite, consigné) ; coiffure par défaut perdue (depuis H1/H3a) corrigée en 5.8 seulement (C1 + C2) ; référence `Releases/2026.10.2.0` par Shipping 5.8 (conteneur 5, registre 24) ; 3 mods recuits (70 / 84 / 20 paquets) ; chaîne NewMod → HairPipeline → EditMod → BuildMod rejouée en 5.8 ; builds 0/0, `LPTestStringCompat` 3120/0/60 ; VAL PASS ; reports : U8 (publication des archives, Shipping final), U7b (capture Mesure, `RetargetPack.py`, poses), lot dédié et docs 29 / 30 | CHG-257, CHG-258 |
| U7b Atelier et poses (reports U4, U5, U7) | 2026-10-09 | Tournée Mesure hors écran : `-RenderOffScreen -ExecCmds="r.SetRes 1600x900w"`, géométrie 20/20 lignes identiques à `U4-REF55`, JSON 10/10, dimensions 20/20, 0 assertion D3D12 ; `RetargetPack.py` : garde-fou (refus sous 5.6 et plus), portage après V2.0 ; 28 poses de démo régénérées (« Update Source ») : 56 lignes → 0 au `CompileAllBlueprints`, `_anim` intactes ; addon `ce2e269`, poses hors git ; VAL PASS ; reste : erreur HyperAIStudio au démarrage (lot 29, avant U8) | CHG-259 |
| U8 Shipping, publication, évaluation | — | — | — |
| U9 Voie UE5 native (différé après V2.0) | — | — | — |
## 7. Points ouverts
Incertains à trancher par un essai :
1. Nature de l'échec d'un conteneur de mod 5.5 monté dans 5.8 : test T4 (U7) ; conditionne D2.
2. ~~Durée du premier cook 5.8 à froid et réussite du resave de `GI`~~ : **tranché en U5** — resave 590/590, 0 échec (126 s) ; cuisson complète à froid 8 915 paquets, 0 erreur, 0 avertissement, 6 min 10 avec DDC chaude (établi, livrables U5). Cuisson à DDC froide non mesurée.
3. ~~Nœuds Blueprint dépréciés 5.6-5.8~~ : **tranché en U5** — `CompileAllBlueprints` 5.8 : 410 BP, 0 erreur, 0 avertissement BP ; `bEnableMutableContainerWarnings` : 0 nœud, aucun `Array_*` à corriger avant 5.9 (établi).
4. Rendu du proxy `StreetMap` sous 5.8 : captures même cadrage en U5/U6. → U6 : rues identiques selon l'utilisateur, pas de captures même cadrage ; clos par constat de l'utilisateur (CHG-256).
5. Zen store × version de référence : neutralisé par D1, sinon test R1 de UA-MODS.
6. ~~Zen commun 5.5/5.8~~ : **tranché en U3** — installation commune passée en 5.8.13, acceptée par l'éditeur 5.5 (établi, U3-T4).
7. ~~Sémantique `FString`, ligne 155~~ : **tranché en U3** — `LPTestStringCompat` 3120/0/60 sous 5.8 ; `:155` compile sans erreur (établi).
8. ~~Toolset 14.38 conservé par 5.5 après l'ajout de VS 2026~~ : **tranché en U0-T2b** — `CompilerVersion=14.38.33130`
épinglé, compilation de contrôle code 0 avec `D:\Game\VS2022\VC\Tools\MSVC\14.38.33130\bin\Hostx64\x64\cl.exe` (établi).
9. Résultats des tests SK-T5 et vagues V2 à V4 du lot SK.
10. ~~Boîte englobante du couple~~ : **tranché en U4** — boîte `AgMakeout` identique au caractère entre 5.5 et 5.8 dans le Sandbox éditeur (centre 20.831 / 1.400 / -0.534, étendue 41.180 / 50.958 / 89.466) ; R1 validé (le chemin « animations » n'est qu'un repli de `FitToBodies`, `LPShowCoupleSubsystem.cpp:377`).
11. ~~`bUseZenStore=False`~~ : **fait en U3** (`Config/DefaultGame.ini`, D1).
12. ~~Blueprints : `.umap`, nœuds Make/Break, AnimGraph et RigVM non couverts par l'audit U1~~ : **tranché en U5** par `CompileAllBlueprints` 5.8 (410 BP, 0 erreur, 0 avertissement BP) ; les 28 avertissements « Ressource de la pose … n'est pas à jour » restent ouverts (point 17).
13. Tournée Mesure sous 5.8 : elle exige une fenêtre visible (fenêtre minimisée = assert D3D12 `D3D12Texture.cpp:1551`, back buffer 8×8, pendant les planches). Rendre la capture indépendante de la fenêtre : U6 (registre du doc 21). → U6 : reporté en U7 (décision de l'utilisateur, 2026-10-08) ; d'ici là, tournée fenêtre visible (CHG-256).
14. `LPSandbox.uproject` en 5.5 : même défaut `AdditionalPluginDirectories` qu'en 5.8 (établi par le code UBT, non compilé en 5.5) ; correction à reporter dans l'addon 5.5 (branche `lot/DC3-atelier`), hors U58.
15. `BuildMod`, `EditMod`, `HairPipeline` jamais exécutés en 5.8 (PASS-STATIC seulement) : U7.
16. `RetargetPack.py` (étape 4 de la chaîne d'animation) : `set_retarget_chain_settings` sans effet en 5.8 (passer par l'op « FK Chains ») et 9e argument de `duplicate_and_retarget` changé (booléen → chemin) : U7 (atelier, doc 21).
17. 28 avertissements « Ressource de la pose … n'est pas à jour » en 5.8 (inchangés par le resave) : U6 (doc 21). → U6 : 0 « pose n'est pas à jour » au journal du jeu 5.5 comme 5.8 ; poses de démo Manny / Quinn, reportées en U7 (décision de l'utilisateur, CHG-256).
18. 210 acteurs externes orphelins dans `Content/__ExternalActors__` et `__ExternalObjects__` (cartes ThirdPerson / Vehicle absentes), non resauvés : retrait à décider par l'utilisateur, après V2.0 (doc 21).
19. NaN `FRotator::Quaternion` vu une fois au recalcul DDC de `/Game/Heavy/New3/Anims/DM_RazDog_0` (non reproduit) : à surveiller en U6 (doc 21). → U6 : 0 occurrence au journal du jeu 5.5 comme 5.8 ; non reproduit en jeu, clos (CHG-256).
20. Rendu du proxy `StreetMap` sous 5.8 : `LPCheckStreetMap` 280/280 et CSV identique à 5.5 établis en U5 ; le rendu lui-même reste à comparer par captures même cadrage (point 4, U6). → U6 : rues identiques selon l'utilisateur, pas de captures même cadrage ; clos par constat de l'utilisateur (CHG-256).
21. Scalabilité : nouvelles clés de base (`r.Fog.SeparateComposition`, volumes hétérogènes) pouvant changer le brouillard aux niveaux 0-1 (Effects Low-Med) : non contrôlé en U6 (pas de captures même cadrage) ; réserve pour U8, test Shipping (doc 21, CHG-256).
Contradictions entre sources (la plus récente retenue) :
| # | Contradiction | Retenu |
|---|---|---|
| C1 | UA-OUTILS : UBT 5.8 retient 14.44.35207 ; UA-ESSAI : 14.50.35739 | UA-ESSAI (après l'installation de VS 2026) |
| C2 | UA-MOTEUR : 14.44.35207 banni ; UA-OUTILS : non banni (`MicrosoftPlatformSDK.cs:1156`) | non banni (UA-SYNTHESE § 6) |
| C3 | UA-MOTEUR, UA-PLUGINS, UA-OUTILS : `Fab` / `Bridge` absents de 5.8 ; UA-ESSAI : présents | présents |
| C4 | UA-PLUGINS : rupture certaine à `LPCoupleSimCore.cpp:155` ; essai : à `:127` | `:127` (essai) |
| C5 | UA-PLUGINS : 21 plugins moteur activés ; UA-MOTEUR : 26 | les deux justes : 26 entrées activées au `.uproject`, dont 5 hors moteur (`LPAnimCore`, `LPSandbox`, `ModdingExtra`, `StreetMap`, `McpAutomationBridge`) → 21 plugins moteur (recompté en U0) |
| C6 | UA-JEU : 18 commandlets de portage ; décision D3 : 16 retirés | 16 (2 gardés volontairement) |
| C7 | UA-SYNTHESE et UA-OUTILS : épingler `ToolchainVersion` ; plan 27 (P8) : c'est `CompilerVersion` qui choisit MSVC, `ToolchainVersion` ne sert qu'à Clang (`VCEnvironment.cs` 5.5 l. 463-485) | plan 27, **confirmé en U0-T2b** (journal UBT : toolset 14.38.33130 retenu par `CompilerVersion`) ; en 5.8, `CompilerVersion` est comparé à la version du `cl.exe` ou au nom du dossier (`MicrosoftPlatformSDK.cs:581`, `:1147`) |
| C8 | Lot SK : 45 types de tâche annoncés, 49 recomptés ; 28 skills annoncés, 33 au catalogue ; « 12 agents de rôle », 13 lignes de rôle au tableau | recomptes (49 types, 33 skills, 13 rôles) |
| C9 | UA-MOTEUR (c8) cite `LPDataCache.cpp:52,196` ; l'essai place l'erreur à `:198` | `:198` (essai) |
| C10 | Plan 27 (U0) : le toolset VS 2026 `14.50.35717` serait banni ; U0-T2 : le bannissement porte sur la version du `cl.exe` (`MicrosoftPlatformSDK.cs:1156`, `:1416`), ici 14.50.35739, hors plage `14.50.0-14.50.35722` (`Windows_SDK.json:41`) | non banni ; épingle 5.8 : `CompilerVersion=14.50.35717` |
| C11 | UA-OUTILS : `Log.txt` UBT issu d'un run 5.8, version de 14.44 « 19.44.35228 » ; U0-T2 : run 5.5, version 14.44.35228 | U0-T2 |
| C12 | UA-PLUGINS / UA-SYNTHESE : piste `IAnimationDataModel` pour R1 ; U1-T2 : API réservée à l'éditeur (`AnimSequenceBase.h:238-281`), inutilisable dans le module Runtime | U1-T2 : piste écartée |
| C13 | UA-SYNTHESE, `lp-ue-compat` : macro `UE_JSONOBJECT_LEGACY_STRING_KEYS` comme repli D11 (b) ; U1-T2 : impossible avec le moteur installé (`TargetRules.cs:2776-2778`, DLL Json compilée avec 0) | U1-T2 : pas de repli par macro, correctif de code seul |
| C14 | UA-MODS : attendu du test T5 (mod 5.8 monté dans le jeu 5.5) = TOC « Too new » refusé (`IoStore.cpp:1145-1147`) ou avertissement de version ; U1-T1 : la version de TOC n'a pas changé, le pak 12 provoque un arrêt fatal au démarrage (`PakFile.cpp:300`, estimé) | U1-T1 (attendu T5 corrigé) |