185 lines
15 KiB
Markdown
185 lines
15 KiB
Markdown
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.
|