diff --git a/Docs/Migration/27_Plan_Migration_UE58.md b/Docs/Migration/27_Plan_Migration_UE58.md index 443f12f..c5b5c30 100644 --- a/Docs/Migration/27_Plan_Migration_UE58.md +++ b/Docs/Migration/27_Plan_Migration_UE58.md @@ -2,6 +2,12 @@ name: Migration UE 5.5 → UE 5.8 (U) overview: Porter LifePlay Revival d'Unreal Engine 5.5 vers 5.8 (dernière version majeure d'UE5). La référence de comportement devient le jeu 5.5 validé ; tout ce qui sert à la comparaison avec UE 4.27 est abandonné ; seule la gestion des mods est figée (contrat inchangé, mods recuits). todos: + - id: lot-ua + content: Lot UA — Audit avant départ (jeu, plugins, mods, moteur ; essai de compilation 5.8 ; effort et risques) + status: pending + - id: gate-gu + content: Porte G-U — go / no-go de l'utilisateur sur la base de l'audit (aucun portage avant) + status: pending - id: lot-u0 content: Lot U0 — Préparation (moteur 5.8, chaîne de compilation, copie de travail, décisions) status: pending @@ -83,29 +89,60 @@ le même, mais **chaque mod d'assets doit être recuit** contre la nouvelle vers (`lpr_hair_pocolov`, `lpr_anim_quaternius`, `lpr_anim_freeanims`) ; les mods texte (`Content/Modules`) ne changent pas. L'avertissement de version du gestionnaire signale déjà un mod cuit pour une autre version. -## Matrice modèles IA ↔ complexité +## Orchestration et niveaux de modèles (règle utilisateur du 2026-10-08) -| Palier | Complexité | Modèle | Profil | +**Opus en effort high est l'orchestrateur principal** (découpage, évaluation de complexité, fiches, vérification, +communication). Il délègue vers le bas les tâches simples et **vers le haut les plus lourdes, jusqu'à Fable**. + +| Niveau | Modèle (agent) | Note de complexité | Profil | |---|---|---|---| -| M0 | mécanique | haiku | installation vérifiée, compilation + journal, cuisson, copies | -| M1 | exploration large | haiku (Explore) | inventaires, recherches multi-chemins | -| M2 | raisonnement ciblé | sonnet | specs bornées, retraits, docs, VAL, A/B de journaux, commits | -| M3 | refactor | opus (session principale) | correctifs d'API 5.8, plugins, sous-systèmes | -| M4 | synthèse / décision | opus (session principale) | portes, arbitrages, évaluation | +| N0 | Haiku (`haiku`) | 0–2 | compilation + journal, copies, inventaires en lecture seule | +| N1 | Sonnet (`sonnet`) | 3–4 | outillage spécifié, retraits mécaniques, docs, commits, VAL bornées, A/B de journaux | +| N2 | Opus high (orchestrateur, session principale) | 5–6 | fiches, arbitrages courants, vérification, code moyen ; pas de build | +| N3 | Opus xhigh (`opus-xhigh`) | 7–8 | portage d'API, refactor multi-fichiers, diagnostic sur graphe d'appels, audit d'un sous-système | +| N4 | Opus max (`opus-max`) | 9–10 | portage transversal, diagnostic sans piste, synthèse sur de nombreuses sources ; échec de N3 | +| N5 | Fable (`fable-top`) | 11–12 | enjeu maximal ou échec de N4 | -Règles de secours et pièges : comme `21_Sandbox_Addon.md` (fiche « n'écris aucun script ; en cas d'échec, recopie -l'erreur ») ; mémoire `lifeplay-build-pitfalls` ; mesures en build empaqueté Development seulement ; tests d'empaquetage -avec nouvelle partie (liste des villes) et Continuer. +**Grille de complexité** (chaque critère de 0 à 2, total 0–12) : (a) étendue, (b) couplage (graphe d'appels, Blueprints, +données partagées), (c) incertitude, (d) coût d'erreur / réversibilité, (e) difficulté de vérification, (f) jugement +requis. Ajustement d'un niveau seulement avec motif écrit ; escalade d'un niveau sur échec ou réponse incertaine. + +**Fiche obligatoire (9 rubriques)** : objectif ; note de complexité et niveau ; contexte minimal ; entrées / commandes +exactes ; pièges ; interdits ; livrable (établi / estimé / incertain) ; critère d'acceptation ; conditions d'arrêt et +d'escalade. Détail : mémoire `feedback-subagents-by-task`. + +Pièges : mémoire `lifeplay-build-pitfalls` ; mesures en build empaqueté Development seulement ; tests d'empaquetage +avec nouvelle partie (liste des villes) et Continuer ; une preuve par l'échec n'est jamais confiée à N0. ## Lots et fiches +### UA — Audit avant départ (aucun fichier du projet modifié) + +But : une vision claire des impacts, de l'effort et des risques **avant** toute action de portage. Livrables sous +`etat/U58/UA/`. Les tâches T1 à T4 sont indépendantes (parallèles) ; T5 exige UE 5.8 installé ; T6 les consomme toutes. + +| Fiche | Objet | Note a–f (total) | Niveau | Livrable | +|---|---|---|---|---| +| UA-T1 | **Jeu** : modules C++ (`LifePlay`, `LifePlayEditorTools`), sous-systèmes, API moteur utilisées (inventaire par module UE : includes, classes, fonctions), volume Blueprints (nombre, taille, nœuds natifs appelés), configuration (`Config/*.ini` : rendu, empaquetage, IoStore, scalabilité), cibles de build | 1-1-0-0-1-0 (3) | N1 | `UA-JEU.md` | +| UA-T2 | **Plugins** : `StreetMap` (origine, version, API utilisées, maintenance), `ModdingExtra`, `LPAnimCore`, `McpAutomationBridge`, plugins moteur activés par le `.uproject`, addon `LifePlay-Sandbox` (`LPSandbox`, `LPAnimMeasure`, `LPModTools`) ; compatibilité 5.8 connue | 1-1-2-0-1-1 (6) +1 recherche externe | N3 | `UA-PLUGINS.md` | +| UA-T3 | **Mods (contrat figé)** : toutes les surfaces du contrat — lecture des `.lpmod` (`GI`, `LPModInfoSubsystem`, `LPDataCache`), `ModdingExtra`, `GI.ModEnableds`, gestionnaire de mods, `LPHairstyleSubsystem`, `LPModDailies`, montage des plugins `Mods/` (paquets, registre d'assets dans le paquet), chaîne de cuisson DLC contre la version de référence (atelier de l'addon), avertissement de version ; ce qu'un changement de moteur casse ou non ; mods existants à recuire | 2-2-1-2-1-1 (9) | N4 | `UA-MODS.md` | +| UA-T4 | **Moteur** : installation 5.5 actuelle (binaire Launcher, plugins ajoutés au moteur, configuration machine), chaîne de compilation ; changements 5.6, 5.7, 5.8 tirés des notes officielles (API retirées / dépréciées, modules renommés, empaquetage, rendu par défaut, Blueprints, sémantique des chaînes et conteneurs) croisés avec UA-T1/T2 | 2-1-2-1-1-2 (9) | N4 | `UA-MOTEUR.md` | +| UA-T5 | **Essai de compilation 5.8** (prérequis : UE 5.8 installé) : copie jetable de `Source/`, `Plugins/`, `.uproject` hors du projet, association 5.8, compilation éditeur ; décompte des erreurs et avertissements par cause, sans aucune correction (« l'échec EST le résultat ») | 1-0-1-0-0-0 (2) +1 preuve par l'échec | N1 | `UA-ESSAI.md` | +| UA-T6 | **Effort et risques** : pour chaque lot U0–U9, effort estimé (nombre de séances, niveaux de modèles mobilisés, durées de build/cuisson, actions utilisateur) avec méthode d'estimation ; registre des risques (probabilité × impact, signal, parade, plan de repli) ; points de non-retour ; recommandation go / no-go argumentée | 2-2-2-1-2-2 (11) | N5 | `UA-SYNTHESE.md` | + +Vérification de chaque livrable par l'orchestrateur (preuves, cohérence entre T1–T5, distinction établi / estimé). + +### Porte G-U — Go / no-go (utilisateur) +- Entrée : `UA-SYNTHESE.md` et les cinq rapports. Sortie : go (U0 démarre), go partiel (lots reportés), ou no-go + (le jeu reste en 5.5). **Aucun lot U0–U9 ne démarre avant cette porte.** + ### U0 — Préparation (Orch + utilisateur) - **U0-T1 (utilisateur)** : installer UE 5.8 par l'Epic Games Launcher dans `D:\Game\Launcher\Engine\UE_5.8`. -- **U0-T2 (M0 haiku)** : vérifier l'installation (`Build.bat -help`), relever la chaîne exigée par 5.8 (Visual Studio, MSVC, SDK Windows) depuis les notes officielles et la comparer à l'existant ; livrable `etat/U58/U0/U0-ENV.md`. -- **U0-T3 (M2 sonnet)** : tag local `ue5.5-final` sur `main` ; copie de travail P4 (robocopy, exclusions) ; branche `ue5.8` ; dépôt des modules recopié ; contrôle `git status` propre. -- **U0-T4 (M4)** : décisions P1–P7 validées par l'utilisateur → section « verrouillées ». +- **U0-T2 (N0)** : vérifier l'installation (`Build.bat -help`), relever la chaîne exigée par 5.8 (Visual Studio, MSVC, SDK Windows) depuis les notes officielles et la comparer à l'existant ; livrable `etat/U58/U0/U0-ENV.md`. +- **U0-T3 (N1)** : tag local `ue5.5-final` sur `main` ; copie de travail P4 (robocopy, exclusions) ; branche `ue5.8` ; dépôt des modules recopié ; contrôle `git status` propre. +- **U0-T4 (N2, orchestrateur + utilisateur)** : décisions P1–P7 validées par l'utilisateur → section « verrouillées ». -### U1 — Cartographie (M2 sonnet, + M1 haiku pour les recherches) +### U1 — Cartographie détaillée (N1 ; N3 pour un point que l'audit UA laisse ouvert) — complète UA, fichier par fichier - notes de mise à niveau officielles 5.6, 5.7, 5.8 (API C++ dépréciées / retirées, modules renommés, réglages de projet, empaquetage, IoStore, Substrate, Lumen/MegaLights par défaut) croisées avec nos sources (`Source/`, `Plugins/`, addon) ; - état de chaque plugin (`StreetMap` : origine et compatibilité 5.8 ; `ModdingExtra`, `LPAnimCore` ; addon) ; @@ -113,38 +150,38 @@ avec nouvelle partie (liste des villes) et Continuer. - chemins moteur codés en dur (`UE_5.5` dans `Tools/`, lanceurs `.bat`, mémoire) ; - livrable `etat/U58/U1/U1-CART.md` ; handoff → U2/U3. -### U2 — Retrait 4.27 et chemin moteur (M2 sonnet) +### U2 — Retrait 4.27 et chemin moteur (N1) - retrait des commandlets P3 et de leurs entrées Build.cs ; `Config` et `Tools` sans référence 4.27 ; - un seul point de configuration du moteur (`Tools/Engine.ps1` lu par tous les scripts et lanceurs) ; - docs : bandeau « historique 4.27 » sur les docs concernés (pas de réécriture du passé) ; - compilation 5.5 inchangée (A-BUILD haiku) avant bascule. -### U3 — Bascule moteur et compilation (M3 opus + M0 haiku) +### U3 — Bascule moteur et compilation (N3 pour les correctifs, N4 en cas de blocage ; N0 pour les compilations) - `EngineAssociation` 5.8, régénération des fichiers de projet, compilation `LifePlayEditor` ; boucle erreurs → correctifs (opus) → compilation (haiku) ; cible : 0 erreur, avertissements de dépréciation listés. -### U4 — Plugins tiers et addon (M3 opus + M2 sonnet) +### U4 — Plugins tiers et addon (N3 + N1) - `StreetMap`, `ModdingExtra`, `LPAnimCore` compilés 5.8 ; `McpAutomationBridge` selon P7 ; - addon `LifePlay-Sandbox` : branche `ue5.8`, compilation, tournée Mesure (non-régression des JSON/CSV contre la référence 5.5, comme SB2-T5). -### U5 — Contenu (M2 sonnet + M0 haiku) +### U5 — Contenu (N1 + N0) - ouverture du projet, `LPResavePackages` sur tout `Content`, journal de chargement sans erreur ; cuisson sans avertissement ; `LPCheckStreetMap` (280 villes) ; relevé des nœuds Blueprint dépréciés et correctifs. -### U6 — Comportement en jeu (M2 sonnet + utilisateur) +### U6 — Comportement en jeu (N1 + utilisateur ; N3 pour un écart inexpliqué) - build empaqueté Development 5.8 ; A/B contre le build 5.5 sur le même parcours (nouvelle partie + Continuer, `LogStats`) ; réglages vidéo (VQ) revus pour 5.8 ; contrôle visuel utilisateur ; registre des erreurs mis à jour. -### U7 — Mods (M2 sonnet + utilisateur) +### U7 — Mods (N1 + utilisateur ; N3 si une surface du contrat bouge) - version de référence `Releases/2026.10.2.0` ; recuisson des 3 mods d'assets dans l'atelier (addon) ; contrôle que le contrat est inchangé (structure, `.lpmod`, gestionnaire, avertissement de version) ; essai en jeu. -### U8 — Shipping, publication, évaluation (M2 sonnet + M4) +### U8 — Shipping, publication, évaluation (N1 + N2) - build Shipping, archives (règles de publication), README ; évaluation multi-agents (modèle prévu / utilisé) ; porte de publication (utilisateur). -### U9 — Voie alternative UE5 native (M3 opus + M2 sonnet), en parallèle de U5–U6 +### U9 — Voie alternative UE5 native (N3 + N1), en parallèle de U5–U6 - pour chaque correctif (`LPStringCompat` : ParseIntoArray, Find / Contains / Split ; `LPMeshCompat` ; `LPNavigationHelpers` ; padding des boutons) : inventaire des Blueprints appelants et des cas où les sémantiques UE4 et UE5 divergent ; diff --git a/Docs/Migration/Journal_Modifications.md b/Docs/Migration/Journal_Modifications.md index eced503..0c21bd3 100644 --- a/Docs/Migration/Journal_Modifications.md +++ b/Docs/Migration/Journal_Modifications.md @@ -1131,6 +1131,7 @@ Validation L7c/L7d (2026-10-02, parc, même cadrage) : la nuit reste claire (sol | CHG-155 | 2026-10-05 | ShowCouple | Un lit est reconnu par son nom. Il ne bloque un déplacement que vers le bas, pour se poser ; le retour horizontal n'est plus arrêté et le contact ne renvoie plus la boîte | après avoir quitté le lit, la boîte ne pouvait plus y revenir | revenir au test `DoesPackageExist` et au filtre du flanc seul | | CHG-156 | 2026-10-05 | Clavier | `LPKeyboardSubsystem` : bouton « Clavier » ajouté à l'exécution dans `MainMenu.SettingsScrollBox` ; panneau pour changer, ajouter ou retirer une touche (actions et axes clavier). Écrit dans `Saved/Config/Windows`, pas dans `GameSettings.sav` | pouvoir réaffecter les touches, dont Q, sans modifier les Blueprints | retirer `LPKeyboardSubsystem.h/.cpp` et la dépendance `UMG` | | CHG-158 | 2026-10-05 | Réglages | `LPSettingsSubsystem` : onglets Audio, Video, Lewd, General, Keyboard, Misc au-dessus de `SettingsScrollBox`. Les lignes du Blueprint restent en place et sont montrées selon leur texte ; le reste va dans Misc. Keyboard affiche la liste des touches | la liste unique ne montrait pas le clavier | retirer `LPSettingsSubsystem.h/.cpp` | +| CHG-248 | 2026-10-08 | U-PLAN-2 | `Docs/Migration/27_Plan_Migration_UE58.md` | lot UA (audit jeu, plugins, mods, moteur, essai de compilation 5.8, effort et risques) et porte G-U avant tout portage ; orchestration révisée : Opus high orchestre, délègue jusqu'à Fable (niveaux N0–N5, grille de complexité a–f, fiche à 9 rubriques) ; agents `opus-xhigh`, `opus-max`, `fable-top` dans `~/.claude/agents/` | document seul : `git revert` du commit | | CHG-247 | 2026-10-08 | U-PLAN | `Docs/Migration/27_Plan_Migration_UE58.md` (nouveau), index `Docs/Migration/README.md` | plan de migration UE 5.5 → 5.8 (lots U0–U9) ; décisions utilisateur : 4.27 abandonné, gestion des mods figée, correctifs UE4 gardés avec voie UE5 préparée (U9), commandlets du portage 4.27 retirés (U2), dossier séparé `LifePlay-master 5.8`, V2.0 (2026.10.2.0) | document seul : `git revert` du commit | | CHG-246 | 2026-10-08 | DOCNUM | `Docs/Migration/23_Video_Quality.md` → `25_Video_Quality.md`, `24_Eval_Agents_VideoQuality.md` → `26_Eval_Agents_VideoQuality.md` (`git mv`, titres « 25 — », « 26 — »), références mises à jour (journal CHG-237 à 240, `etat/VQ/VQ5/VQ5-VAL.md`, docs 25/26), index `Docs/Migration/README.md` complété (20, 21, 22, 24, 25, 26), report « numéros en double » de `21_Sandbox_Addon.md` coché | numéros de docs en double (23, 24) ; renumérotation par ordre de création | `.\Tools\Restore.ps1 -Lot DOCNUM` | | CHG-245 | 2026-10-07 | DC4 | `LifePlay.uproject` (plugin `McpAutomationBridge` `"Optional": true`), `Source/LifePlay/LifePlay.Build.cs` (dépendance `Json` retirée), docs (`09_Commandes_Utiles.md`, `18_Build_Debug.md`, `21_Sandbox_Addon.md`, `24_Plan_Decouplage_Sandbox.md`, `etat/sandbox/DC4/*`) (commit code `fbbcee1`) | preuve « jeu seul » : clone strictement propre sans addon compile (éditeur + Development, code 0), build Development empaqueté sans addon (BUILD SUCCESSFUL), test en jeu utilisateur (nouvelle partie, sauvegarde, Continuer) ; défaut trouvé : `McpAutomationBridge` (ignoré par git) bloquait un clone propre ; piège UBT `Makefile.bin` documenté dans `09`/`18`. Motif : prouver que le jeu public compile et tourne sans l'addon `LifePlay-Sandbox` | pin inchangé `79f0205` | `.\Tools\Restore.ps1 -Lot DC4` |