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

185 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.