LifePlay-Revival/Docs/Migration/etat/U58/U7/U7-VAL.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

88 lines
13 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.

Fiche U7-VAL — Niveau N1 — Modèle prévu lp-validator | utilisé Sonnet 5.5 (lp-validator) — Agent lp-validator — Skills lp-validate, sk-recount, sk-protocol, debug-verification
# U7-VAL — validation du lot U7 (mods sous UE 5.8), 2026-10-09
Copie 5.8 `D:\Game\LifePlay-master 5.8` (branche `ue5.8`, tag `U7-avant` = `cb79c24`), addon `D:\Game\LifePlay-Sandbox-5.8` (branche `ue5.8`). Aucun fichier de code, de config ni de doc validée modifié ; pas de commit ; jeu non lancé ; éditeur fermé (tasklist vide) avant V3/V4.
## Verdict global : PASS, avec 1 écart à trancher (E1) et 3 réserves de preuve (R1 à R3)
| Contrôle | Verdict | Preuve principale |
|---|---|---|
| V1 diff code | PASS (écart E1 à décider) | 9 fichiers modifiés + `LPModGuard.{h,cpp}`, lus en entier |
| V2 fins de ligne / BOM | PASS | 9 modifiés identiques à `U7-avant`, aucun BOM |
| V3 recompte des builds | PASS | 3 journaux rejoués par `-FromLog` : 0 / 0 |
| V4 `LPTestStringCompat` | PASS | `=== 3120 cas : compat != herite(UE4) : 0 ; moteur != herite(UE4) : 60 ===`, code 0 |
| V5 preuves des essais | PASS-STATIC pour T9/P10 visuels et T6 (R1 à R3) ; PASS pour le reste | greps ci-dessous |
| V6 addon + archives + Releases | PASS | zips, `.utoc` SHA-256 identiques |
| V7 `Mods\` vide, pas de parasite | PASS | `ls -A Mods` vide ; `git status` des deux dépôts |
## V1 — diff code (`git -C "D:/Game/LifePlay-master 5.8" diff U7-avant -- Source Config` + fichiers non suivis)
`--stat` : 9 fichiers, 441 insertions, 64 suppressions (recompté : `git diff U7-avant --stat | tail -1`). Non suivis : `LPModGuard.h` (79 lignes), `LPModGuard.cpp` (525), docs `29_*`, `30_*` (docs de projet, hors code).
Conformité aux décisions du SUIVI (établi, par lecture) :
- Garde à 3 contrôles : `ELPModCheck {Engine, MinVersion, MaxVersion}` (`LPModGuard.h:31`) ; moteur = version d'en-tête de conteneur (`LPModGuard.cpp:128-154`) + `AssetRegistry.bin` (`:158-171`) + `EngineVersion` du `.uplugin` (`:339-357`) ; min `2026.10.2.0` (`:31`, `:375`) ; max = `ProjectVersion` (`:240`, `:381`).
- Démontage au `StartupModule` : `LifePlay.cpp` (`FLifePlayGameModule::StartupModule` → `FLPModGuard::Run()`), démontage `UnloadPlugin` (`LPModGuard.cpp:174-218`, appelé `:458`), seulement jeu cuit (`:437`).
- 3 cases Misc : `LPModInfoSubsystem.cpp` (`EnsureSettingsRows`, noms `LPModCheck*`) + classement Misc `LPSettingsSubsystem.cpp:176-180`.
- Motif moteur seul affiché : `LPModGuard.cpp:392-406` (min/max suffixés « (secondaire) » au journal seulement).
- Mod sans `MODULE_GAME_VERSION` : chargé + Warning (`:360-362`).
- Marquage gestionnaire : `MarkRefusedRow` (suffixe « (not loaded) », teinte, infobulle, `ModEnabledBox` désactivée) ; seule la case est désactivée, pas le bouton du nom (conforme : pas de « bouton du nom bloqué »).
- C1 + C2 coiffures : `LPHairstyleSubsystem.cpp` (étapes 0 et 3 de `Sync`, `HairModules` + `EnabledSignature`). Pas de C3 (aucun changement d'ordre d'affichage) : conforme.
- `DefaultGame.ini` : seule ligne `ProjectVersion=2026.10.2.0` (version de référence décidée).
- Hors périmètre : rien trouvé. Code de débogage / TODO / `LogTemp` / `AddOnScreenDebugMessage` : grep sur le diff et sur `LPModGuard.*` = 0. Suppression de `FieldText`/`IsModuleEnabled` de `LPModInfoSubsystem` : remplacés par `FLPModGuard`, aucun appel restant (compilation 0 erreur).
**E1 (à décider par l'orchestrateur/utilisateur, non bloquant)** : la décision « PAS de libellé Unreal 5.5/5.8 » est respectée pour le motif de refus (« format 4, game 5 » conservé), mais deux textes affichent encore une version d'Unreal : le corps de la fenêtre, `LPModInfoSubsystem.cpp` (« This game is LifePlay %s (Unreal Engine %d.%d) », décrit aussi dans `U7-T7-IMPL.md:225`), et le motif construit à partir de `EngineVersion` du `.uplugin` (`LPModGuard.cpp:353`, « Unreal Engine %s, game %d.%d »). Si la décision visait tout affichage de version d'Unreal, ces deux chaînes y contreviennent ; si elle visait seulement la traduction conteneur→version, elles sont conformes.
## V2 — fins de ligne et encodage
Commande : script Python comparant `git show U7-avant:<f>` et le fichier de travail (CRLF, LF seul, BOM).
- `DefaultGame.ini` LF 81/81 ; `LPHairstyleSubsystem.cpp/.h`, `LPModDailies.cpp/.h`, `LPModInfoSubsystem.cpp/.h`, `LifePlay.cpp` : LF avant et après (CRLF = 0) ; `LPSettingsSubsystem.cpp` : CRLF avant (830) et après (835), LF seul = 0. Aucun BOM nulle part. Nouveaux fichiers `LPModGuard.*` : LF, CRLF = 0, sans BOM (cohérent avec la majorité LF du dossier).
- Addon : `BuildMod.ps1` LF 326 → 338, CRLF 0 des deux côtés.
## V3 — recompte des builds (`Tools\Build.ps1 -Lot U7-VAL -FromLog <journal>`)
| Journal | Livrable | Recompté | Unités | MSVC |
|---|---|---|---|---|
| `U7_Build_20261009-101701.log` (éditeur, T13a) | 0/0 | erreurs 0, avertissements 0, autres 0 ; `Result: Succeeded` | 2 (`LPHairstyleSubsystem.cpp`, `Module.LifePlay.cpp`), DLL `UnrealEditor-LifePlay.dll` | `14.50.35717` |
| `U7_Build_20261009-101759.log` (jeu, T13b) | 0/0 | 0/0/0 ; `Result: Succeeded` | 2 | `14.50.35717` |
| `U7_Build_20261009-103224.log` (Shipping, T14) | 0/0, 12 unités | 0/0/0 ; 12 unités (compile `LPModGuard`, `LPModInfoSubsystem`, `LPSettingsSubsystem`, `LPModDailies`, `LifePlay`, `LPHairstyleSubsystem`) | 12 | `14.50.35717` |
Contrôle croisé : `grep -ciE "warning C|error C|error LNK"` = 0 sur les trois. Les sources modifiées (dernière : `LPHairstyleSubsystem.h`, 10:13) précèdent les builds (10:17 et 10:32). Cuisson Development (`BuildDebug_Development_20261009-101900.log`) et Shipping (`U7-T14_UAT_20261009-103453.log`) : `Success - 0 error(s), 1 warning(s)`, `BUILD SUCCESSFUL`, `ExitCode=0` ; l'unique avertissement est `LogCook: Warning: ... LegacyIterative is required ...` (ligne 189 des deux). Le « code=-1 » du résumé `-FromLog` est le comportement normal de rejeu (journal existant).
## V4 — `LPTestStringCompat`
`.\Tools\RunCommandlet.ps1 -Lot U7-VAL -Commandlet LPTestStringCompat` : code 0, 16 s. Journal `Saved\Logs\portage\U7-VAL_LPTestStringCompat_20261009-123419.log:1774` : `=== 3120 cas : compat != herite(UE4) : 0 ; moteur != herite(UE4) : 60 ===` (référence 3120 / 0 / 60 : identique). Les « 2 avertissements » du résumé sont cette ligne elle-même (émise en niveau Warning, deux fois). Résumé : `Docs\Migration\etat\U7-VAL_LPTestStringCompat_20261009-123419.txt` (dossier `etat\` de la copie 5.8, non suivi par git).
## V5 — preuves des essais (`etat\U58\U7\<dossier>`)
| Essai | Dossier / ligne retrouvée | Verdict |
|---|---|---|
| T4 (quaternius 5.5 dans jeu 5.8, plantage) | `T4\T4_LifePlay.log:6248,6278` `Fatal error ... ContainerHelpers.cpp`, `FZenPackageHeader::MakeView` ; `T4_LifePlay_run1.log` idem ; 2 dossiers `Crashes` | établi |
| T4 rejoué (refus moteur, pas de plantage) | `T7\LifePlay-backup-2026.10.09-06.17.59.log:811,815` « refuse : moteur : conteneur 4 (jeu 5), registre 17 (jeu 24) » + « non charge : 1 pak(s) demonte(s) sur 1 ... » ; log poursuivi jusqu'à `:6203` | établi |
| Cases moteur levé → refus par min | `T7\...06.22.03.log:811-816` | établi |
| Moteur + min levés → chargé → plantage | `T7\LifePlay.log:813` « charge malgre » ; `T7\Crashes` (1 dossier) | établi |
| P10 (Pocolov refusé, Continuer) | `P10\5.8\LifePlay.log:827,831,885,888` (refus, mod ignoré par `ScanFiles`, table 126, 0 ajoutée) ; 0 `Fatal`/`appError` ; sauvegarde `P10\5.5\Player.lpcharacter:17` porte `Pocolov17` ; log 5.5 charge Pocolov | établi pour le refus et l'absence de plantage ; « coiffure absente » et « absente de l'éditeur » : visuel (R1) |
| T9 (gestionnaire « (not loaded) ») | `T9\LifePlay.log:6248` et `T11\LifePlay_U7c_GM.log:6248` « gestionnaire, 1 mod(s) refuse(s) marque(s) » | établi pour le marquage ; teinte, case grisée, marquage conservé après ▲/▼ : visuel (R1) |
| T11/T12 (C2) | `T11\LifePlay_U7d_T12_C2_ok.log` : 0 « reconstruction », 0 occurrence de `UpdateDefaultHair` ; (78 « Accessed None » au total sont d'autres Blueprints, p. ex. `MainMenu_C`, ils ne concernent pas `UpdateDefaultHair`) ; avant : `LifePlay_U7c_T11_sans_mod.log:6218` « reconstruction » | établi |
| T1/T2 (3 mods acceptés, 104 clips, 138 coiffures) | `T2-T6\LifePlay.log:839-841` accepte ×3 (conteneur 5, registre 24, 5.8.3) ; `:916-917,6231` 20 + 84 clips, « 104 clip(s) ajoute(s) ... (138 au total) » ; `:910` table de 138 ; aucun Warning `Modules :` | établi |
| C1 | `T2-T6\LifePlay.log:7611` « 88 maillage(s) conserve(s) a la reconstruction (100 chemin(s) charge(s) avant, 12 sans entree) » (et `...backup-09.06.20.log:9726`) | établi |
| T3 (12 coiffures retirées) | `T2-T6\LifePlay.log:7612` « 0 ajoutee(s), 12 ignoree(s), table de 126 » | établi |
| T6 (Continuer + rechargement) | `T2-T6\LifePlay.log:951-953` Browse `CentralLondon?Name=Player` (Continuer) dans les deux journaux ; aucune ligne ne prouve un rechargement après sauvegarde | Continuer établi ; « sauvegarde puis rechargement » incertain (R2) |
| T5 (quaternius V2.0 dans jeu 5.5) | `T5\LifePlay.log:191` « Invalid pak file version (12) in '.../lpr_anim_quaternius/Content/Paks/Windows/... .pak'. Verify your installation. » ; 1 dossier `Crashes` | établi |
| T7 (mod de test, UI chaîne complète) | `T7\LifePlay_U7d_T7.log:827` « lpr_test_u7t7 accepte (conteneur 5, registre 24, EngineVersion 5.8.3, construit pour LifePlay 2026.10.2.0) » ; `T7\Editeur_EditMod.log:1341-1343` (éditeur non cuit, mod sans `MODULE_GAME_VERSION` accepté) ; « Pocolov15 ajoutée et rendue » : visuel (R1) | établi (garde) / visuel (rendu) |
Lacune d'archivage : aucune pour les journaux cités ; aucun écart entre une ligne citée par le SUIVI et son journal.
Réserves : R1 les constats purement visuels (teinte, case grisée, marquage après ▲/▼, coiffure absente à l'écran, rendu de Pocolov15, cases Misc entières) reposent sur l'essai de l'utilisateur, pas sur un journal ; R2 T6 « sauvegarde puis rechargement » n'a pas de preuve dans le journal archivé (le second journal montre une table à 138, soit Pocolov réactivé au redémarrage) ; R3 le SUIVI annonce (T9) « en cours » dans le tableau des fiches alors que le texte plus bas le donne « fait » : incohérence de forme.
## V6 — addon
- `git diff Tools/BuildMod.ps1` lu : écriture de `EngineVersion` (lecture de `<moteur>\Build\Build.version`, `X.Y.Z` validé, `Add-Member EngineVersion` dans le `.uplugin` livré). Ajouts accessoires : 3 lignes de commentaire d'aide (`.DESCRIPTION`) et une ligne `Write-Host "moteur de la cuisson : ..."` ; rien d'autre (pas de changement de logique hors `EngineVersion`).
- 3 `.lpmod` : `git diff` = une seule ligne `-/+` par fichier, `MODULE_AUTHOR: LifePlay Revival (animations by SoerGame|Quaternius|hairstyles by Pocolov)` → `MODULE_AUTHOR: LifePlay Revival`.
- 3 archives `D:\Game\LifePlay_Publication\Mods\*-1.0-for-LifePlay-2026.10.2.0.zip` (python `zipfile`, `testzip` = None) : `MODULE_GAME_VERSION: 2026.10.2.0`, `MODULE_AUTHOR: LifePlay Revival`, `.uplugin` `EngineVersion 5.8.3`, un pak chacune (freeanims 41 entrées, quaternius 105, pocolov 29).
- `Releases\2026.10.2.0\Windows` présent dans la copie 5.8 (ignoré par git : `.gitignore:46 /Releases/`) ; SHA-256 de `LifePlay-Windows.utoc` identique à `D:\Game\LifePlay_Build_5.8_Shipping_V2.0\...\Paks\LifePlay-Windows.utoc` : `9d4bf712aae693fccf5612176fe12fc8008453ff0e1b4625bdd680f851bcfc24` ; `.pak` 20 216 202 o et `.ucas` 1 259 275 600 o de même taille des deux côtés.
## V7 — état des dépôts
- `D:\Game\LifePlay-master 5.8\Mods` : existe, `ls -A` vide.
- `git status` copie 5.8 : 9 `M` attendus + 4 `??` attendus (`LPModGuard.h/.cpp`, `29_*.md`, `30_*.md`) ; aucun fichier parasite. Aucune entrée indexée (`diff --cached` vide).
- `git status` addon : 3 `.lpmod` + `Tools/BuildMod.ps1` attendus, plus `Docs/Modding/Creating_Asset_Mods.md` (agent DOC parallèle : non validé ici, comme demandé). Aucun parasite.
- Fichiers que cette validation a produits (hors dépôts git, dossier `etat\` non suivi) : `U7-VAL_BuildLog_*.txt` ×3 et `U7-VAL_LPTestStringCompat_*.txt` dans `D:\Game\LifePlay-master 5.8\Docs\Migration\etat\`, journal `U7-VAL_LPTestStringCompat_20261009-123419.log` dans `Saved\Logs\portage` ; scripts jetables dans le scratchpad.
## Écarts et ce qui n'a pas été rejoué
- E1 (ci-dessus) : chaînes « Unreal Engine x.y » dans la fenêtre et le motif `EngineVersion` — décision d'interprétation.
- Non rejoué : aucun essai en jeu (interdit) ; les builds n'ont pas été recompilés (recomptés par journal) ; R1 à R3 de V5 ; contenu des docs `29_*`, `30_*` et du guide moddeurs (hors fiche).
- Le résumé `Build.ps1` ne rapporte « DLL liées » que pour l'éditeur (connu, SUIVI).
Suite : orchestrateur doit trancher E1 (garder ou retirer les « Unreal Engine x.y » de la fenêtre et du motif `EngineVersion`) puis lancer INT (commits addon, pin, jeu) ; état : U7-VAL terminé, aucun FAIL.