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

17 KiB

Fiche CAM-B2p-R-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-B2p-R-VAL : validation de CAM-B2p-R (Room, vue de scène pendant le sexe S1 / S2 / 303 → 441, flèches = couple sans Maj O1) (2026-10-14)

Verdict global : PASS (V5, V6, MD5 et UeState rejoués à neuf, éditeur fermé). V7 (essai en jeu, B2p-C compilé) 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), leurs 2 journaux sous Saved\Logs\portage\ et ce livrable. Aucune commande git qui écrit. Le jeton UE était tenu par la session CAM pour ce passage ; les commandlets ont tourné un à la fois.

1. Fiches amont relues

  • CAM-B2p-R-FICHE.md (étapes 1 à 6, effets attendus, VAL V5 / V6 / V7) : relue en entier.
  • CAM-B2p-R-IMPL.md (43 / 60 tours déclarés, 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 : 43 / 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 B2s, non bloquant).
  • Références de diff : CAM-B2s-VAL_LPDumpFunction_20261014-084441.txt (Room d'avant, EventGraph 1276 nœuds) et CAM-B2s-VAL_CompileAllBlueprints_20261014-084550.txt (V6).
  • Instantané d'avant : D:\Game\LifePlay_Backup_5.5\CAM-B2p-R\ (Room C5AB7241…, cité par l'IMPL § 3 ; non rejoué : le diff de dump suffit au périmètre de la fiche).

2. Points à confirmer des IMPL

Id Point (IMPL § 5) Verdict Preuve
R-1 Room = 931387479e2d15f80bc4f36398907712 ; GI bd0a2256…, PC f45be57a…, Person 8668a47c… inchangés PASS § 3.0 et § 3.4 (md5sum avant et après les commandlets) ; Room 6 428 769 octets, 2026-10-14 10:07:40 = valeur de l'IMPL
R-2 V5 : EventGraph 1276 → 1279 nœuds PASS dump l. 4833 === Room :: EventGraph (1279 noeuds) === ; recompte indépendant : 1279 lignes de nœud après l. 4833 (1276 dans la référence)
R-3 Nœuds nouveaux : IfThenElse_102 (S1), IfThenElse_103 (S2), CommutativeAssociativeBinaryOperator_63 (BooleanOR) PASS dump l. 10982-10996 (§ 3.1b)
R-4 43.then → 102 au lieu de 77 ; 45.then → 103 au lieu de 91 ; 102 et 103 Condition ← 258 ; 102.then et 103.then → 394 ; 102.else → 77 ; 103.else → 91 ; 303.then → 441 PASS dump l. 9627, 9633, 9638, 9728, 9695, 10179, 9725, 9849, 10982-10991 (§ 3.1a)
R-5 62 → 63.A et 85 → 63.B ; 63 → 14.Condition et 17.Condition ; 62 ne sort plus que vers 12 et 63 PASS dump l. 5543, 6165, 5624, 5773, 10992-10996 (§ 3.1a, 3.1b)
R-6 Aucune autre différence (témoins 78, 79, 80, 81, 92, 329, 440, 539 à 542 ; graphes de fonction) PASS § 3.1c : 50 hunks tous classés ; aucun hunk entre les l. 108 et 4832 (39 graphes de fonction identiques) ; aucun hunk sur 78, 79, 80, 81, 92, 329, 440, 539 à 542
R-7 V6 : CompileAllBlueprints = référence ; Room sans erreur ni avertissement nouveau PASS § 3.3 (écart de GI : aucun, la liste des compilations est identique)
R-8 V7 : CAM-41 à CAM-49, CAM-54, CAM-55 (en particulier CAM-42 depuis C1, C2, C3 ; flèches sans Maj ; molette avec Maj ; hors sexe inchangé ; SexOn faux au crochet B1-11) Reporté essai en jeu, build suivant avec B2p-C compilé ; hors périmètre VAL (éditeur fermé, pas de jeu)
R-9 V7 : LogStats sans Accessed None nouveau sur Room Reporté idem (jeu). Lecture statique : S1 et S2 lisent 258 (GI.SexOn) déjà lu sans garde par 78 et 81 ; O1 lit 85 déjà lu en amont : le dump ne montre aucune lecture nouvelle hors ces deux nœuds

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). Le 2e commandlet 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
931387479e2d15f80bc4f36398907712 *Content/BPs/Room.uasset
bd0a2256b875a3ac875630e4b85d92d7 *Content/BPs/GI.uasset
f45be57a39d13d3eb19d0b543153ab0b *Content/BPs/PC.uasset
8668a47c627f7a5254910cf0ac33b12a *Content/BPs/Person.uasset

