10 KiB
Fiche STE-H3g-v — Niveau N1 — Modèle prévu sonnet | utilisé claude-sonnet-5-5 — Agent lp-validator — Skills lp-validate, sk-recount, sk-protocol, debug-verification
STE-H3g-VAL : validation statique de la garde G16 (GI:EventGraph, UpdateDefaultHair), G15 non écrite (2026-10-13)
Copie D:\Game\LifePlay-master 5.8, branche ue5.8, HEAD 0745917. Éditeur fermé pendant toute la VAL (Tools\UeState.ps1 = 0 avant et après). Commandlets en lecture seule, un à la fois. Critères 4 et 5 de la SPEC § 7 (journal de jeu, non-régression en jeu) : reportés à la session COMMUN-2.
1. Fiches amont relues
etat\ST\STE\fiches\STE-H3g-v.md(cette fiche),STE-H3g-SPEC.md§ 2.3 (l. 146-181) et § 7 (l. 220-243),STE-H3g-IMPL.mden entier (§ 1 à 5, Constats).- Dumps d'avant :
etat\ST\STE\dumps\GI__EventGraph_P2.txt(6 249 nœuds, premier listing = 30 176 lignes).
2. Points à confirmer des IMPL (IMPL § 5)
| Point | Verdict | Preuve |
|---|---|---|
Dump EventGraph → (6253 noeuds) ; noms réels CallFunction_715 / IfThenElse_219 / CallFunction_720 / IfThenElse_220 ; liens SPEC § 7.1 |
PASS | § 3 lignes 1-3 |
Écart E1 (6 247 → 6 251 par find_nodes) = 6 249 → 6 253 au sens du dump |
PASS | le dump compte 6 253 ; mon recompte des blocs de nœuds : avant 6 249, après 6 253 (§ 3 ligne 2) |
| Diff avant / après : seuls 4 nœuds, 2 coupures, 10 liens | PASS | § 3 ligne 4 (DiffRemplacementNoeuds.py non applicable, voir § 3 note) |
isSameAs reste à 11 ; GetVariable 53 ; Action:EventGraph 363 ; CallFunctionReturnBool 594 |
PASS | § 3 ligne 5 |
CompileAllBlueprints : BP /Game/ 0 erreur ; LPTestStringCompat 3120 / 0 / 60 |
PASS | § 3 lignes 6-7 |
MD5 GI = 0e6aedcc… au départ ; Person 8668a47c… et Room ca2a9a0b… inchangés |
PASS | § 3 lignes 8-9 |
Journal de jeu : SkeletalMesh_2_93573D 2 → 0, UpdateDefaultHair 4 → 0, Person_24_.*of length 0 et isSameAs inchangés, parcours rejoué |
reporté (COMMUN-2) | SPEC § 7.4, § 7.5 ; build empaqueté non fait |
R-H3g-4 : « 0 itération sur tableau effacé » estimé ; aucune autre suite d'exécution que CallFunction_5654 |
PASS pour la seconde moitié (dump : LoopBody → SetMaterial dont then est (vide), Completed → CallFunction_5654.execute, lignes 6079-6084 et 6171-6184 du journal) ; la première moitié reste estimée, reportée (COMMUN-2) |
|
Code 1 de Wait-HyperAIStudioMCP.ps1 (E2) |
reporté : hors lot, à instruire par l'orchestrateur (aucun MCP lancé en VAL) |
3. Critères rejoués (commande → sortie brute → verdict)
Journaux : D:\Game\LifePlay-master 5.8\Saved\Logs\portage\STE-H3gV_*.log ; résumés .txt dans etat\ST\STE\ (STE-H3gV_*.txt, 7 fichiers).
| # | Critère (SPEC § 7) | Commande | Sortie brute | Verdict |
|---|---|---|---|---|
| 0 | Entrée | md5sum GI, Person, Room ; git status --short -- Content ; Tools\UeState.ps1 |
0e6aedcccd1a6522282f9a423843ce45, 8668a47c627f7a5254910cf0ac33b12a, ca2a9a0baaca4130fd5c318797f008ae ; M ×3 (GI, Person, Room) ; processus=0 editeur=0 compilation=0 shaders=0 jeu=0 ; aucun GI_Auto* (restent Person_Auto1, Room_Auto1-4, TestStatic_Auto1) |
PASS |
| 1 | Dump EventGraph | .\Tools\RunCommandlet.ps1 -Lot STE-H3gV -Commandlet LPDumpFunction -Args '-BP=GI -Fn=EventGraph -Pins -Exec' -EtatDir …\etat\ST\STE |
code=0 duree=61s erreurs=0 avertissements=30244 ; journal l. 1931 : === GI :: EventGraph (6253 noeuds) === |
PASS |
| 1a | Liens G16 (journal STE-H3gV_LPDumpFunction_20261013-181041.log) |
Grep des blocs de nœuds | l. 5650 CallFunction_662.then -> IfThenElse_219.execute (seul) ; l. 5656 CallFunction_661.then -> IfThenElse_220.execute (seul) ; l. 6172 MacroInstance_4.Exec -> IfThenElse_220.then ; l. 6179 MacroInstance_5.Exec -> IfThenElse_219.then ; l. 6072 CallFunction_5654.execute -> MacroInstance_4.Completed, MacroInstance_5.Completed, IfThenElse_219.else, IfThenElse_220.else (4 sources) ; l. 21762 BreakStruct_12.SkeletalMesh_2_… -> VariableGet_1147.self, CallFunction_662.NewMesh, CallFunction_715.Object ; l. 21781 idem BreakStruct_13 -> VariableGet_64.self, CallFunction_661.NewMesh, CallFunction_720.Object ; l. 5652 / 5658 NewMesh toujours relié ; l. 32126-32143 : CallFunction_715/_720 = KismetSystemLibrary::IsValid(), ReturnValue -> IfThenElse_219/_220.Condition, then -> MacroInstance_5/_4.Exec, else -> CallFunction_5654.execute |
PASS |
| 2 | Compte | recompte autonome (script de la VAL, voir note) | avant 6249 apres 6253 ; nouveaux: ['K2Node_CallFunction_715', 'K2Node_CallFunction_720', 'K2Node_IfThenElse_219', 'K2Node_IfThenElse_220'] ; disparus: [] |
PASS |
| 3 | Niveau pins | idem | pins modifies sur noeuds communs: 7 : BreakStruct_12 et _13 (SkeletalMesh_2_… + 1 cible IsValid.Object), CallFunction_5654 (execute + 2 sources else), CallFunction_661 / _662 (then), MacroInstance_4 / _5 (Exec) ; aucun autre |
PASS |
| 4 | Diff liens | idem | liens sortants avant 16236 apres 16252 ; perdus (4 entrées orientées = 2 liens coupés) : 661.then→MacroInstance_4.Exec, 662.then→MacroInstance_5.Exec et leurs inverses ; nouveaux : 20 entrées orientées = 10 liens (20 − 4 = 16 = 16252 − 16236) |
PASS |
| 5 | Non-régression | LPDumpFunction un par un, -Pins -Exec |
GI :: isSameAs (11 noeuds) (journal …181230, l. 1931) ; GI :: GetVariable (53 noeuds) (…181320) ; GI :: CallFunctionReturnBool (594 noeuds) (…181411) ; Action :: EventGraph (363 noeuds) (…181507) ; chaque commande code=0 erreurs=0 |
PASS |
| 6 | CompileAllBlueprints | .\Tools\RunCommandlet.ps1 -Lot STE-H3gV -Commandlet CompileAllBlueprints -EtatDir … |
code=3 duree=191s erreurs=25 avertissements=55 ; Grep Error: → 25 lignes, toutes /Engine/CC_Shaders/Utilities/… ; Grep Error:.*/Game/ → 0 ; journal l. 3301 Compiling Completed with 3 errors and 0 warnings and 0 blueprints that failed to load. ; Grep a réussi → 420 ; journal l. 142 du résumé La compilation de GI a réussi ! [en 4 050 ms] (/Game/BPs/GI.GI) ; Person et Room a réussi |
PASS (BP /Game/ : 0 erreur ; 25 / 3 / 55 / 420 identiques à la référence VAL H3d ; CC_Shaders à part, code 3 inchangé) |
| 7 | LPTestStringCompat | .\Tools\RunCommandlet.ps1 -Lot STE-H3gV -Commandlet LPTestStringCompat -EtatDir … |
code=0 duree=15s erreurs=0 avertissements=2 ; === 3120 cas : compat != herite(UE4) : 0 ; moteur != herite(UE4) : 60 === |
PASS |
| 8 | Empreintes de fin | md5sum + git status --short -- Content + UeState.ps1 |
GI 0e6aedcccd1a6522282f9a423843ce45, Person 8668a47c627f7a5254910cf0ac33b12a, Room ca2a9a0baaca4130fd5c318797f008ae (identiques à l'entrée) ; M ×3 inchangé ; processus=0 editeur=0 compilation=0 shaders=0 jeu=0 ; aucun GI_Auto* |
PASS |
| 9 | Instantané intact | md5sum D:\Game\LifePlay_Backup_5.5\STE-H3g\Content\BPs\GI.uasset |
c4817b847ecf246c859647577647d6e9 (= GI d'avant) ; retour arrière possible |
PASS |
| 10 | Critères 4-5 (jeu) | — | non rejoués | reporté à COMMUN-2 |
Notes :
Tools\DiffRemplacementNoeuds.pyn'est pas applicable (il lit des dumps##### paquet/[classe], format deLPDumpFunctiondifférent, et ses profils L7a / L7b / CX-B12 ne couvrent pas cette modification). Substitut prévu par la fiche : diff des listes de nœuds et de liens, fait par un script de la VAL rangé dans le scratchpad de session (comparaison premier listing avant,GI__EventGraph_P2.txtlignes 1-30176, contre premier listing après, journal lignes 1931-32143 ; liens comparés en ensembles triés). Il n'écrit rien dans le dépôt.- Les listings
-Pins -Execsont doublés dans le journal (second en bloc « Warning/Error Summary ») ; seul le premier a servi au diff, les liens cités ci-dessus sont ceux du premier listing. - Le « 15 » de la SPEC § 7.1 pour
isSameAsne s'applique pas (G15 abandonnée, Q-H3g-1 = c) : 11 attendu et obtenu.
4. Diff lu en entier
git status --short(exécuté en fin de VAL) : fichiers suivis modifiés du dépôt =Content/BPs/GI.uasset,Person.uasset,Room.uasset,Source/LifePlay/LPDebugSubsystem.{cpp,h},LPOutdoorRoomSubsystem.{cpp,h},Tools/claude/hooks/ecriture-gardien.py(supprimé) et des.mddeDocs\: tous présents dans l'état git d'ouverture de session (autres lots), aucun ajout par cette VAL.- Pour STE-H3g, le seul fichier de contenu touché est
Content/BPs/GI.uasset(binaire : pas de diff texte ; le contrôle est le diff de graphe du § 3 lignes 2-4 : 4 nœuds ajoutés, 0 retiré, 2 coupures, 10 liens, 7 broches de 7 nœuds existants modifiées, toutes prévues par SPEC § 2.3.2 et IMPL § 1.3). - Fins de ligne : sans objet (
.uassetbinaire). Comptes : 1 fichier de contenu, 4 nœuds, 2 coupures, 10 liens. - Ajouts de la VAL : 7 fichiers
STE-H3gV_*.txt(sorties de commandlets sousetat\ST\STE\) et ce livrable ; journaux sousSaved\Logs\portage\(ignorés par git).
5. Verdict
PASS (statique + commandlets en lecture seule) sur les critères 1 à 3 de la SPEC § 7, parties G16 et non-régression. Critères 4 et 5 (journal de jeu) : reportés à COMMUN-2, non comptés comme passés. Aucun écart E# ouvert par la VAL.
MD5 finaux : GI 0e6aedcccd1a6522282f9a423843ce45 ; Person 8668a47c627f7a5254910cf0ac33b12a ; Room ca2a9a0baaca4130fd5c318797f008ae (identiques à l'entrée).
6. Points à confirmer par l'utilisateur
- Journal de jeu COMMUN-2 :
SkeletalMesh_2_93573D2 → 0 etUpdateDefaultHair4 → 0, avec preuve de parcours (SPEC § 7.4) ;Person_24_.*of length 0(2) etisSameAs(3) attendus inchangés (G15 non écrite). - « 0 itération sur tableau effacé » avant le correctif : estimé (macro
ForEachLoopnon lue), non mesurable ici. - Code 1 de
Wait-HyperAIStudioMCP.ps1(IMPL E2) : à instruire hors lot. - Les 3 erreurs
CC_Shaders(code 3 deCompileAllBlueprints) restent à part, identiques à H3d : décision de l'utilisateur déjà prise le 2026-10-13.
Fichiers à commiter
- A
Docs/Migration/etat/ST/STE/STE-H3g-VAL.md - A
Docs/Migration/etat/ST/STE/STE-H3gV_*.txt(7 résumés de commandlets ; au choix du gardien, traces)
Tours : 24 / 40
Constats
- Fiche : « ne pas toucher Person et Room » respecté (MD5 identiques avant / après).
- Le crochet n'a bloqué aucune commande (aucune redirection
>utilisée).