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

13 KiB
Raw Blame History

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 estLogCook: 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.