diff --git a/Docs/Migration/04_Cahier_Des_Charges.md b/Docs/Migration/04_Cahier_Des_Charges.md index cf132e3..9383737 100644 --- a/Docs/Migration/04_Cahier_Des_Charges.md +++ b/Docs/Migration/04_Cahier_Des_Charges.md @@ -1,151 +1,162 @@ -# 04 — Cahier des charges : migration itérative par lots bornés - -> Méthode : développement itératif. Chaque lot tient dans **une session IA** (≈ 2 à 3 h), a **un -> objectif mesurable**, des **tests d'entrée et de sortie** (catalogue : `03_Plan_Migration_Tests.md`) -> et une **procédure de retour arrière**. Un lot ne commence qu'après validation du précédent. - ---- - -## 1. Exigences - -### 1.1 V1 — « compile, fonctionne, ne plante pas, journal exploitable » - -| ID | Exigence | Test d'acceptation | -|---|---|---| -| EX-01 | L'éditeur `LifePlayEditor Win64 Development` compile sans erreur | T-BUILD-01 | -| EX-02 | Tous les Blueprints se chargent et se compilent | T-LOAD-01, T-LOAD-02 | -| EX-03 | Tous les packages sont au format UE5 | T-STAT-01 | -| EX-04 | Les données `Modules` sont intactes et chargées comme en 4.27 | T-STAT-02, T-RUN-01 | -| EX-05 | Une build Development empaquetée démarre, génère des personnages distincts et visibles, joue une scène, sauvegarde et recharge | T-RUN-02 à T-RUN-04 | -| EX-06 | Aucun plantage sur une session de 30 minutes | T-RUN-05 | -| EX-07 | Journal efficace : catégorie `LogLifePlay`, résumé de démarrage, erreurs répétitives plafonnées, instrumentation de portage retirée du niveau par défaut | T-LOG-01 | -| EX-08 | Toute modification est tracée et réversible | T-STAT-05 ; essai réel de `Restore.ps1` | -| EX-09 | Environnement de développement et référence 4.27 préservés | T-STAT-03, T-STAT-04 | - -Hors V1, tolérés et inscrits au registre : visuel dégradé (éclairage précalculé, brouillard), -avertissements cosmétiques du moteur, dette R-03/R-07, rendu Cascade. - -### 1.2 V2 et suivantes — corrections par lots soutenables - -Traitement du `Registre_Erreurs.md` **par ordre de fréquence × gravité**, un lot par famille -(≤ 30 assets ou une commandlet), avec non-régression complète des tests V1. - -## 2. Règles de conduite d'un lot - -1. **Entrée** : tests de sortie du lot précédent au vert ; `git status` propre. -2. `git tag lot-XX-avant`. -3. `Tools\Snapshot.ps1 -Lot XX -Path ` (y compris hors git, ex. `Content/Heavy`). -4. Modification. Toute commandlet de correction est d'abord lancée en `-DryRun`, rapport archivé - dans `Docs/Migration/etat/`. -5. Tests de sortie. -6. Vert → entrée `CHG` au journal, commit, `git tag lot-XX-apres`. - Rouge → `Tools\Restore.ps1 -Lot XX` (ou `git checkout lot-XX-avant -- …`), entrée `CHG` d'annulation, - défaut inscrit au registre. -7. Un lot qui dépasse la session est **coupé** : ce qui est validé est commité, le reste redevient - un lot à part. - -## 3. Lots - -### L0 — Filet de sécurité et documentation ✅ (2026-09-29) -- **Objectif** : pouvoir tout annuler et savoir ce qu'on migre. -- **Livrables** : documents 01 à 04, journal, registre ; dépôt git local (tag `lot-L0-base`) ; - `Tools/` (Snapshot, Restore, AssetHeaders, CheckIntegrity, LogStats) ; empreintes L0 ; sauvegarde - `D:\Game\LifePlay_Backup_5.5\L0` (53 fichiers). -- **Sortie** : aller-retour `Snapshot`/`Restore` vérifié par MD5 ; T-STAT-02 à 04 au vert. - -### L1 — Base saine ✅ (2026-09-29) -- **Objectif** : repartir d'un contenu de gameplay **connu et sain** (décisions D-01, D-02) et - mesurer ce que le moteur 5.5 en dit, sans aucun correctif. -- **Périmètre réalisé** : - 1. `Content/{BPs,UI,Structs,Scenes,Render,Characters}` (385 fichiers) remis **à l'identique de - 4.27** (MD5 vérifiés). Tous les correctifs de contenu antérieurs sont ainsi retirés, R-03 et - R-04 compris. `Content/Heavy` (resave moteur seul, sans correctif) est conservé et sera - contrôlé en L4. - 2. Correctifs isolés : catalogue et protocole de réimport dans `05_Correctifs_Isoles.md` ; - écarts de code 4.27 → 5.5 exportés dans `correctifs/P01…P06.patch`. - 3. Diagnostic brut de la base : `LPCheckMeshAssignment` et `CompileAllBlueprints` - (`etat/L1_*.txt`). -- **Écarté du lot** : suppression des sections `AndroidFileServerRuntimeSettings` / `CookerSettings` - de `DefaultEngine.ini` : le plugin moteur AndroidFileServer la **recrée à chaque lancement** - (nouveau `SecurityToken`). Traitement correct en L2 : désactiver ce plugin dans le `.uproject`. - `DefaultEditor.ini` conservé (profils de prévisualisation réécrits par l'éditeur). -- **Déplacé en L2** : purge des dossiers régénérables (`Binaries`, `Intermediate` sont - nécessaires aux commandlets tant que la reconstruction n'est pas faite). -- **Sortie** : contenu de gameplay = 4.27 (MD5) ; relevé de base archivé ; T-STAT-02 à 05. - T-STAT-01 (0 package UE4) est **reporté** au sous-lot `L4-CX-B07` (resave contrôlé). -- **Retour** : `Tools\Restore.ps1 -Lot L1` ou `git checkout lot-L1-avant -- Content`. - -### L2 — Compilation propre ✅ (2026-09-29) -- **Objectif** : binaires reconstruits à partir de zéro, projet conforme UE5. -- **Périmètre** : `.uproject` (`TargetPlatforms: ["Windows"]`, section `Plugins` explicite : - `ModdingExtra`, `StreetMap`, `EnhancedInput`, `McpAutomationBridge` limité à l'éditeur, - `AndroidFileServer` désactivé puis retrait de sa section dans `DefaultEngine.ini`) ; - retrait de `Build/WindowsNoEditor` et `Build/LinuxNoEditor` ; mise de côté (déplacement vers - `D:\Game\LifePlay_Backup_5.5\L2\_purge`, pas de suppression) de `Binaries`, `Intermediate`, - `Plugins/*/Binaries`, `Plugins/*/Intermediate`, `Saved/Cooked`, `Saved/StagedBuilds` ; - régénération des fichiers de projet ; compilation éditeur et jeu. -- **Sortie** : T-BUILD-01, T-BUILD-02, T-LOAD-04. - -### L3 — Journalisation efficace ✅ (2026-09-29) -- **Objectif** : un journal qui sert au diagnostic. -- **Périmètre** : - - `Source/LifePlay` : catégorie `LogLifePlay` déclarée dans le module ; résumé de démarrage - (version du jeu et du moteur, modules activés, nombre de fichiers par type, échecs `LoadTxt`) ; - - `ModdingExtra` : `LogLPModdingTrace` ramené en `Verbose` (activable par - `-LogCmds="LogLPModdingTrace Verbose"`) ; échec de `LoadTxt` journalisé en `Warning` une seule - fois par fichier ; - - `DefaultEngine.ini` `[Core.Log]` : niveaux par catégorie ; plafonnement des `LogScript` - répétitifs. -- **Sortie** : T-BUILD-01, T-LOG-01 ; A/B : mêmes comptes `GetAllFilesFromFolder` qu'avant. - -### L4 — Réimport contrôlé des correctifs, chargement stable ⏳ (en cours) -> État au 2026-09-29 : CX-B01, CX-B02 (essai 2), CX-B03, CX-B04 réimportés et validés statiquement ; -> T-LOAD-01 (0 erreur) et T-LOAD-02 (0 broche orpheline) au vert. Restent : A/B d'exécution de -> CX-B01 sur build Development, CX-B07 (resave UE5), contrôle StreetMap 4.27/5.5, T-LOAD-05 (cuisson). -- **Objectif** : 0 erreur de chargement et de compilation des Blueprints, cuisson à 0 erreur. -- **Périmètre** : un sous-lot par correctif, dans l'ordre de `05_Correctifs_Isoles.md` §2, selon - le protocole §3 (photographie avant/après, `-DryRun`, diff, compilation, A/B si gameplay) : - `L4-CX-B01` (broches AssetRegistry de `GI`, **avec A/B d'exécution**), `L4-CX-B02` - (`EditableTextBoxStyle`), `L4-CX-B03` (mur à échelle nulle), `L4-CX-B04` (événements orphelins), - `L4-CX-B07` (resave UE5 des dossiers de gameplay) ; contrôle StreetMap (`LPCheckStreetMap` sur - 4.27 **et** 5.5, comparaison des CSV). -- **Sortie** : T-LOAD-01 à T-LOAD-05, T-STAT-01. - -### L5 — Données et personnages -- **Objectif** : `generatePerson()` sans argument produit des personnages distincts et habillés. -- **Périmètre** : - 1. `LPDumpFunction` dans les deux versions sur `GeneratePerson`, `determinePersonVars`, - `ChooseNPCBodyShape`, `DefaultDistributionIfNeeded`, `SpawnDummy`, `GenerateAndApplyStrings`, - `ReturnStatIfNeeded` ; diff archivé. - 2. Instrumenter l'**écriture** des variables DSL (`AddVariable`, `SetVariable`) : piste - `Variable.uasset` / LWC. - 3. Correction minimale, puis inconnues de `01_Architecture_Initiale.md` §7. -- **Sortie** : T-RUN-01 à T-RUN-03 sur build Development, A/B avec la référence 4.27. - -### L6 — Session complète → **V1** -- **Objectif** : EX-01 à EX-09 au vert. -- **Périmètre** : build Development `D:\Game\LifePlay_Build_5.5_V1` ; scénario T-RUN-04 ; - session de 30 min ; tri du registre ; étiquette `v1.0`. -- **Sortie** : tous les tests V1. - -### L7+ — Lots post-V1 (un par famille) -Ordre indicatif, à réviser selon le registre : - -| Lot | Famille | Périmètre | -|---|---|---| -| L7a | R-03 refait correctement | `GetSkinnedAsset()` pour les proxies ; 56 nœuds, 10 Blueprints | -| L7b | Erreurs d'exécution fréquentes | `ParseIntoArray`, `getBeautyValue`, `standIdle`, `ContactMenu` | -| L7c | Configuration | clés de nativisation, rendu 5.5 explicite (GI, ombres, RHI) | -| L7d | Visuel | AtmosphericFog → SkyAtmosphere ; reconstruction de l'éclairage | -| L7e | Effets | 4 systèmes Cascade → Niagara (si nécessaire) ; NvCloth → Chaos | -| L7f | Entrées | Enhanced Input (R-07), avec test manuel des 34 commandes | -| L7g | Packaging | build Shipping ; exclusion de `McpAutomationBridge` | - -## 4. Décisions - -| ID | Question | Recommandation | Statut | -|---|---|---|---| -| D-01 | Base de reconstruction de `GI` | **Décidé (utilisateur, 2026-09-29)** : les correctifs antérieurs sont douteux (ni suivis ni testés). On repart d'une base saine — le contenu de gameplay 4.27 — et on **isole** les correctifs pour les réimporter un par un avec un contrôle renforcé (`05_Correctifs_Isoles.md`) | acquis (L1) | -| D-02 | R-03/R-04 présents sur `AI`, `Room` et 7 widgets, annulés sur `Person` et `GI` | **Décidé (utilisateur)** : tout annuler maintenant — réalisé par le retour à la base 4.27 | acquis (L1) | -| D-03 | Mesure d'exécution | builds empaquetées Development uniquement (règle §2 du document 03) | acquis | -| D-04 | Suivi de version | dépôt git local, Blueprints de gameplay inclus, `Content/Heavy` exclu (sauvegardes par lot) | acquis (L0) | +# 04 — Cahier des charges : migration itérative par lots bornés + +> Méthode : développement itératif. Chaque lot tient dans **une session IA** (≈ 2 à 3 h), a **un +> objectif mesurable**, des **tests d'entrée et de sortie** (catalogue : `03_Plan_Migration_Tests.md`) +> et une **procédure de retour arrière**. Un lot ne commence qu'après validation du précédent. + +--- + +## 1. Exigences + +### 1.1 V1 — « compile, fonctionne, ne plante pas, journal exploitable » + +| ID | Exigence | Test d'acceptation | +|---|---|---| +| EX-01 | L'éditeur `LifePlayEditor Win64 Development` compile sans erreur | T-BUILD-01 | +| EX-02 | Tous les Blueprints se chargent et se compilent | T-LOAD-01, T-LOAD-02 | +| EX-03 | Tous les packages sont au format UE5 | T-STAT-01 | +| EX-04 | Les données `Modules` sont intactes et chargées comme en 4.27 | T-STAT-02, T-RUN-01 | +| EX-05 | Une build Development empaquetée démarre, génère des personnages distincts et visibles, joue une scène, sauvegarde et recharge | T-RUN-02 à T-RUN-04 | +| EX-06 | Aucun plantage sur une session de 30 minutes | T-RUN-05 | +| EX-07 | Journal efficace : catégorie `LogLifePlay`, résumé de démarrage, erreurs répétitives plafonnées, instrumentation de portage retirée du niveau par défaut | T-LOG-01 | +| EX-08 | Toute modification est tracée et réversible | T-STAT-05 ; essai réel de `Restore.ps1` | +| EX-09 | Environnement de développement et référence 4.27 préservés | T-STAT-03, T-STAT-04 | + +Hors V1, tolérés et inscrits au registre : visuel dégradé (éclairage précalculé, brouillard), +avertissements cosmétiques du moteur, dette R-03/R-07, rendu Cascade. + +### 1.2 V2 et suivantes — corrections par lots soutenables + +Traitement du `Registre_Erreurs.md` **par ordre de fréquence × gravité**, un lot par famille +(≤ 30 assets ou une commandlet), avec non-régression complète des tests V1. + +## 2. Règles de conduite d'un lot + +1. **Entrée** : tests de sortie du lot précédent au vert ; `git status` propre. +2. `git tag lot-XX-avant`. +3. `Tools\Snapshot.ps1 -Lot XX -Path ` (y compris hors git, ex. `Content/Heavy`). +4. Modification. Toute commandlet de correction est d'abord lancée en `-DryRun`, rapport archivé + dans `Docs/Migration/etat/`. +5. Tests de sortie. +6. Vert → entrée `CHG` au journal, commit, `git tag lot-XX-apres`. + Rouge → `Tools\Restore.ps1 -Lot XX` (ou `git checkout lot-XX-avant -- …`), entrée `CHG` d'annulation, + défaut inscrit au registre. +7. Un lot qui dépasse la session est **coupé** : ce qui est validé est commité, le reste redevient + un lot à part. + +## 3. Lots + +### L0 — Filet de sécurité et documentation ✅ (2026-09-29) +- **Objectif** : pouvoir tout annuler et savoir ce qu'on migre. +- **Livrables** : documents 01 à 04, journal, registre ; dépôt git local (tag `lot-L0-base`) ; + `Tools/` (Snapshot, Restore, AssetHeaders, CheckIntegrity, LogStats) ; empreintes L0 ; sauvegarde + `D:\Game\LifePlay_Backup_5.5\L0` (53 fichiers). +- **Sortie** : aller-retour `Snapshot`/`Restore` vérifié par MD5 ; T-STAT-02 à 04 au vert. + +### L1 — Base saine ✅ (2026-09-29) +- **Objectif** : repartir d'un contenu de gameplay **connu et sain** (décisions D-01, D-02) et + mesurer ce que le moteur 5.5 en dit, sans aucun correctif. +- **Périmètre réalisé** : + 1. `Content/{BPs,UI,Structs,Scenes,Render,Characters}` (385 fichiers) remis **à l'identique de + 4.27** (MD5 vérifiés). Tous les correctifs de contenu antérieurs sont ainsi retirés, R-03 et + R-04 compris. `Content/Heavy` (resave moteur seul, sans correctif) est conservé et sera + contrôlé en L4. + 2. Correctifs isolés : catalogue et protocole de réimport dans `05_Correctifs_Isoles.md` ; + écarts de code 4.27 → 5.5 exportés dans `correctifs/P01…P06.patch`. + 3. Diagnostic brut de la base : `LPCheckMeshAssignment` et `CompileAllBlueprints` + (`etat/L1_*.txt`). +- **Écarté du lot** : suppression des sections `AndroidFileServerRuntimeSettings` / `CookerSettings` + de `DefaultEngine.ini` : le plugin moteur AndroidFileServer la **recrée à chaque lancement** + (nouveau `SecurityToken`). Traitement correct en L2 : désactiver ce plugin dans le `.uproject`. + `DefaultEditor.ini` conservé (profils de prévisualisation réécrits par l'éditeur). +- **Déplacé en L2** : purge des dossiers régénérables (`Binaries`, `Intermediate` sont + nécessaires aux commandlets tant que la reconstruction n'est pas faite). +- **Sortie** : contenu de gameplay = 4.27 (MD5) ; relevé de base archivé ; T-STAT-02 à 05. + T-STAT-01 (0 package UE4) est **reporté** au sous-lot `L4-CX-B07` (resave contrôlé). +- **Retour** : `Tools\Restore.ps1 -Lot L1` ou `git checkout lot-L1-avant -- Content`. + +### L2 — Compilation propre ✅ (2026-09-29) +- **Objectif** : binaires reconstruits à partir de zéro, projet conforme UE5. +- **Périmètre** : `.uproject` (`TargetPlatforms: ["Windows"]`, section `Plugins` explicite : + `ModdingExtra`, `StreetMap`, `EnhancedInput`, `McpAutomationBridge` limité à l'éditeur, + `AndroidFileServer` désactivé puis retrait de sa section dans `DefaultEngine.ini`) ; + retrait de `Build/WindowsNoEditor` et `Build/LinuxNoEditor` ; mise de côté (déplacement vers + `D:\Game\LifePlay_Backup_5.5\L2\_purge`, pas de suppression) de `Binaries`, `Intermediate`, + `Plugins/*/Binaries`, `Plugins/*/Intermediate`, `Saved/Cooked`, `Saved/StagedBuilds` ; + régénération des fichiers de projet ; compilation éditeur et jeu. +- **Sortie** : T-BUILD-01, T-BUILD-02, T-LOAD-04. + +### L3 — Journalisation efficace ✅ (2026-09-29) +- **Objectif** : un journal qui sert au diagnostic. +- **Périmètre** : + - `Source/LifePlay` : catégorie `LogLifePlay` déclarée dans le module ; résumé de démarrage + (version du jeu et du moteur, modules activés, nombre de fichiers par type, échecs `LoadTxt`) ; + - `ModdingExtra` : `LogLPModdingTrace` ramené en `Verbose` (activable par + `-LogCmds="LogLPModdingTrace Verbose"`) ; échec de `LoadTxt` journalisé en `Warning` une seule + fois par fichier ; + - `DefaultEngine.ini` `[Core.Log]` : niveaux par catégorie ; plafonnement des `LogScript` + répétitifs. +- **Sortie** : T-BUILD-01, T-LOG-01 ; A/B : mêmes comptes `GetAllFilesFromFolder` qu'avant. + +### L4 — Réimport contrôlé des correctifs, chargement stable ✅ (2026-09-30) +> Clôture : CX-B01 à B04, B08 et B07 réimportés ; A/B d'exécution faits par les parties utilisateur (L5d, L6a, V1rc) ; +> cuisson 0 erreur (T-LOAD-05) ; 8563/8563 paquets UE5 (T-STAT-01). Le contrôle StreetMap 4.27/5.5 est reporté en L7h +> (aucun défaut visible de carte signalé en jeu). +> État au 2026-09-29 : CX-B01, CX-B02 (essai 2), CX-B03, CX-B04 réimportés et validés statiquement ; +> T-LOAD-01 (0 erreur) et T-LOAD-02 (0 broche orpheline) au vert. Restent : A/B d'exécution de +> CX-B01 sur build Development, CX-B07 (resave UE5), contrôle StreetMap 4.27/5.5, T-LOAD-05 (cuisson). +- **Objectif** : 0 erreur de chargement et de compilation des Blueprints, cuisson à 0 erreur. +- **Périmètre** : un sous-lot par correctif, dans l'ordre de `05_Correctifs_Isoles.md` §2, selon + le protocole §3 (photographie avant/après, `-DryRun`, diff, compilation, A/B si gameplay) : + `L4-CX-B01` (broches AssetRegistry de `GI`, **avec A/B d'exécution**), `L4-CX-B02` + (`EditableTextBoxStyle`), `L4-CX-B03` (mur à échelle nulle), `L4-CX-B04` (événements orphelins), + `L4-CX-B07` (resave UE5 des dossiers de gameplay) ; contrôle StreetMap (`LPCheckStreetMap` sur + 4.27 **et** 5.5, comparaison des CSV). +- **Sortie** : T-LOAD-01 à T-LOAD-05, T-STAT-01. + +### L5 — Données et personnages ✅ (2026-09-30) +> ERR-027/ERR-002 clos par CX-B08 (`ParseIntoArray` UE5), validé en jeu (build L5d). +- **Objectif** : `generatePerson()` sans argument produit des personnages distincts et habillés. +- **Périmètre** : + 1. `LPDumpFunction` dans les deux versions sur `GeneratePerson`, `determinePersonVars`, + `ChooseNPCBodyShape`, `DefaultDistributionIfNeeded`, `SpawnDummy`, `GenerateAndApplyStrings`, + `ReturnStatIfNeeded` ; diff archivé. + 2. Instrumenter l'**écriture** des variables DSL (`AddVariable`, `SetVariable`) : piste + `Variable.uasset` / LWC. + 3. Correction minimale, puis inconnues de `01_Architecture_Initiale.md` §7. +- **Sortie** : T-RUN-01 à T-RUN-03 sur build Development, A/B avec la référence 4.27. + +### L6 — Session complète → **V1** ✅ (2026-09-30, étiquette `v1.0`) +> Lots L6a (TAA, ERR-032), L6e (marges des boutons, ERR-034), L6f (ERR-031 préexistant en 4.27, hors périmètre). +> Validation finale : build `LifePlay_Build_5.5_V1rc` (= L4-CX-B07), partie utilisateur d'environ 2 h, 339 personnages, +> 0 plantage, sortie normale, sauvegardes `1.sav`/`2.sav` ; « pas de souci majeur constaté ». EX-01 à EX-09 au vert +> (tableau dans `Journal_Modifications.md`, section V1). +- **Objectif** : EX-01 à EX-09 au vert. +- **Périmètre** : build Development `D:\Game\LifePlay_Build_5.5_V1` ; scénario T-RUN-04 ; + session de 30 min ; tri du registre ; étiquette `v1.0`. +- **Sortie** : tous les tests V1. + +### L7+ — Lots post-V1 (un par famille) +Ordre indicatif, à réviser selon le registre : + +| Lot | Famille | Périmètre | +|---|---|---| +| L7a | R-03 refait correctement | `GetSkinnedAsset()` pour les proxies ; 56 nœuds, 10 Blueprints | +| L7b | Erreurs d'exécution fréquentes | `ParseIntoArray`, `getBeautyValue`, `standIdle`, `ContactMenu` | +| L7c | Configuration | clés de nativisation, rendu 5.5 explicite (GI, ombres, RHI) | +| L7d | Visuel | AtmosphericFog → SkyAtmosphere ; reconstruction de l'éclairage | +| L7e | Effets | 4 systèmes Cascade → Niagara (si nécessaire) ; NvCloth → Chaos | +| L7f | Entrées | Enhanced Input (R-07), avec test manuel des 34 commandes | +| L7g | Packaging | build Shipping ; exclusion de `McpAutomationBridge` | +| L7h | Vérification StreetMap | `LPCheckStreetMap` sur 4.27 et 5.5, comparaison des CSV (ERR-018) | +| L7i | Variables DSL `Person` vides | ERR-030/ERR-003 : `GI::Dress` par rafales (0 à 284 par personnage selon les lieux), `ReturnStatIfNeeded` ; traceur par fonction | +| L7j | Écran secondaire (amélioration) | ERR-031, préexistant en 4.27 : caméra `SecondScreen` sans racine ; seulement si souhaité | + +## 4. Décisions + +| ID | Question | Recommandation | Statut | +|---|---|---|---| +| D-01 | Base de reconstruction de `GI` | **Décidé (utilisateur, 2026-09-29)** : les correctifs antérieurs sont douteux (ni suivis ni testés). On repart d'une base saine — le contenu de gameplay 4.27 — et on **isole** les correctifs pour les réimporter un par un avec un contrôle renforcé (`05_Correctifs_Isoles.md`) | acquis (L1) | +| D-02 | R-03/R-04 présents sur `AI`, `Room` et 7 widgets, annulés sur `Person` et `GI` | **Décidé (utilisateur)** : tout annuler maintenant — réalisé par le retour à la base 4.27 | acquis (L1) | +| D-03 | Mesure d'exécution | builds empaquetées Development uniquement (règle §2 du document 03) | acquis | +| D-04 | Suivi de version | dépôt git local, Blueprints de gameplay inclus, `Content/Heavy` exclu (sauvegardes par lot) | acquis (L0) | diff --git a/Docs/Migration/Journal_Modifications.md b/Docs/Migration/Journal_Modifications.md index 7855736..18f31d7 100644 --- a/Docs/Migration/Journal_Modifications.md +++ b/Docs/Migration/Journal_Modifications.md @@ -444,3 +444,27 @@ dépréciation enregistrés sur des nœuds (`AI` R-04, `CharGenSlider` R-03, det valeur déjà portée par les nœuds UE5 de `GI` ; (8) objets `PLACEHOLDER-CLASS` du chargeur (ordre de chargement). | `CompileAllBlueprints` | 0 erreur, 190 avertissements (identique à L6e) | `etat/L4-CX-B07_CompileAllBlueprints_*.txt` | | Build empaquetée `LifePlay_Build_5.5_V1rc` | cuisson 0 erreur, 95 avertissements (inchangé) ; T-PKG-01 : 8561 `.uasset` | `Saved/Logs/portage/L4-CX-B07_BuildCookRun.log` | + +--- + +## V1 — validation finale (2026-09-30), étiquette `v1.0` + +Partie utilisateur sur `LifePlay_Build_5.5_V1rc` (contenu = `L4-CX-B07-apres`) : environ 2 h, 339 personnages, sauvegardes +`1.sav` et `2.sav`, sortie normale, aucun dossier `Crashes` ; retour utilisateur : « pas de souci majeur constaté ». +Journaux : `Saved/Logs/portage/V1rc_partie_20260930*.log`. + +| Exigence | Résultat | +|---|---| +| EX-01 compilation | `LifePlayEditor` compile sans erreur (L2, recompilé à chaque lot) | +| EX-02 Blueprints | `CompileAllBlueprints` 0 erreur (190 avertissements de dépréciation, dette R-03/R-04) | +| EX-03 format UE5 | 8563/8563 paquets (CX-B07) | +| EX-04 `Modules` | chargés comme en 4.27 (L3, T-STAT-02) | +| EX-05 build jouée | personnages distincts, visibles et habillés, scènes, sauvegarde et rechargement | +| EX-06 sans plantage | 42 min (L5d), environ 2 h (V1rc) : 0 plantage | +| EX-07 journalisation | `LogLifePlay`, résumé de démarrage et de session, traces de portage en `Verbose` | +| EX-08 traçabilité | CHG-001 à CHG-035, tags avant/après par lot, `Restore.ps1` testé (L0) | +| EX-09 environnement | `.claude/`, `.mcp.json`, `Saved/Backups/`, arbre 4.27 non modifiés | + +Comparaison par personnage V1 (L5d) → V1rc des `Accessed None … Person` par fonction : `getActorVar` 4,6 → 4,0, +`ReturnStatIfNeeded` 3,6 → 3,8, `setActorVar` 0,8 → 0,8 ; seul `GI::Dress` varie (74,5 → 283,6), par rafales liées aux +lieux (ERR-030, lot L7i). Anomalies ouvertes après V1 : voir `Registre_Erreurs.md` et lots L7 de `04_Cahier_Des_Charges.md`. diff --git a/Docs/Migration/Registre_Erreurs.md b/Docs/Migration/Registre_Erreurs.md index 65e248f..95edcf7 100644 --- a/Docs/Migration/Registre_Erreurs.md +++ b/Docs/Migration/Registre_Erreurs.md @@ -34,7 +34,7 @@ | ERR-025 | `LPFixEditableTextBoxFont` : un `Make EditableTextBoxStyle` peut perdre sa police sans rebranchement selon l'ordre de parcours (`CharGen::Make_64`) | relecture du diff L4-CX-B02 | 1 nœud | haute (silencieuse) | L4-CX-B02 | corrigé dans la commandlet (CHG-020) ; présent probablement dans le contenu du 2026-09-07 | | ERR-026 | Build Development incomplète : 3 257 packages cuits au lieu de 8 561 ; la plupart des maillages, vêtements, coiffures et textures manquent (chargés par chemin à l'exécution, invisibles pour le cuiseur) | retour utilisateur sur `LifePlay_Build_5.5_L4` | 5 304 packages | **bloquante** | L4 | corrigé (CHG-025) : `+DirectoriesToAlwaysCook=(Path="/Game")` ; test T-PKG-01 ajouté | | ERR-029 | Cuisson L5d : 95 avertissements (L5c : 0) | `L5d_BuildCookRun.log` | 95 | faible | L7a | **accepté** : ≈ 90 dépréciations `Get SkeletalMesh` (R-03) + 3 `GetRandomPointInNavigableRadius` (R-04) + 1 Unreal Trace Server ; visibles car la cuisson itérative a recompilé les 17 Blueprints modifiés par CX-B08 (L5c n'en recompilait aucun). Pas de régression | -| ERR-030 | `Accessed None … Person` dans `GI::Dress` (appelée par `Room`) : habillage des PNJ de pièce | partie V1 du 2026-09-30 (42 min, 271 personnages) | 20 189 (74,5/perso ; 4.27 : 0) | faible (situationnel, pas d'effet visible) | L6b | ouvert — 0 occurrence sur la partie L6a (65 personnages) : dépend du lieu ou de la scène. Lié à ERR-003 : variables de scène `Person` vides 15 à 20/perso en 5.5 contre 3,3 en 4.27 ; `ReturnStatIfNeeded` lit la variable `Player` au tableau `Person` vide (capteur L6a). Le capteur doit pouvoir filtrer par fonction | +| ERR-030 | `Accessed None … Person` dans `GI::Dress` (appelée par `Room`) : habillage des PNJ de pièce | partie V1 du 2026-09-30 (42 min, 271 personnages) | 20 189 (74,5/perso ; 4.27 : 0) | faible (situationnel, pas d'effet visible) | L6b | ouvert — 0 occurrence sur la partie L6a (65 personnages) : dépend du lieu ou de la scène. Lié à ERR-003 : variables de scène `Person` vides 15 à 20/perso en 5.5 contre 3,3 en 4.27 ; `ReturnStatIfNeeded` lit la variable `Player` au tableau `Person` vide (capteur L6a). Le capteur doit pouvoir filtrer par fonction ; partie V1rc (2 h, 339 persos) : `Dress` 283,6/perso en rafales sur 25 minutes (jusqu'à 23 096/min), autres fonctions stables par personnage (`getActorVar` 4,0, `ReturnStatIfNeeded` 3,8) → situationnel, sans effet visible signalé ; lot L7i | | ERR-031 | Le contact n'apparaît pas dans l'encadré lors d'un appel téléphonique | retour utilisateur 2026-09-30 | — | moyenne (visuel) | L6c | **préexistant en 4.27** (constaté par l'utilisateur le 2026-09-30, même encadré vide) : hors périmètre de la migration, non corrigé. Analyse : `UI/Scene::FaceRender` affiche `Render/SecondScreenMat` ← caméra `SecondScreen` de `CentralLondon` (liste « ShowOnly » : `Wall` + `PlayerCharacter`, scène à -3,1e6 / -1,5e7) ; dans la carte 4.27 d'origine, cette caméra a `RootComponent = None` et une position nulle, elle ne vise donc que le ciel | | ERR-032 | Scintillement à l'approche d'un personnage | retour utilisateur 2026-09-30 | — | moyenne (visuel) | L6a | **corrigé (CHG-031)**, validé en jeu le 2026-09-30 : on peut s'approcher des PNJ sans scintillement | | ERR-033 | Certaines actions demandent deux clics pour démarrer | retour utilisateur 2026-09-30 | — | moyenne (ergonomie) | L6d | **non reproduit** depuis le build L6e (constat utilisateur 2026-09-30) ; aucune modification ciblée — coïncide avec CX-B09 (marges des boutons), sans lien démontré ; sous surveillance, à rouvrir s'il réapparaît |