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

8 KiB
Raw Blame History

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)