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

40 KiB
Raw Blame History

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 (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é)