LifePlay-Revival/Docs/Migration/etat/ST/STE/STE-H3g-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

10 KiB
Raw Blame History

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.md en 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.py n'est pas applicable (il lit des dumps ##### paquet / [classe], format de LPDumpFunction diffé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.txt lignes 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 -Exec sont 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 isSameAs ne 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 .md de Docs\ : 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 (.uasset binaire). Comptes : 1 fichier de contenu, 4 nœuds, 2 coupures, 10 liens.
  • Ajouts de la VAL : 7 fichiers STE-H3gV_*.txt (sorties de commandlets sous etat\ST\STE\) et ce livrable ; journaux sous Saved\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_93573D 2 → 0 et UpdateDefaultHair 4 → 0, avec preuve de parcours (SPEC § 7.4) ; Person_24_.*of length 0 (2) et isSameAs (3) attendus inchangés (G15 non écrite).
  • « 0 itération sur tableau effacé » avant le correctif : estimé (macro ForEachLoop non lue), non mesurable ici.
  • Code 1 de Wait-HyperAIStudioMCP.ps1 (IMPL E2) : à instruire hors lot.
  • Les 3 erreurs CC_Shaders (code 3 de CompileAllBlueprints) 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).