10 KiB
Fiche STG-B2Pv — Niveau N1 — Modèle prévu lp-validator | utilisé claude-sonnet-5-5 — Agent lp-validator — Skills lp-validate, lp-commandlets, sk-protocol, sk-recount, debug-verification
STG-B2P-VAL : validation statique de G-B1a + K8-a dans Person (2026-10-13)
Verdict global : PASS-STATIC (contrôles a à d conformes ; aucun écart). Dump et compilation rejoués par commandlets en lecture seule, éditeur fermé ; rien n'est rejoué en jeu.
1. Fiches amont relues
Docs\Migration\etat\ST\STG\fiches\STG-B2P.md(gestes a-f, critères).Docs\Migration\etat\ST\STG\STG-B2P-IMPL.md(32 appels MCP, 5 nœuds, 3 liens coupés, 14 créés, MD5, E1).Docs\Migration\etat\ST\STG\STG-B1-VAL.md(référence des chiffres 25 / 3 / 55 / 420 et du dump de 14:36).- Aucune autre IMPL dans ce lot pour cette fiche (vérifié : une seule IMPL,
STG-B2P-IMPL.md).
2. Points à confirmer des IMPL (STG-B2P-IMPL.md § 5)
| Point | Verdict | Preuve |
|---|---|---|
| Relecture sur disque, éditeur fermé : 3714 nœuds, liens du § 1.3 présents, 3 liens coupés absents | PASS | § 3 b, c ; journal l. 1931 (3714 noeuds) |
MacroInstance_72 = macro IsValid (E1) |
PASS (estimé pour l'origine exacte) | dump l. 21366 macro 'IsValid' : le dumpeur imprime MacroGraph->GetName() (Source\LifePlayEditorTools\LPDumpFunctionCommandlet.cpp:48) ; broches exec, InputObject, Is Valid, Is Not Valid présentes. Que ce graphe soit celui des StandardMacros n'est pas démontré par le nom seul (incertain, sans effet sur la logique) |
CompileAllBlueprints éditeur fermé : aucun message pour Person |
PASS | § 3 d, l. 2021 La compilation de Person a réussi ! [en 3 067 ms] |
Build empaqueté + LogStats (E-B1-1, Person vide) |
reporté (hors fiche : preuve en jeu, non rejouable ici) | — |
| K8-a en jeu (deux personnages sur un meuble) | reporté (idem) | — |
Estimé : Map_Find ajoute un usage de Room.OccupiedFnts si GI.Room vide (+1 ligne Accessed None possible) |
reporté (à compter dans LogStats en jeu) |
statique : les Map_Find lisent VariableGet_168 / _213 existants (§ 3 c4) |
3. Critères rejoués
a. MD5 et UeState
Départ (17:4x, avant mes commandlets) : md5sum Content/BPs/Person.uasset Content/BPs/Room.uasset Content/BPs/GI.uasset
8668a47c627f7a5254910cf0ac33b12a *Person.uasset
ca2a9a0baaca4130fd5c318797f008ae *Room.uasset
c4817b847ecf246c859647577647d6e9 *GI.uasset
-rw-r--r-- ... 20821244 Oct 13 17:42 Person.uasset
pwsh -NoProfile -File Tools/UeState.ps1 (départ) : processus=0 editeur=0 compilation=0 shaders=0 jeu=0, code 0.
Fin (même commande, après dump et CompileAllBlueprints) : mêmes trois MD5 (8668a47c…, ca2a9a0b…, c4817b84…) ;
UeState processus=0 editeur=0 compilation=0 shaders=0 jeu=0, code 0.
Attendu 8668A47C…, Room CA2A9A0B…, GI C4817B84…, UeState 0 : PASS.
git status --short -- Content Source Config : M Content/BPs/Person.uasset, M Content/BPs/Room.uasset, M Source/LifePlay/LPDebugSubsystem.{cpp,h},
M Source/LifePlay/LPOutdoorRoomSubsystem.{cpp,h}, ?? Source/LifePlay/LPCameraModeSubsystem.{cpp,h} : mêmes entrées Source qu'au départ du lancement (autres lots).
b. Dump et diff
Commande : pwsh -NoProfile -File 'D:\Game\LifePlay-master 5.8\Tools\RunCommandlet.ps1' -Lot STG-B2Pv -Commandlet LPDumpFunction -Args "-BP=Person -Fn=EventGraph -Pins -Exec" -EtatDir 'D:\Game\LifePlay-master 5.8\Docs\Migration\etat\ST\STG'
Sortie : code=0 duree=56s erreurs=0 avertissements=19511 ; journal Saved\Logs\portage\STG-B2Pv_LPDumpFunction_20261013-174614.log
(titre l. 1931 : === Person :: EventGraph (3714 noeuds) ===) ; résumé etat\ST\STG\STG-B2Pv_LPDumpFunction_20261013-174614.txt.
Aucune recompilation de modules demandée.
Diff contre STG_LPDumpFunction_20261013-143609.log (3709 nœuds) : script de lecture seule dans le dossier temporaire de session
(d.py, découpe en blocs K2Node_*, cibles de liens triées, comparaison par nom de broche). Sortie brute :
before 3709 after 3714
added ['K2Node_CallFunction_748', 'K2Node_CallFunction_971', 'K2Node_CommutativeAssociativeBinaryOperator_123', 'K2Node_CommutativeAssociativeBinaryOperator_124', 'K2Node_MacroInstance_72']
removed []
changed 12 ['K2Node_CallFunction_316', 'K2Node_CallFunction_412', 'K2Node_CallFunction_635', 'K2Node_CommutativeAssociativeBinaryOperator_44', 'K2Node_CommutativeAssociativeBinaryOperator_49', 'K2Node_CustomEvent_39', 'K2Node_CustomEvent_50', 'K2Node_CustomEvent_72', 'K2Node_IfThenElse_90', 'K2Node_VariableGet_168', 'K2Node_VariableGet_213', 'K2Node_VariableSet_241']
Recompte : 3709 + 5 = 3714 (titre du dump = 3714). Les 12 nœuds modifiés sont exactement la liste de la fiche (CustomEvent_72, CallFunction_635, VariableSet_241, IfThenElse_90, VariableGet_168, VariableGet_213, CustomEvent_50, CustomEvent_39, Operator_44, Operator_49, CallFunction_316, CallFunction_412) ; aucun autre. Détail des changements (sortie du script) : 316.Value 44 → 123 ; 412.Value 49 → 124 ; 635.then 241.execute → MacroInstance_72.exec ; 44.ReturnValue 316.Value → 123.B ; 49.ReturnValue 412.Value → 124.B ; 39.SMC + 971.Key ; 50.SMC + 748.Key ; 72.Person + MacroInstance_72.InputObject ; 90.execute + MacroInstance_72.Is Not Valid ; 168.OccupiedFnts + 748.TargetMap ; 213.OccupiedFnts + 971.TargetMap ; 241.execute 635.then → MacroInstance_72.Is Valid. Limite : le dump ne donne ni positions ni commentaires (non comparés). PASS.
c. Logique (dump après, lignes du journal B2Pv)
635.then -> MacroInstance_72.exec(l. 17098) ;MacroInstance_72.Is Valid -> VariableSet_241.execute(l. 21369, et 241.execute l. 21341) ;Is Not Valid -> IfThenElse_90.execute(l. 21370, et 90.execute573.then, MacroInstance_72.Is Not Validl. 17369) ;InputObject -> CustomEvent_72.Person(l. 21368 ; Person ->…MacroInstance_72.InputObjectl. 17080). PASS. 241.then → 573.execute inchangé (l. 21342).- Site 1 :
316.Value <- Operator_123.ReturnValue(l. 14556, 21381) ;123 = KismetMathLibrary::Max()avecA <- CallFunction_748.Value,B <- Operator_44.ReturnValue(l. 21379-21380) ;748 = Map_Find,TargetMap <- VariableGet_168.OccupiedFnts,Key <- CustomEvent_50.SMC(l. 21373-21374). PASS. - Site 2 :
412.Value <- Operator_124.ReturnValue(l. 13626, 21392) ;124 = Max()avecA <- 971.Value,B <- Operator_49.ReturnValue(l. 21390-21391) ;971 = Map_Find,TargetMap <- VariableGet_213.OccupiedFnts,Key <- CustomEvent_39.SMC(l. 21384-21385). PASS. - Aucune lecture de Room ajoutée :
VariableGet_167(Room) ne sert queVariableGet_168.self(l. 14558) etVariableGet_212que_213.self(l. 13615) ; seules les sortiesOccupiedFntsde 168 / 213 ont un lecteur de plus (Map_Find). Le diff n'a ajouté aucun nœudRoomniGI(5 ajouts = IsValid, 2 Map_Find, 2 Max). PASS. - Les
Maxsont entiers :KismetMathLibrary::Max();D:\Game\Launcher\Engine\UE_5.8\Engine\Source\Runtime\Engine\Classes\Kismet\KismetMathLibrary.h:391-392:DisplayName = "Max (Integer)"…static int32 Max(int32 A, int32 B)(le flottant estFMaxl. 728, l'entier 64 bitsMaxInt64l. 495). PASS. Réserves :Map_Find.ReturnValue(bool) est inutilisée (= 'false'dans le dump) : clé absente →Value0 (comportement du moteur, non rejoué en jeu).
d. CompileAllBlueprints
Commande : pwsh -NoProfile -File 'D:\Game\LifePlay-master 5.8\Tools\RunCommandlet.ps1' -Lot STG-B2Pv -Commandlet CompileAllBlueprints -EtatDir 'D:\Game\LifePlay-master 5.8\Docs\Migration\etat\ST\STG'
code=3 duree=196s erreurs=25 avertissements=55
resume : …\etat\ST\STG\STG-B2Pv_CompileAllBlueprints_20261013-174720.txt
journal : …\Saved\Logs\portage\STG-B2Pv_CompileAllBlueprints_20261013-174720.log
Recompte du journal par d'autres filtres : Error: = 25 (Grep count) ; Error:.*/Game/ = 0 (aucune correspondance) ; Error: hors CC_Shaders = 7 (les Script Msg: Could not find graph function data, comme en B1-VAL) ;
l. 3302 Compiling Completed with 3 errors and 0 warnings and 0 blueprints that failed to load. ; l. 2021 La compilation de Person a réussi ! [en 3 067 ms] (/Game/BPs/Person.Person) ;
lignes « a réussi » = 420. Référence STG-B1-VAL.md § 3 e : 25 / 3 / 55 / 420, code 3 : identique. Code 3 dû aux 3 erreurs CC_Shaders/CR_FaceExpRig (à part). PASS.
4. Diff lu en entier
- Fichier modifié :
Content/BPs/Person.uassetseul (binaire ; 20 808 711 → 20 821 244 octets, MD5 conforme à l'IMPL et à la fiche ; lu par dump, pas pargit difftexte). - EventGraph : 3709 → 3714 nœuds, 5 ajoutés, 0 retirés, 12 modifiés (§ 3 b). Aucune propriété de composant ni autre fonction examinée (hors périmètre de la fiche).
- Écart E1 de l'IMPL (libellé
Utilities|IsValidau lieu deUtilitaires|IsValid) : sans effet, nœud et liens conformes au geste (§ 2). - Fins de ligne : sans objet (asset binaire).
- Fichiers produits par mes commandlets (hors dépôt de code) :
STG-B2Pv_LPDumpFunction_20261013-174614.txt,STG-B2Pv_CompileAllBlueprints_20261013-174720.txtdansetat\ST\STG\.
5. Verdict
PASS-STATIC : a, b, c, d conformes. Non rejoué : jeu, LogStats, compilation éditeur avec message (journal éditeur de l'IMPL non rejoué), tolérance en jeu de Person vide et de la clé absente.
6. Points à confirmer par l'utilisateur
- Preuve en jeu (build empaqueté +
LogStats) : Person vide dansmoveToPersonStandsansAccessed None, et comportement de K8-a avec deux personnages sur un meuble (reporté, build commun ordonné par Big Boss). - Compter dans
LogStatsune éventuelle ligneAccessed Nonede plus en 316 / 412 siGI.Roomest vide (estimé dans l'IMPL).
Trace
Trace : D:\Game\LifePlay-master 5.8\Saved\Logs\portage\STG-B2Pv_LPDumpFunction_20261013-174614.log et …\STG-B2Pv_CompileAllBlueprints_20261013-174720.log — Fiche STG-B2Pv — 2026-10-13 17:46-17:52
Commande : voir § 3 b et d (copie 5.8, UE_5.8, UnrealEditor-Cmd, pwsh)
Environnement: branche ue5.8, Person 8668A47C…, éditeur fermé, machine calme (UeState 0 avant et après)
Attendu : 3714 nœuds, 5 ajoutés, 12 modifiés listés ; 25 / 3 / 55 / 420, 0 erreur sous /Game/
Obtenu : conforme (§ 3)
Lecture : code 3 de CompileAllBlueprints = erreurs CC_Shaders seules ; LPDumpFunction n'affiche pas les valeurs de classe (DefaultObject)
Fichiers à commiter
Aucune modification de fichier suivi par moi. Fichiers nouveaux sous etat\ST\STG\ (A) : STG-B2P-VAL.md, STG-B2Pv_LPDumpFunction_20261013-174614.txt, STG-B2Pv_CompileAllBlueprints_20261013-174720.txt.
Tours : 19 / 40