LifePlay-Revival/Docs/Migration/etat/CAM/CAM-B2s-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

16 KiB

Fiche CAM-B2s-VAL — Niveau N1 — Modèle prévu non précisé par la demande | utilisé claude-sonnet-5-5 — Agent lp-validator (A-VAL) — Skills sk-protocol, sk-recount, debug-verification, lp-validate

CAM-B2s-VAL : validation de CAM-B2s (Room, orientation de C1 recalée P5, pose avant le retour de la vue P6) (2026-10-14)

Verdict global : PASS (V5, V6, MD5 et UeState rejoués à neuf, éditeur fermé). V7 (essai en jeu) n'est pas de cette VAL : reporté.

Copie D:\Game\LifePlay-master 5.8, branche ue5.8 (git branch --show-current). Aucun asset, code ni doc validée modifié par la VAL. Seuls fichiers écrits : les 2 sorties de commandlets (§ 3) et ce livrable. Aucune commande git qui écrit.

1. Fiches amont relues

  • CAM-B2s-FICHE.md (parties P5 et P6, étapes 1 à 6, VAL V5 / V6 / V7) : relue en entier.
  • CAM-B2s-IMPL.md (46 / 60 tours, agent lp-mcp-bp) : relue en entier. Gabarit IMPL de lp-doc : les 6 sections numérotées sont présentes et dans l'ordre (1 Fichiers modifiés, 2 Écarts, 3 Instantané, 4 Pas fait, 5 Points à confirmer, 6 Fichiers à commiter), plus Mesuré et Constats (permis), Tours : 46 / 60 présent. En-tête sur 2 lignes conforme ; « Modèle prévu non précisé par la fiche » (même écart de forme que B2k / B2m, non bloquant).
  • Références de diff : CAM-B2kmn-VAL_LPDumpFunction_20261014-011706.txt (Room d'avant, EventGraph 1272 nœuds) et CAM-B2kmn-VAL_CompileAllBlueprints_20261014-011924.txt (V6).
  • Instantané d'avant : D:\Game\LifePlay_Backup_5.5\CAM-B2s\ (Room 3A451FDD…, cité par l'IMPL § 3 ; non rejoué ici : le diff de dump suffit au périmètre de la fiche).

2. Points à confirmer des IMPL

Id Point (IMPL § 5) Verdict Preuve
S-1 Room = c5ab724101fa898457293d64059d21a9 ; GI e64b5b37…, PC f45be57a…, Person 8668a47c… inchangés PASS § 3.0 et § 3.4 (md5sum avant et après les commandlets)
S-2 V5 : EventGraph 1272 → 1276 nœuds PASS dump l. 4833 === Room :: EventGraph (1276 noeuds) === contre (1272 noeuds) dans la référence ; 1272 + 4 = 1276
S-3a _539 = KismetMathLibrary::MakeRotator, Roll et Pitch à 0 PASS dump l. 10952 : appel KismetMathLibrary::MakeRotator(), Roll = '0.0', Pitch = '0.0', Yaw -> K2Node_CallFunction_514.Yaw
S-3b _540 = SceneComponent::K2_SetWorldRotation, bSweep et bTeleport faux PASS l. 10958 : appel SceneComponent::K2_SetWorldRotation(), bSweep = 'false', bTeleport = 'false'
S-3c _541 = SceneComponent::K2_SetWorldLocation, bSweep et bTeleport faux PASS l. 10966 : appel SceneComponent::K2_SetWorldLocation(), bSweep = 'false', bTeleport = 'false'
S-3d _542 = SceneComponent::K2_SetWorldRotation, bSweep et bTeleport faux PASS l. 10974 : appel SceneComponent::K2_SetWorldRotation(), bSweep = 'false', bTeleport = 'false'
S-4 Diff des liens limité au § 1.5 de l'IMPL (512.then → 540 ; sorties de 265 +540/541/542, de 514.Yaw +539, de PO_2 +541 ; 449.then → 541 ; 434.execute ← 80, 542 ; liens propres à 539 à 542) PASS § 3.1 : 7 hunks de corps modifiés + 1 hunk d'ajout (30 lignes), tous attendus, aucun autre
S-5 80, 81, 82, 83, 329, 440, 441 : liens inchangés PASS aucun hunk sur ces nœuds (les hunks de corps ne touchent que l'en-tête du graphe, 265, 434, PO_2, 449, 514, 512 et l'ajout de 539 à 542)
S-6 V6 : CompileAllBlueprints = référence (3 erreurs CR_FaceExpRig, 420 compilations réussies) PASS § 3.3
S-7 V7 : CAM-49, bar assis puis levé, après une scène, sortie de CharGen ; LogStats sans Accessed None nouveau sur Room (UpdateRoomCam, voie 449 où R1 lit GetControlRotation) Reporté (essai en jeu, build suivant) non rejoué : hors périmètre VAL (éditeur fermé, pas de jeu)

