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

15 KiB
Raw Blame History

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

CAM-B2i-VAL : validation de la garde « hors sexe » sur les 5 branches « C2 ? » de Room (2026-10-13)

Copie D:\Game\LifePlay-master 5.8, branche ue5.8 (git branch --show-current). Validateur distinct de l'auteur (IMPL : lp-mcp-bp). Aucun asset, code ni doc validée modifié ; éditeur fermé avant, entre et après les commandlets (UeState = 0 aux relevés d'entrée et de sortie). Seuls fichiers écrits : les sorties des deux commandlets et ce livrable.

Verdict global : PASS (V5, V6, MD5 ; V7 reporté, non rejouable ici).

1. Fiches amont relues

  • Docs\Migration\etat\CAM\CAM-B2i-FICHE.md (spécification, § VAL, lu en entier).
  • Docs\Migration\etat\CAM\CAM-B2i-IMPL.md (rapport de l'auteur, lu en entier : 22 appels MCP, tableaux 1.3 et 1.4, § 5).
  • Docs\Migration\etat\CAM\CAM-B2g-VAL.md (méthode de la VAL précédente).
  • Références : CAM-B2g-VAL_LPDumpFunction_20261013-211708.txt et CAM-B2g-VAL_CompileAllBlueprints_20261013-211848.txt (journal Saved\Logs\portage\CAM-B2g-VAL_CompileAllBlueprints_20261013-211848.log).
  • Instantané : D:\Game\LifePlay_Backup_5.5\CAM-B2i\ (manifest.csv de 2 lignes, Content\BPs\Room.uasset).
  • Non relus : CAM-COMMUN4-DIAG.md (la fiche en reprend les conclusions) ; cas CAM-29 à CAM-32 (V7).

2. Points à confirmer des IMPL (§ 5 de CAM-B2i-IMPL.md)

# Point Résultat Preuve
P1 Room = 18565365… ; GI = e64b5b37… et Person = 8668a47c… inchangés PASS § 3 R1 et R7
P2 V5 : EventGraph à 1264 nœuds PASS …-225125.txt:4833
P3 V5 : 3 nœuds nouveaux CallFunction_453 (NOT), …Operator_61 et _62 (AND) PASS :10893-10906
P4 V5 : conditions de 96 et 97 ← _61, de 98, 99 et 100 ← _62 PASS :10627, :10636, :10649, :10677, :10705
P5 V5 : sorties de PO_8 (91, OR_60.A, _62.A), de OR_60 (_61.A seul) et de 86 (19, 29, 28, _453) PASS :10186, :10892, :6174
P6 then / else de 96 à 100 et Condition de 91 inchangés PASS aucune de ces lignes dans le diff (R3)
P7 V6 : CompileAllBlueprints éditeur fermé = référence (3 erreurs CR_FaceExpRig, Room compilé sans erreur ni avertissement nouveau) PASS § 3 R4 à R6
P8 V7 : cas CAM-29 à CAM-32 en jeu (build suivant) reporté (V7) non rejouable ici, pas de build
P9 (IMPL § 1.2 et § 4) positions des nœuds créés reporté le dump ne porte pas de positions ; non vérifié

3. Critères rejoués (commande → résultat)

Toutes les commandes sont lancées depuis D:\Game\LifePlay-master 5.8. UeState relevé avant : processus=0 editeur=0 compilation=0 shaders=0 jeu=0, code 0.

R1. MD5 de Room à l'entrée. md5sum Content/BPs/Room.uasset → 18565365b1195bf2416a1048bf9051b6 (attendu), taille 6 387 514 octets, 2026-10-13 22:48:32. Instantané CAM-B2i\Content\BPs\Room.uasset → 0c8eb59f55cb02ad2c4fa1413840b84b (= « avant », manifeste de 2 lignes). PASS.

R2. V5, dump.

powershell -NoProfile -Command "Set-Location 'D:\Game\LifePlay-master 5.8'; .\Tools\RunCommandlet.ps1 -Lot CAM-B2i-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=10836
résumé : Docs\Migration\etat\CAM\CAM-B2i-VAL_LPDumpFunction_20261013-225125.txt   (10957 lignes)
journal : Saved\Logs\portage\CAM-B2i-VAL_LPDumpFunction_20261013-225125.log

Référence : 10943 lignes, 10822 avertissements. Écart : +14 lignes, +14 avertissements.

R3. V5, diff du corps. Commande : git diff --no-index --unified=0 --no-color <référence> <dump> | grep -v '^[-+]LogInit:' (lancé dans Docs/Migration/etat/CAM). Les lignes LogInit: sont retirées du diff : 51 dans chaque fichier (grep -c 'LogInit:'). Le diff brut compte 51 hunks : 40 dans l'en-tête et le sommaire (l. 1-115, ignorés), 11 dans le corps. Les 11 hunks du corps :

# Ligne (réf → dump) Différence brute Attendu
1 4833 === Room :: EventGraph (1261 noeuds) === → (1264 noeuds) 1261 + 3 : conforme
2 6174 86 SexOn -> …_19.B, IfThenElse_29.Condition, IfThenElse_28.Condition → idem , K2Node_CallFunction_453.A 86.SexOn → 19.B, 29, 28, NOT : conforme
3 10186 PO_8 ReturnValue -> IfThenElse_91, _98, _99, _100, …Operator_60.A → IfThenElse_91.Condition, …Operator_60.A, …Operator_62.A PO_8 → 91, OR_60.A, AND2.A seulement : conforme
4 10627 IfThenElse_96 Condition -> …Operator_60.ReturnValue → …Operator_61.ReturnValue 96 ← AND1 : conforme
5 10636 IfThenElse_97 idem 97 ← AND1 : conforme
6 10649 IfThenElse_98 Condition -> K2Node_PromotableOperator_8.ReturnValue → …Operator_62.ReturnValue 98 ← AND2 : conforme
7 10677 IfThenElse_99 idem 99 ← AND2 : conforme
8 10705 IfThenElse_100 idem 100 ← AND2 : conforme
9 10892 (+9 lignes, l. 10892-10900) ajout : OR_60 ReturnValue -> …Operator_61.A ; bloc K2Node_CallFunction_453 appel KismetMathLibrary::Not_PreBool() (self vide, A -> VariableGet_86.SexOn, ReturnValue -> …_61.B, …_62.B) ; début du bloc …Operator_61 appel KismetMathLibrary::BooleanAND() (self vide, A -> …Operator_60.ReturnValue, B -> CallFunction_453.ReturnValue) OR_60 → AND1.A seul ; NOT et AND1 : conforme
10 10902 (+5 lignes, l. 10902-10906) ajout : …Operator_62 appel KismetMathLibrary::BooleanAND(), self vide, A -> PO_8.ReturnValue, B -> CallFunction_453.ReturnValue, ReturnValue -> IfThenElse_98.Condition, _99.Condition, _100.Condition AND2 : conforme
11 10943 → 10957 ligne LogInit: Display: Success - 0 error(s), 10772 warning(s) → 10786 warning(s) compteur de fin de journal, +14 : sans objet

Lecture directe de …-225125.txt:10888-10906 : OR_60 (l. 10888-10892) A ← PO_8, B ← VariableGet_269.CamC1On, ReturnValue → …_61.A ; _453 (10893-10896) A ← VariableGet_86.SexOn, sortie → _61.B, _62.B ; _61 (10897-10901) A ← OR_60, B ← NOT, sortie → IfThenElse_96.Condition, IfThenElse_97.Condition (la ligne l. 10901 est la ligne de sortie ancienne de OR_60, que le diff rapproche d'une ligne de contexte et n'affiche donc pas comme ajout) ; _62 (10902-10906) A ← PO_8, B ← NOT, sortie → 98, 99, 100. Recompte : 8 lignes de corps modifiées (hunks 1 à 8) et 14 lignes ajoutées (9 + 5), égal à 10957 − 10943 = 14. Aucune autre ligne === … === n'est dans le diff : les 40 autres graphes (41 en-têtes dans chaque dump, grep -c '=== [A-Za-z_]* :: .*noeuds' = 41 / 41) sont inchangés. then et else de 96 à 100, la Condition de 91 et OR_60.B ← 269 ne sont pas dans le diff : inchangés. Sommaire (l. 1-115) : total 10822 → 10836 avertissements, 6562 → 6572 signatures, ordre des ex aequo modifié ; non énuméré ligne à ligne. PASS.

R4. V6, CompileAllBlueprints.

powershell -NoProfile -Command "Set-Location 'D:\Game\LifePlay-master 5.8'; .\Tools\RunCommandlet.ps1 -Lot CAM-B2i-VAL -Commandlet CompileAllBlueprints -EtatDir 'D:\Game\LifePlay-master 5.8\Docs\Migration\etat\CAM'"
code=3 duree=198s erreurs=25 avertissements=55
résumé : Docs\Migration\etat\CAM\CAM-B2i-VAL_CompileAllBlueprints_20261013-225336.txt   (954 lignes)
journal : Saved\Logs\portage\CAM-B2i-VAL_CompileAllBlueprints_20261013-225336.log

Référence (…-211848.txt) : code 3, 214 s, 25 erreurs, 55 avertissements, 954 lignes. Identique (le code 3 est celui de la référence).

R5. V6, comptes (journal …-225336.log, référence …-211848.log) :

  • grep -n "errors and" → 3302:Compiling Completed with 3 errors and 0 warnings and 0 blueprints that failed to load. Référence : 3303: même phrase.
  • grep -c "La compilation de .* a réussi" → 420 ; référence 420.
  • grep -n "La compilation de Room" → 2021:… [0056,96] La compilation de Room a réussi ! [en 1 166 ms] (/Game/BPs/Room.Room) ; référence 2021: (1 342 ms).
  • grep -c "Error:" → 25 ; référence 25. grep "Error:" | grep -v "CR_FaceExpRig\|RLExpStruct\|graph function data for node @@" | wc -l → 0 ; référence 0.
  • grep -c "Warning:" → 55 ; référence 55. PASS.

R6. V6, diff contre la référence. Compare-Object (multiensemble de lignes) sur le résumé .txt après remplacement des durées [en N ms], des compteurs [nnnn,nn], des noms de lot, des horodatages et des durées : 0 différence (les 954 lignes, dont les sections Erreurs et Avertissements, sont égales). Même comparaison sur les lignes Error:, Warning:, La compilation de et Compiling du journal : 1347 lignes de chaque côté, 0 différence. (Le journal entier diffère en 125 entrées : lignes de démarrage du moteur, durées, mémoire, GUID de session ; non pertinentes.) PASS.

R7. MD5 finaux (après les deux commandlets). Voir « Mesuré » : Room 18565365b1195bf2416a1048bf9051b6, GI e64b5b37c9ef0db7735de0d6e3bd7c1c, Person 8668a47c627f7a5254910cf0ac33b12a, comme attendu ; Room toujours à 6 387 514 octets, 22:48:32 (non réécrit par les commandlets). UeState = 0 à la fin. PASS.

4. Diff lu en entier

Fichier Lecture Compte
Content/BPs/Room.uasset dump complet comparé à la référence (R3), lignes lues dans le dump (l. 10880-10919) 11 hunks de corps, 3 nœuds de plus (1261 → 1264), 0 autre ligne
Content/BPs/GI.uasset, Content/BPs/Person.uasset MD5 seul 0 différence avec l'attendu
Source/ git status --short -- Content Source aucune modification de code attribuable à cette fiche (M LPDebugSubsystem, LPDirectControlSubsystem, LPOutdoorRoomSubsystem, LifePlay.cpp et ?? LPCameraModeSubsystem, LPSaveRelaunch viennent d'autres lots, hors périmètre, non relus)

git diff --stat -- Content/BPs : Room 5 911 380 → 6 387 514 octets (par rapport à HEAD, qui précède plusieurs lots CAM), GI et Person M depuis des lots antérieurs (MD5 inchangés dans cette fiche, IMPL § 1).

5. Verdict

  • PASS pour Room : V5 conforme (1264 nœuds, 3 nœuds nouveaux et liens attendus, rien d'autre) ; V6 identique à la référence (3 erreurs CR_FaceExpRig, 0 avertissement, Room compilé, 420 compilations réussies) ; MD5 des trois assets conformes ; éditeur fermé.
  • Écarts à la fiche de VAL : aucun. Réserves sur l'IMPL : le nombre de nœuds n'était pas compté (maintenant 1264) ; positions des nœuds créés (IMPL § 1.2) non vérifiables par le dump.
  • V7 (comportement en jeu) : reporté, non vérifié.

6. Points à confirmer par l'utilisateur

  • V7, build suivant : cas CAM-29 à CAM-32 de CAM-COMMUN4-DIAG.md § 4 (hors sexe : les cinq branches « C2 ? » agissent comme en B2h ; pendant le sexe : else, comme à l'origine).
  • Positions des trois nœuds créés dans le graphe (IMPL § 1.2) : lecture visuelle dans l'éditeur, si l'utilisateur y tient.

Mesuré

$ .\Tools\UeState.ps1   (avant et après)
processus=0 editeur=0 compilation=0 shaders=0 jeu=0     (code=0)
$ md5sum Content/BPs/Room.uasset Content/BPs/GI.uasset Content/BPs/Person.uasset   (après les commandlets)
18565365b1195bf2416a1048bf9051b6 *Content/BPs/Room.uasset
e64b5b37c9ef0db7735de0d6e3bd7c1c *Content/BPs/GI.uasset
8668a47c627f7a5254910cf0ac33b12a *Content/BPs/Person.uasset
$ stat -c "%s %y" Content/BPs/Room.uasset
6387514 2026-10-13 22:48:32.279568100 +0200
$ md5sum D:/Game/LifePlay_Backup_5.5/CAM-B2i/Content/BPs/Room.uasset
0c8eb59f55cb02ad2c4fa1413840b84b *D:/Game/LifePlay_Backup_5.5/CAM-B2i/Content/BPs/Room.uasset
$ grep -c 'LogInit:' <référence> <dump>
51 / 51
$ wc -l <référence> <dump>
10943 / 10957
$ grep -c '=== [A-Za-z_]* :: .*noeuds' <référence> <dump>
41 / 41

Trace (TRACE)

Trace : Docs\Migration\etat\CAM\CAM-B2i-VAL_LPDumpFunction_20261013-225125.txt — Fiche CAM-B2i-VAL — 2026-10-13 22:52
Commande     : RunCommandlet.ps1 -Lot CAM-B2i-VAL -Commandlet LPDumpFunction -Args '-BP=Room -Fn=* -Pins -Exec' (copie 5.8, éditeur 5.8 headless)
Environnement: copie D:\Game\LifePlay-master 5.8, branche ue5.8, Room 18565365…, éditeur fermé (UeState 0), machine calme
Attendu      : EventGraph 1264 nœuds ; 11 hunks de corps (3 nœuds, conditions 96 à 100, sorties PO_8, OR_60, 86) ; rien d'autre
Obtenu       : code 0, 56 s, 10957 lignes ; différences conformes (§ 3 R3)
Lecture      : le sommaire (l. 1-115) réordonne les ex aequo : ne comparer que le corps ; les lignes LogInit: sont la queue
               du fichier (51 lignes, identiques sauf le compteur de fin)

Trace : Docs\Migration\etat\CAM\CAM-B2i-VAL_CompileAllBlueprints_20261013-225336.txt — Fiche CAM-B2i-VAL — 2026-10-13 22:56
Commande     : RunCommandlet.ps1 -Lot CAM-B2i-VAL -Commandlet CompileAllBlueprints
Environnement: idem ; éditeur fermé
Attendu      : 3 errors and 0 warnings, CR_FaceExpRig seulement, Room compilé avec succès (référence B2g)
Obtenu       : code 3 (comme la référence), 25 lignes d'erreur, 55 d'avertissement, « 3 errors and 0 warnings », 420 compilations réussies
Lecture      : le code 3 est celui de la référence (erreurs CR_FaceExpRig d'un actif du moteur), pas un échec de Room

Fichiers à commiter

  • A Docs/Migration/etat/CAM/CAM-B2i-VAL.md (dépôt du jeu, branche ue5.8)
  • A Docs/Migration/etat/CAM/CAM-B2i-VAL_LPDumpFunction_20261013-225125.txt
  • A Docs/Migration/etat/CAM/CAM-B2i-VAL_CompileAllBlueprints_20261013-225336.txt
  • (journaux Saved/Logs/portage/CAM-B2i-VAL_*.log : ignorés par git)
  • Aucune modification d'asset ni de code par cette VAL.

Tours : 20 / 40

Constats

  • Le crochet ecriture-gardien refuse aux agents lp-validator toute redirection par > ou <, y compris dans un script awk (s > 115) et Set-Content vers le dossier temporaire. Parades qui marchent : git diff --no-index --unified=0 entre les deux fichiers puis grep -v '^[-+]LogInit:' ; Compare-Object en PowerShell pour comparer des fichiers sans rien écrire. À verser : lp-validate § 1 ou lp-commandlets.
  • UeState.ps1 : sous Git Bash, $LASTEXITCODE est développé par le shell dans une commande entre guillemets doubles ; utiliser des guillemets simples autour de la commande PowerShell.
  • Le filtre « retirer les lignes LogInit: » de la fiche n'enlève que la queue du fichier (51 lignes), pas des graphes entiers : les 41 graphes sont dans le corps, préfixés LogLPDump: Warning:.
  • Le numéro de ligne de la phrase errors and dans le journal varie d'une unité entre deux runs (3303 / 3302) : sans effet.