15 KiB
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.txtetCAM-B2g-VAL_CompileAllBlueprints_20261013-211848.txt(journalSaved\Logs\portage\CAM-B2g-VAL_CompileAllBlueprints_20261013-211848.log). - Instantané :
D:\Game\LifePlay_Backup_5.5\CAM-B2i\(manifest.csvde 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érence2021:(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-gardienrefuse aux agentslp-validatortoute redirection par>ou<, y compris dans un scriptawk(s > 115) etSet-Contentvers le dossier temporaire. Parades qui marchent :git diff --no-index --unified=0entre les deux fichiers puisgrep -v '^[-+]LogInit:';Compare-Objecten PowerShell pour comparer des fichiers sans rien écrire. À verser :lp-validate§ 1 oulp-commandlets. UeState.ps1: sous Git Bash,$LASTEXITCODEest 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ésLogLPDump: Warning:. - Le numéro de ligne de la phrase
errors anddans le journal varie d'une unité entre deux runs (3303 / 3302) : sans effet.