LifePlay-Revival/Docs/Migration/04_Cahier_Des_Charges.md
edujiro5972 39fac16216 L0 : documentation de migration et outillage de test
Docs/Migration : architecture initiale (pipeline donnees -> GI ->
evenements/personnages), audit logiciel 5.5, plan de tests, cahier des
charges par lots bornes, journal des modifications, registre des erreurs.
Tools : CheckIntegrity (T-STAT-02..04), LogStats (compteurs normalises,
A/B 4.27/5.5). Empreinte de reference de l'arbre 4.27.

Tests : aller-retour Snapshot/Restore verifie par MD5 ; T-STAT-02, 03,
04 au vert ; T-STAT-01 : 1 package UE4 (GI.uasset), traite en L1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 01:01:52 +02:00

134 lines
8 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.

# 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 <tous les fichiers visés>` (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 — Assainissement du contenu et des caches
- **Objectif** : 0 package UE4 ; `GI` dans un état 5.5 connu et documenté ; projet débarrassé des artefacts.
- **Périmètre** :
1. Reconstituer `GI` « R-03 annulé + correctif AssetRegistry » : restaurer
`Saved/Backups/avant-R03-R06/BPs/GI.uasset`, puis `LPFixAssetRegistryPins -DryRun`, puis réel
(décision D-01, §4).
2. Rendre R-03/R-04 cohérents sur les autres assets (décision D-02, §4).
3. Purger les dossiers régénérables (`02_Audit_Logiciel.md` §8), après sauvegarde.
4. `DefaultEngine.ini` : retirer `AndroidFileServerRuntimeSettings` et `CookerSettings` ;
`DefaultEditor.ini` : vider les `SharedProfiles` générés.
- **Sortie** : T-STAT-01 à 05, T-LOAD-02 (0 broche orpheline), T-LOAD-01.
- **Retour** : `Restore.ps1 -Lot L1` ; les caches purgés se régénèrent seuls.
### L2 — Compilation propre
- **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) ;
retrait de `Build/WindowsNoEditor` et `Build/LinuxNoEditor` ; 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
- **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 — Chargement stable
- **Objectif** : 0 erreur de chargement et de compilation des Blueprints, cuisson à 0 erreur.
- **Périmètre** : relevé `CompileAllBlueprints` + `LPCheckMeshAssignment` ; une famille de
correction par sous-lot (`LPFixAssetRegistryPins`, `LPFixOrphanBoundEvents`,
`LPFixEditableTextBoxFont`, `LPFixZeroScaleActors`) ; contrôle StreetMap (`LPCheckStreetMap`
sur 4.27 **et** 5.5, comparaison des CSV).
- **Sortie** : T-LOAD-01 à T-LOAD-05.
### 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` | `avant-R03-R06` + `LPFixAssetRegistryPins` : reproduit l'état « R-03 annulé + correctif » décrit par le rapport du 28/09. Alternative : repartir du `GI` 4.27 actuel (le moteur le convertira) + même commandlet | à valider (L1) |
| D-02 | R-03/R-04 présents sur `AI`, `Room` et 7 widgets, annulés sur `Person` et `GI` | **conserver en l'état pour la V1** (les widgets ne portent pas de proxies ; `CompileAllBlueprints` passait) ; refaire R-03 proprement en L7a | à valider (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) |