Attendu : Room 93138747… (après), GI BD0A2256…, PC F45BE57A…, Person 8668A47C… : conforme.

3.1 V5 Room (dump) : PASS

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

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

Trace : CAM-B2p-R-VAL_LPDumpFunction_20261014-101130.txt — Fiche CAM-B2p-R-VAL — 2026-10-14 10:11-10:12. Attendu (écrit avant lancement, d'après la fiche) : EventGraph 1279 nœuds, 3 nœuds créés (S1, S2, O1), 13 liens posés dont 4 en remplacement, lignes ajoutées = 15 (3 nœuds de 5 lignes). Obtenu : ci-dessous. Lecture : les « 10 926 avertissements » sont le dump lui-même (canal LogLPDump: Warning), pas des diagnostics ; code 0, 0 erreur ; 10911 → 10926 = +15.

Diff : git diff --no-index --unified=0 CAM-B2s-VAL_LPDumpFunction_20261014-084441.txt CAM-B2p-R-VAL_LPDumpFunction_20261014-101130.txt. Bilan brut : 81 insertions(+), 66 deletions(-), 201 lignes de diff, 50 hunks (grep -c '^@@'). Répartition (recompte par numéro de ligne de début de hunk, awk : 35 avant la l. 4833, 15 à partir de la l. 4833) :

  • 35 hunks d'en-tête (lignes 2 à 108 : date, durée, journal, histogramme « Avertissements : 10911 → 10926 lignes, 6615 → 6625 signatures (100 premieres) », classement des signatures réordonné) : bruit, l'histogramme bouge avec le nombre de lignes. Contrôle de cohérence : 52 insertions / 52 deletions dans cette zone.
  • 1 hunk final (l. 11032 → 11047) : LogInit: Display: Success - 0 error(s), 10861 warning(s) → 10876 : +15 = les 15 lignes ajoutées (10911 → 10926, même +15). Cohérent.
  • 14 hunks de corps (EventGraph, dernier graphe de Room), bruts, avec la lecture au dump :
=== Room :: EventGraph  (1276 noeuds) ===  ->  (1279 noeuds)                            (l. 4833)
K2Node_VariableGet_62 / MoveObject    (l. 5543) : "IfThenElse_12, 14, 17 .Condition" -> "IfThenElse_12.Condition, CommutativeAssociativeBinaryOperator_63.A"
K2Node_IfThenElse_14 / Condition      (l. 5624) : "VariableGet_62.MoveObject" -> "CommutativeAssociativeBinaryOperator_63.ReturnValue"
K2Node_IfThenElse_17 / Condition      (l. 5773) : idem
K2Node_VariableGet_85 / SexOn         (l. 6165) : + CommutativeAssociativeBinaryOperator_63.B (5 sorties)
K2Node_CustomEvent_43 / then          (l. 9627) : IfThenElse_77.execute -> IfThenElse_102.execute
K2Node_CustomEvent_45 / then          (l. 9633) : IfThenElse_91.execute -> IfThenElse_103.execute     (OutputDelegate -> CallFunction_329 : ligne l. 9632 non touchée)
K2Node_VariableGet_258 / SexOn        (l. 9638) : + IfThenElse_102.Condition, IfThenElse_103.Condition
K2Node_IfThenElse_77 / execute        (l. 9695) : CustomEvent_43.then -> IfThenElse_102.else
K2Node_CallFunction_303 / then        (l. 9725) : (vide) -> CallFunction_441.execute
K2Node_CallFunction_394 / execute     (l. 9728) : "IfThenElse_79.then" -> "IfThenElse_79.then, IfThenElse_102.then, IfThenElse_103.then"
K2Node_CallFunction_441 / execute     (l. 9849) : "CallFunction_440.then" -> "CallFunction_440.then, CallFunction_303.then"
K2Node_IfThenElse_91 / execute        (l. 10179): CustomEvent_45.then -> IfThenElse_103.else
+15 lignes (l. 10982 à 10996) : IfThenElse_102, IfThenElse_103, CommutativeAssociativeBinaryOperator_63

(13 hunks de modification d'une ligne + 1 hunk d'ajout = 14 ; 35 + 1 + 14 = 50. Insertions : 52 + 1 + 13 + 15 = 81 ; suppressions : 52 + 1 + 13 = 66 ; recompte égal au --stat.)

3.1a Les 13 modifications sont exactement celles de la demande : 43.then (→ S1), 45.then (→ S2), 77.execute et 91.execute (← S1.else, S2.else), 394.execute (← 79, S1, S2), 258 (+ S1, S2), 303.then (→ 441), 441.execute (← 440, 303), 62 (sorties 12 et O1 ; plus 14 ni 17), 85 (+ O1.B), 14 et 17 (Condition ← O1). Les Condition des l. 5624 et 5773 ont été attribuées aux nœuds 14 et 17 par lecture du contexte (l. 5622 K2Node_IfThenElse_14, l. 5771 K2Node_IfThenElse_17). Rien d'autre.

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

K2Node_IfThenElse_102  execute<-CustomEvent_43.then  Condition<-VariableGet_258.SexOn  then->CallFunction_394.execute  else->IfThenElse_77.execute
K2Node_IfThenElse_103  execute<-CustomEvent_45.then  Condition<-VariableGet_258.SexOn  then->CallFunction_394.execute  else->IfThenElse_91.execute
K2Node_CommutativeAssociativeBinaryOperator_63  appel KismetMathLibrary::BooleanOR()  self(vide)  A<-VariableGet_62.MoveObject  B<-VariableGet_85.SexOn  ReturnValue->IfThenElse_14.Condition, IfThenElse_17.Condition

3.1c Recompte des liens (L1 à L13) : L1 43.then → 102.execute ; L2 258 → 102.Condition ; L3 102.then → 394.execute ; L4 102.else → 77.execute ; L5 45.then → 103.execute ; L6 258 → 103.Condition ; L7 103.then → 394.execute ; L8 103.else → 91.execute ; L9 303.then → 441.execute ; L10 62 → 63.A ; L11 85 → 63.B ; L12 63 → 14.Condition ; L13 63 → 17.Condition : 13 liens, tous lus dans le dump. Témoins : 78, 79, 80, 81, 92, 329, 440, 539 à 542 sans hunk (liens identiques ; 79.then → 394 gardé, l. 9728).

3.1d Autres graphes de Room (39 graphes de fonction, de UserConstructionScript à Async, l. 121 à 4743) : aucun hunk de corps avant la l. 4833 (le premier hunk après l'en-tête du fichier, dernier hunk d'en-tête l. 104-108, est celui de l'en-tête de l'EventGraph, l. 4833) : identiques à la référence.

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-B2p-R-VAL -Commandlet CompileAllBlueprints -EtatDir "D:\Game\LifePlay-master 5.8\Docs\Migration\etat\CAM"
code=3 duree=207s erreurs=25 avertissements=55
resume : Docs\Migration\etat\CAM\CAM-B2p-R-VAL_CompileAllBlueprints_20261014-101259.txt
journal : Saved\Logs\portage\CAM-B2p-R-VAL_CompileAllBlueprints_20261014-101259.log

(exit=1 du shell Bash = code retourné par le script enveloppant, pas le code du commandlet, qui est 3 comme la référence.) Trace : Fiche CAM-B2p-R-VAL — 2026-10-14 10:13-10:16. Attendu (avant lancement, d'après la référence B2s) : 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 B2s B2p-R (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) — md5 769e82e8… des deux blocs (compteurs [nnnn,nn] retirés) sed + md5sum identique
Bloc « Avertissements » (55 / 42) 55 / 42 md5 466c596b… des deux blocs de 43 lignes sed + md5sum identique
Compiling Completed with … 3 errors and 0 warnings and 0 blueprints that failed to load même texte (journal l. 3302) Grep identique
Compilations réussies 420 420 grep -c 'La compilation de .* a réussi' sur les 2 résumés identique
Lignes Loading and Compiling 421 421 grep -c identique (421 = 420 + CR_FaceExpRig en erreur)
Liste des BP compilés (nom + chemin, triée, sans horodatage ni durée) — md5 41f45c18… des deux listes sed + sort + md5sum identique
Room réussi La compilation de Room a réussi ! [en 1 145 ms] (résumé l. 142 ; journal l. 2021) ; seules 2 lignes du résumé citent Room (Loading, réussi) Grep Room sans erreur ni avertissement

Effet de GI (BD0A2256, changé depuis la référence B2s qui était à E64B5B37) : aucun sur la liste des compilations ni sur les erreurs et avertissements (blocs identiques). Les 3 erreurs sont toutes CR_FaceExpRig (moteur / CC_Shaders), sans lien avec Room. Un diff brut du résumé donne 425 insertions / 425 deletions : ce sont les compteurs [nnnn,nn] et les durées, ligne à ligne, normalisés ci-dessus ; non traités comme un écart.

3.4 MD5 après les commandlets

$ md5sum Content/BPs/Room.uasset Content/BPs/GI.uasset Content/BPs/PC.uasset Content/BPs/Person.uasset
931387479e2d15f80bc4f36398907712 *Content/BPs/Room.uasset
bd0a2256b875a3ac875630e4b85d92d7 *Content/BPs/GI.uasset
f45be57a39d13d3eb19d0b543153ab0b *Content/BPs/PC.uasset
8668a47c627f7a5254910cf0ac33b12a *Content/BPs/Person.uasset
$ stat -c "%s %y %n" Content/BPs/Room.uasset
6428769 2026-10-14 10:07:40.131707500 +0200 Content/BPs/Room.uasset

Identiques au § 3.0 : les commandlets n'ont rien écrit dans ces 4 assets (taille et date de Room inchangées). git status --short -- Content : GI, PC, Person, Room en M (GI, PC, Person depuis des lots antérieurs, IMPL § 6) ; Content/UI/TopRight.uasset en M aussi, hors lot.

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 (201 lignes ; 50 hunks, tous classés au § 3.1). Recompte indépendant : git diff --no-index --stat = 81 insertions(+), 66 deletions(-), grep -c '^@@' = 50, répartition 35 + 1 + 14 par numéro de ligne, nombre de nœuds par comptage des lignes K2Node_ après la l. 4833 (1279 contre 1276 dans la référence).
  • Diff de V6 : normalisé (§ 3.3) : aucune différence de contenu.
  • Fichier du dépôt modifié par le lot CAM-B2p-R : 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 (1279 nœuds, 3 nœuds créés dont S1 / S2 / O1 BooleanOR, 13 liens, aucune autre différence), V6 (= référence, Room sans erreur ni avertissement, GI sans effet), MD5 (Room 93138747… ; 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, avec B2p-C compilé (CAM-B2p-SPEC.md) : CAM-41 à CAM-49, CAM-54, CAM-55 ; en particulier CAM-42 depuis C1, C2 et C3, dès l'entrée en sexe et après POV → Scene (vue SceneCamera, minuterie arrêtée) ; ZQSD en mode Scene (exigence COMMUN-7) ; flèches = couple sans Maj pendant le sexe ; molette avec Maj inchangée ; hors sexe, comportement inchangé.
  • Fin de sexe : SexOn est faux au crochet B1-11 (GI 2699 → ApplyRoomCamera), qui rend C1, C2 ou C3 et relance la minuterie ; sinon repli prévu par la fiche (appel différé côté C++, non écrit).
  • LogStats en jeu sans Accessed None nouveau sur Room.

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-B2p-R-VAL.md
  • A Docs/Migration/etat/CAM/CAM-B2p-R-VAL_LPDumpFunction_20261014-101130.txt
  • A Docs/Migration/etat/CAM/CAM-B2p-R-VAL_CompileAllBlueprints_20261014-101259.txt
  • (déjà annoncés par l'IMPL : M Content/BPs/Room.uasset, A Docs/Migration/etat/CAM/CAM-B2p-R-IMPL.md)

Tours : 13 / 40

Constats

  • Le crochet ecriture-gardien a refusé une commande Bash dont un awk contenait NR>0 (le > est pris pour une redirection) : contournement par cut seul (pas de > ni < dans les commandes).
  • RunCommandlet.ps1 depuis Git Bash : powershell -NoProfile -Command '…' (guillemets simples dehors) ; le code de sortie du shell (1) n'est pas celui du commandlet (3, lu sur la ligne code=).
  • Comparaison de deux résumés CompileAllBlueprints : le diff brut est inutilisable (425 / 425 lignes, compteurs [nnnn,nn] et durées) ; normaliser (nom + chemin triés, blocs Erreurs / Avertissements sans compteurs) puis md5sum.
  • L'index « Condition » des hunks 5624 et 5773 ne nomme pas le nœud dans le diff --unified=0 : relire le contexte au dump (l. 5622, 5771).