3. Critères rejoués

Environnement : éditeur fermé ; moteur D:\Game\Launcher\Engine\UE_5.8 ; Tools\UeState.ps1 avant le 1er commandlet, avant le 2e et à la fin : processus=0 editeur=0 compilation=0 shaders=0 jeu=0 (UeState = 0 aux trois relevés). Les commandlets n'ont pas tourné en même temps (le 2e a démarré après la fin du 1er).

3.0 MD5 de départ (avant tout lancement)

$ md5sum Content/BPs/Room.uasset Content/BPs/GI.uasset Content/BPs/PC.uasset Content/BPs/Person.uasset
c5ab724101fa898457293d64059d21a9 *Content/BPs/Room.uasset
e64b5b37c9ef0db7735de0d6e3bd7c1c *Content/BPs/GI.uasset
f45be57a39d13d3eb19d0b543153ab0b *Content/BPs/PC.uasset
8668a47c627f7a5254910cf0ac33b12a *Content/BPs/Person.uasset

Attendu : Room C5AB7241…, GI E64B5B37…, PC F45BE57A…, Person 8668A47C… : conforme.

3.1 V5 Room (dump) : PASS

Commande (après Set-Location sur la copie) :

.\Tools\RunCommandlet.ps1 -Lot CAM-B2s-VAL -Commandlet LPDumpFunction -Args "-BP=Room -Fn=* -Pins -Exec" -EtatDir "D:\Game\LifePlay-master 5.8\Docs\Migration\etat\CAM"
code=0 duree=56s erreurs=0 avertissements=10911
resume  : Docs\Migration\etat\CAM\CAM-B2s-VAL_LPDumpFunction_20261014-084441.txt
journal : Saved\Logs\portage\CAM-B2s-VAL_LPDumpFunction_20261014-084441.log

Note de trace : Trace CAM-B2s-VAL_LPDumpFunction_20261014-084441.txt — Fiche CAM-B2s-VAL — 2026-10-14 08:44. Attendu (écrit avant lancement) : EventGraph 1276 nœuds, 4 nœuds créés, 11 liens. Obtenu : ci-dessous. Lecture : les « 10 911 avertissements » sont le dump lui-même (canal LogLPDump: Warning), pas des diagnostics ; code 0, 0 erreur.

Diff : git diff --no-index --unified=0 CAM-B2kmn-VAL_LPDumpFunction_20261014-011706.txt CAM-B2s-VAL_LPDumpFunction_20261014-084441.txt. Bilan brut : 88 insertions(+), 58 deletions(-), 44 hunks (grep -c '^@@'). Répartition (recompte par numéro de ligne de début de hunk) :

  • 35 hunks d'en-tête (lignes 2 à 108 : date, durée, journal, histogramme « Avertissements : 10881 → 10911 lignes, 6602 → 6615 signatures (100 premieres) ») : bruit, l'histogramme bouge avec le nombre de lignes.
  • 1 hunk final (l. 11002 → 11032) : LogInit: Display: Success - 0 error(s), 10831 warning(s) → 10861 : +30 = les 30 lignes ajoutées de 539 à 542 (10881 → 10911, même +30). Cohérent.
  • 8 hunks de corps (EventGraph, dernier graphe de Room : l. 4833 à 11031), bruts :
