13 KiB
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) +EngineVersiondu.uplugin(:339-357) ; min2026.10.2.0(:31,:375) ; max =ProjectVersion(:240,:381). - Démontage au
StartupModule:LifePlay.cpp(FLifePlayGameModule::StartupModule→FLPModGuard::Run()), démontageUnloadPlugin(LPModGuard.cpp:174-218, appelé:458), seulement jeu cuit (:437). - 3 cases Misc :
LPModInfoSubsystem.cpp(EnsureSettingsRows, nomsLPModCheck*) + classement MiscLPSettingsSubsystem.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,ModEnabledBoxdé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 deSync,HairModules+EnabledSignature). Pas de C3 (aucun changement d'ordre d'affichage) : conforme. DefaultGame.ini: seule ligneProjectVersion=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 surLPModGuard.*= 0. Suppression deFieldText/IsModuleEnableddeLPModInfoSubsystem: remplacés parFLPModGuard, 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.iniLF 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 fichiersLPModGuard.*: LF, CRLF = 0, sans BOM (cohérent avec la majorité LF du dossier).- Addon :
BuildMod.ps1LF 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.ps1lu : écriture deEngineVersion(lecture de<moteur>\Build\Build.version,X.Y.Zvalidé,Add-Member EngineVersiondans le.upluginlivré). Ajouts accessoires : 3 lignes de commentaire d'aide (.DESCRIPTION) et une ligneWrite-Host "moteur de la cuisson : ..."; rien d'autre (pas de changement de logique horsEngineVersion).- 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(pythonzipfile,testzip= None) :MODULE_GAME_VERSION: 2026.10.2.0,MODULE_AUTHOR: LifePlay Revival,.upluginEngineVersion 5.8.3, un pak chacune (freeanims 41 entrées, quaternius 105, pocolov 29). Releases\2026.10.2.0\Windowsprésent dans la copie 5.8 (ignoré par git :.gitignore:46 /Releases/) ; SHA-256 deLifePlay-Windows.utocidentique àD:\Game\LifePlay_Build_5.8_Shipping_V2.0\...\Paks\LifePlay-Windows.utoc:9d4bf712aae693fccf5612176fe12fc8008453ff0e1b4625bdd680f851bcfc24;.pak20 216 202 o et.ucas1 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 -Avide.git statuscopie 5.8 : 9Mattendus + 4??attendus (LPModGuard.h/.cpp,29_*.md,30_*.md) ; aucun fichier parasite. Aucune entrée indexée (diff --cachedvide).git statusaddon : 3.lpmod+Tools/BuildMod.ps1attendus, plusDocs/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 etU7-VAL_LPTestStringCompat_*.txtdansD:\Game\LifePlay-master 5.8\Docs\Migration\etat\, journalU7-VAL_LPTestStringCompat_20261009-123419.logdansSaved\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.ps1ne 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.