-=== Room :: EventGraph  (1272 noeuds) ===        (l. 4833)
+=== Room :: EventGraph  (1276 noeuds) ===
 K2Node_VariableGet_265 / FirstPersonSM    (l. 9659) : + K2Node_CallFunction_540.self, _541.self, _542.self
 K2Node_CallFunction_434 / execute         (l. 9773) : "449.then, IfThenElse_80.then" -> "IfThenElse_80.then, CallFunction_542.then"
 K2Node_PromotableOperator_2 / ReturnValue (l. 9960) : + K2Node_CallFunction_541.NewLocation
 K2Node_CallFunction_449 / then            (l. 9963) : "-> CallFunction_434.execute" -> "-> CallFunction_541.execute"
 K2Node_CallFunction_514 / Yaw             (l. 10740): + K2Node_CallFunction_539.Yaw
 K2Node_CallFunction_512 / then            (l. 10909): "(vide)" -> "-> CallFunction_540.execute"
 +30 lignes (l. 10952 à 10981) : K2Node_CallFunction_539, _540, _541, _542 (corps recopié en 3.1b)

(7 hunks de modification + 1 d'ajout = 8 ; 35 + 1 + 8 = 44.)

3.1a Les 7 modifications sont exactement celles de la fiche : en-tête (1272 → 1276), liste de sorties de 265 (+540, 541, 542), 434.execute (← 80 et 542 ; 449 retiré), sortie de PO_2 (+541), 449.then (→ 541), 514.Yaw (+539), 512.then (→ 540). La ligne 265 complète a été relue au dump (l. 9659, Grep) : 430, 431, 433, 446, 512, 540, 541, 542 (8 sorties).

3.1b Nœuds créés (dump l. 10952 à 10981, extrait fidèle) :

K2Node_CallFunction_539  appel KismetMathLibrary::MakeRotator()      Roll='0.0' Pitch='0.0' Yaw<-514.Yaw ReturnValue->540.NewRotation, 542.NewRotation
K2Node_CallFunction_540  appel SceneComponent::K2_SetWorldRotation() execute<-512.then then(vide) self<-265.FirstPersonSM NewRotation<-539.ReturnValue bSweep=false bTeleport=false
K2Node_CallFunction_541  appel SceneComponent::K2_SetWorldLocation() execute<-449.then then->542.execute self<-265.FirstPersonSM NewLocation<-PO_2.ReturnValue bSweep=false bTeleport=false
K2Node_CallFunction_542  appel SceneComponent::K2_SetWorldRotation() execute<-541.then then->434.execute self<-265.FirstPersonSM NewRotation<-539.ReturnValue bSweep=false bTeleport=false

Les UFunction sont bien SceneComponent::K2_SetWorldRotation (540, 542), SceneComponent::K2_SetWorldLocation (541) et KismetMathLibrary::MakeRotator (539) : l'« estimé » de l'IMPL § 1.3 est confirmé par le dump.

3.1c Recompte des liens (L1 à L11) : L1 512.then → 540.execute ; L2 265 → 540.self ; L3 539 → 540.NewRotation ; L4 514.Yaw → 539.Yaw ; L5 449.then → 541.execute (remplace 449 → 434) ; L6 541.then → 542.execute ; L7 542.then → 434.execute ; L8 265 → 541.self ; L9 PO_2 → 541.NewLocation ; L10 265 → 542.self ; L11 539 → 542.NewRotation : 11 liens, tous lus dans le dump. 434 garde 80.then (l. 9773).

3.1d Autres graphes de Room (39 graphes de fonction, de UserConstructionScript l. 121 à Async l. 4743) : aucun hunk de corps avant la ligne 4833 (le premier hunk après l'en-tête du fichier est celui de l'en-tête de l'EventGraph, l. 4833) : identiques à la référence. Les noms _539 à _542 sont en ajout pur dans le diff (@@ -10951,0 +10952,30 @@, 0 ligne supprimée dans ce hunk) ; le Grep « absent de la référence » de l'IMPL n'est pas rejoué.

3.2 V5 PC / GI / Person

Non demandé par la fiche (aucune écriture de PC, GI ou Person). Contrôlé seulement par MD5 (§ 3.4).

3.3 V6 CompileAllBlueprints : PASS

.\Tools\RunCommandlet.ps1 -Lot CAM-B2s-VAL -Commandlet CompileAllBlueprints -EtatDir "D:\Game\LifePlay-master 5.8\Docs\Migration\etat\CAM"
code=3 duree=196s erreurs=25 avertissements=55
resume  : Docs\Migration\etat\CAM\CAM-B2s-VAL_CompileAllBlueprints_20261014-084550.txt
journal : Saved\Logs\portage\CAM-B2s-VAL_CompileAllBlueprints_20261014-084550.log

Note de trace : Fiche CAM-B2s-VAL — 2026-10-14 08:49. Attendu (avant lancement, d'après la référence) : code 3, 25 lignes d'erreur / 16 signatures, « 3 errors and 0 warnings », 55 lignes d'avertissement / 42 signatures, 420 réussies, toutes les erreurs sur CR_FaceExpRig / RLExpStruct (moteur). Lecture : code 3 est le code de la référence (le moteur compte les 3 erreurs de CR_FaceExpRig), pas un échec nouveau.

Élément Référence B2kmn B2s (rejoué) Méthode Verdict
Code de sortie 3 3 RunCommandlet identique
Lignes d'erreur / signatures 25 / 16 25 / 16 en-tête du résumé identique
Bloc « Erreurs » (l. 6 à 23) — identique à la référence diff des deux blocs identique
Bloc « Avertissements » (l. 24 à 67) 55 / 42 55 / 42 diff des deux blocs triés identique
Compiling Completed with … 3 errors and 0 warnings and 0 blueprints that failed to load (journal l. 3304) même texte (journal l. 3302) Grep sur les 2 journaux identique
Compilations réussies 420 420 grep -c 'La compilation de .* a réussi' sur les 2 résumés et sur le journal B2s identique
Lignes Loading and Compiling 421 421 grep -c identique (421 = 420 + CR_FaceExpRig en erreur)
Lignes de compilation (noms de BP, sans horodatage ni durée), triées — identiques diff des deux listes triées identique
Room réussi La compilation de Room a réussi ! [en 1 206 ms] (résumé l. 142) ; aucune ligne d'erreur ou d'avertissement ne cite Room Grep Room sans erreur ni avertissement

Seule différence d'ordre : PC est compilé plus tôt (résumé l. 118) que dans la référence (l. 139-140) ; le diff trié ne montre aucune différence de contenu (ordre de chargement, sans conséquence). Les 3 erreurs sont toutes CR_FaceExpRig (Could not find graph function data for node, Source and target pin types are not compatible, RLExpStruct structure inconnue) : moteur / CC_Shaders, sans lien avec Room.

3.4 MD5 après les commandlets

$ md5sum Content/BPs/Room.uasset Content/BPs/GI.uasset Content/BPs/PC.uasset Content/BPs/Person.uasset
c5ab724101fa898457293d64059d21a9 *Content/BPs/Room.uasset
e64b5b37c9ef0db7735de0d6e3bd7c1c *Content/BPs/GI.uasset
f45be57a39d13d3eb19d0b543153ab0b *Content/BPs/PC.uasset
8668a47c627f7a5254910cf0ac33b12a *Content/BPs/Person.uasset

Identiques au § 3.0 : les commandlets n'ont rien écrit dans ces 4 assets. git status --short -- Content Source : GI, PC, Person, Room en M (GI, PC, Person depuis des lots antérieurs, IMPL § 6).

3.5 UeState final

.\Tools\UeState.ps1 : processus=0 editeur=0 compilation=0 shaders=0 jeu=0 (UeState = 0).

4. Diff lu en entier

  • Diff de dump : lu en entier (192 lignes une fois les lignes LogInit: retirées ; 44 hunks, tous classés au § 3.1). Recompte indépendant : git diff --no-index --stat = 88 insertions(+), 58 deletions(-) et grep -c '^@@' = 44, avec répartition 35 + 1 + 8 par numéro de ligne.
  • Diff de V6 : lu (hunks de durées et d'horodatages, 2 lignes PC déplacées, nom du lot) ; recompté en normalisé (§ 3.3) : aucune différence.
  • Fichier du dépôt modifié par le lot CAM-B2s : Content/BPs/Room.uasset seul (binaire, non lisible en diff texte ; son contenu est validé par le dump). Aucun autre fichier de Content/ ou Source/ rattaché au lot.
  • Fins de ligne : sans objet : aucun fichier texte modifié par le lot en dehors de livrables Markdown neufs ; Room.uasset est binaire.

5. Verdict

PASS : V5 (1276 nœuds, 4 nœuds créés, 11 liens, appels SceneComponent::K2_SetWorldRotation / K2_SetWorldLocation et KismetMathLibrary::MakeRotator, aucune autre différence), V6 (= référence, Room sans erreur ni avertissement), MD5 (Room c5ab7241… ; GI, PC, Person inchangés), UeState = 0 à la fin. Non rejoué : V7 (jeu), LogStats en jeu, comparaison octet à octet de Room avec l'instantané.

6. Points à confirmer par l'utilisateur

  • V7 en jeu au prochain build : CAM-49 (CAM-B2p-SPEC.md) ; bar : s'asseoir, C1, se lever, marcher (vue aux yeux, horizontale, sans épaule visible) ; après une scène lancée depuis C1 : vue horizontale ; sortie de CharGen en C1 sans à-coup de pose.
  • LogStats en jeu sans Accessed None nouveau sur Room (UpdateRoomCam, voie 449 où R1 lit GetControlRotation ; point non vérifié par l'IMPL § 1.7).
  • Limite connue de la fiche : pas de tangage à la souris en C1 (vue toujours horizontale) ; demande à part si voulu.

Fichiers à commiter

Aucun fichier du jeu modifié par la VAL. Livrables à ranger par le gardien (dépôt du jeu, branche ue5.8, sous etat/) :

  • A Docs/Migration/etat/CAM/CAM-B2s-VAL.md
  • A Docs/Migration/etat/CAM/CAM-B2s-VAL_LPDumpFunction_20261014-084441.txt
  • A Docs/Migration/etat/CAM/CAM-B2s-VAL_CompileAllBlueprints_20261014-084550.txt
  • (déjà annoncés par l'IMPL : M Content/BPs/Room.uasset, A Docs/Migration/etat/CAM/CAM-B2s-IMPL.md)

Tours : 17 / 40

Constats

  • Le crochet ecriture-gardien a refusé deux de mes commandes Bash pour « redirection » : un $TMP/a inutile (erreur de ma part, corrigée) et un motif grep contenant -> (le > est pris pour une redirection). Contournement : outil Grep de l'agent. À verser : mémoire hook-ecriture-gardien (-> dans un motif de grep Bash est refusé).
  • RunCommandlet.ps1 : le paramètre des arguments s'appelle -Args ; depuis Git Bash, appeler powershell -NoProfile -Command '…' (guillemets simples dehors, doubles dedans) ; -File casserait $PSScriptRoot.
  • Dans le dump Room, le hunk LogInit: Display: Success - 0 error(s), N warning(s) sert de contrôle croisé du nombre de lignes ajoutées (+30 ici).