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

239 lines
22 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-B2p-G-PC-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-G-PC-VAL : validation de CAM-B2p-G-PC (PC, C3 dans le cycle C du sexe G-d, panneau des positions G-g) (2026-10-14)
Verdict global : **PASS** (V5, V6, MD5 et UeState rejoués à neuf, éditeur fermé). Deux points restent **non vérifiés** faute
de moyen sans éditeur : le défaut de `SexC3` (faux attendu) et l'éventuel export orphelin `VariableGet_387` dans le fichier
enregistré. Le comportement en jeu (V7) 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\`, le diff
brut `Saved\CAM-B2p-G-PC-VAL_diff.txt` (sortie de `git diff --no-index --output=`, dossier ignoré par git) et ce livrable.
Aucune commande git qui écrit. Le jeton UE était tenu par l'orchestrateur ; les commandlets ont tourné un à la fois.
## 1. Fiches amont relues
- `CAM-B2p-G-PC-FICHE.md` (étapes 1 à 10, amendement B2p-G-PC-a l. 69-79, VAL V5 / V6) : relue en entier.
- `CAM-B2p-G-PC-IMPL.md` (agent lp-mcp-bp, `Tours : 63 / 60` déclaré, hors budget du niveau mais sous le plafond de 75, noté
par l'auteur l. 226) : 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 Ce qui n'a pas été fait, 5 Points à confirmer, 6 Fichiers à commiter), plus
`Mesuré`, `Reprise` et `Constats`. `Reprise` est une section hors gabarit, non annoncée en tête (`Hors gabarit : <motif>`
absent) : écart de forme mineur. En-tête sur 2 lignes conforme ; « Modèle prévu non précisé par la fiche » (même écart de
forme que B2p-R, non bloquant).
- `CAM-B2p-R-VAL.md` : modèle de forme.
- Références : `CAM-B2kmn-VAL_LPDumpFunction_20261014-011816.txt` (PC d'avant, EventGraph 1439 nœuds) et
`CAM-B2p-R-VAL_CompileAllBlueprints_20261014-101259.txt` (V6).
- Instantané d'avant : `D:\Game\LifePlay_Backup_5.5\CAM-B2p-G-PC\manifest.csv` (cité par l'IMPL § 1.1 ; non rejoué : le diff de
dump suffit au périmètre de la fiche).
## 2. Points à confirmer des IMPL
| Id | Point (IMPL § 5, fiche, demande) | Verdict | Preuve |
|---|---|---|---|
| G-1 | V5 : seules différences = variable `SexC3`, les 8 nœuds du § 3.2 (sans `VariableGet_387`), coupures `123.then ↛ 35` et `15.then ↛ 10`, 8 liens G-d et 4 liens G-g | **PASS** | § 3.1 : 12 hunks de corps et de pied, tous classés ; EventGraph 1439 → 1447 ; 37 lignes de dump ajoutées. La déclaration de la variable n'est pas listée par le dump : elle est établie par les nœuds Get / Set `variable 'SexC3'` (dump l. 6486, 6489, 6503) et par la compilation du PC sans erreur (§ 3.3), **PASS-STATIC** pour la déclaration seule |
| G-2 | `IfThenElse_63.then` vide aussi dans la référence ? (point (a) de la demande) | **PASS** | référence `…011816.txt` l. 3858 : `then (vide)` ; nouveau dump l. 3858 : `then (vide)` ; `63.execute ← InputAction_3.Pressed`, `63.else → 40` identiques ; aucun hunk sur 63. Le « then vide » n'est donc pas un effet de l'écriture |
| G-3 | Un objet orphelin `VariableGet_387` apparaît-il dans le dump ? (point (b)) | **PASS** | `Grep VariableGet_387` sur le nouveau dump : 0 occurrence (ni nœud, ni cible de lien) ; les nœuds 385, 386 et 408 existent, 387 non |
| G-4 | `CallFunction_35` : exécution non reliée après la coupure, aucun diagnostic | **PASS** | dump l. 3009 : `execute (vide)` ; V6 : `La compilation de PC a réussi ! [en 920 ms]` (résumé l. 142), 0 erreur et 0 avertissement nouveau (§ 3.3) |
| G-5 | Défaut de `SexC3` = faux (point (c) de la demande) | **Non vérifié** | le dump ne liste pas les variables de membre ni leur défaut ; il ne montre que les valeurs de broche `SexC3 = 'false'` (Set_39, l. 6492) et `'true'` (Set_58, l. 6506). L'IMPL § 4 le dit déjà (« non relu sur le CDO »). Aucun commandlet du catalogue ne dump les variables (`Grep` de `SexC3`, `DefaultValue` dans `Source/LifePlay/LPDump*.cpp` : 0). Essai qui trancherait : lecture du CDO du PC dans l'éditeur. Attendu faux par le défaut du type bool, non établi |
| G-6 | V6 : `CompileAllBlueprints` = référence ; PC sans erreur ni avertissement nouveau | **PASS** | § 3.3 |
| G-7 | Croissance du PC de 19 273 octets ; `VariableGet_387` écrit ou non comme export orphelin | **Incertain** (reporté) | taille actuelle 3 424 059 octets (`stat`, 2026-10-14 13:52:07) = valeur de l'IMPL. Le dump parcourt `Nodes` et ne peut pas montrer un export hors graphe. Sans effet attendu ; non tranché |
| G-8 | Comportement en jeu (Scene → C → C3 → C → POV 1 … → Scene ; Espace bascule le panneau pendant le sexe ; clics courts gauche et droit ne le basculent plus ; hors sexe Espace met en pause) | **Reporté** | essai en jeu, build empaqueté (V7) ; hors périmètre VAL (éditeur fermé, pas de jeu). Lecture statique seulement : § 3.1a à 3.1c |
## 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) : **PASS**
```
$ md5sum Content/BPs/PC.uasset Content/BPs/Room.uasset Content/BPs/GI.uasset Content/BPs/Person.uasset
b07f16a9ec04ca297a8504f126d406e1 *Content/BPs/PC.uasset
931387479e2d15f80bc4f36398907712 *Content/BPs/Room.uasset
32fc0a970ab194626e8dc07df3a9633d *Content/BPs/GI.uasset
8668a47c627f7a5254910cf0ac33b12a *Content/BPs/Person.uasset
$ stat -c "%s %y %n" Content/BPs/PC.uasset
3424059 2026-10-14 13:52:07.758768000 +0200 Content/BPs/PC.uasset
```
Attendu : PC `B07F16A9…` (avant : `F45BE57A…`), Room `93138747…`, GI `32FC0A97…`, Person `8668A47C…` : conforme.
### 3.1 V5 PC (dump) : **PASS**
Commande (via `powershell -NoProfile -Command`, après `Set-Location` sur la copie) :
```
.\Tools\RunCommandlet.ps1 -Lot CAM-B2p-G-PC-VAL -Commandlet LPDumpFunction -Args "-BP=PC -Fn=EventGraph -Pins -Exec" -EtatDir "D:\Game\LifePlay-master 5.8\Docs\Migration\etat\CAM"
code=0 duree=56s erreurs=0 avertissements=6447
resume : D:\Game\LifePlay-master 5.8\Docs\Migration\etat\CAM\CAM-B2p-G-PC-VAL_LPDumpFunction_20261014-135527.txt
journal : D:\Game\LifePlay-master 5.8\Saved\Logs\portage\CAM-B2p-G-PC-VAL_LPDumpFunction_20261014-135527.log
```
Trace : `CAM-B2p-G-PC-VAL_LPDumpFunction_20261014-135527.txt` — Fiche CAM-B2p-G-PC-VAL — 2026-10-14 13:55-13:56.
Environnement : copie 5.8, branche `ue5.8`, éditeur fermé, PC `B07F16A9…`.
Attendu (écrit avant lancement, d'après la fiche et la demande) : code 0 ; EventGraph 1447 nœuds (1439 + 8) ; 8 nœuds
`IfThenElse_132`, `133`, `134`, `VariableGet_385`, `386`, `VariableSet_39`, `58`, `CallFunction_408` ; aucun `VariableGet_387` ;
liens et coupures de la fiche et de la demande ; rien d'autre.
Obtenu : code 0, 0 erreur ; les « 6447 avertissements » sont le dump lui-même (canal `LogLPDump: Warning`), pas des
diagnostics. Pied de fichier : référence `0 error(s), 6360 warning(s)`, nouveau `6397` : +37 lignes (recoupe le détail du § 3.1b).
Lecture : le fichier contient deux copies du dump (journal, puis écho stdout tronqué après la l. 6518, 13 nœuds seulement) ;
le recompte des nœuds ne retient que la première (l. 121 à 6517).
**Recompte indépendant des nœuds** (autre méthode que l'en-tête du dump) :
| Élément | Référence | Nouveau | Méthode | Verdict |
|---|---|---|---|---|
| En-tête `=== PC :: EventGraph (… noeuds) ===` | 1439 | 1447 (l. 121 et l. 6518) | `Grep noeuds\)` | +8 = attendu |
| Lignes de nœud `K2Node_` (deux copies) | 1452 | 1460 | `Grep` en comptage de `^(LogInit: Display: )?LogLPDump: Warning: K2Node_` | écart 8 |
| Moins la copie d'écho tronquée (13 nœuds, l. 6519 à 6567 : `Event_0`, `Self_0`, `CallFunction_126`, `CreateWidget_4`, `VariableGet_2454`, `VariableSet_23`, `InputAction_6`, `IfThenElse_582`, `VariableSet_148`, `VariableGet_188`, `CallFunction_1067`, `CallFunction_1068`, `IfThenElse_316`) | −13 | −13 | lecture `Read` l. 6500-6619 | 1439 et 1447 : confirmés |
**Diff** : `git diff --no-index --unified=0 CAM-B2kmn-VAL_LPDumpFunction_20261014-011816.txt CAM-B2p-G-PC-VAL_LPDumpFunction_20261014-135527.txt --output=Saved\CAM-B2p-G-PC-VAL_diff.txt`.
Bilan brut (`--stat`) : `1 file changed, 111 insertions(+), 74 deletions(-)` ; diff de 233 lignes ; **44 hunks** (`Grep -c '^@@'` = 44,
44 en-têtes énumérés par `-o`). Répartition par numéro de ligne de début de hunk du fichier de référence :
- **32 hunks d'en-tête** (lignes 2 à 108 : date, durée, journal, histogramme « Avertissements : 6410 → 6447 lignes, 4761 →
4785 signatures (100 premieres) », classement des signatures réordonné) : bruit, l'histogramme bouge avec le nombre de
lignes. Aucun ne touche un nœud. Équilibre : 124 lignes de diff entre les l. 5 et 160 du diff, moins 32 en-têtes de hunk,
soit 62 insertions et 62 suppressions.
- **12 hunks de corps et de pied** (EventGraph) : 10 modifications d'une ligne (§ 3.1a), 1 hunk d'ajout (l. 6481, +38 −1) et
1 hunk de pied (l. 6531, compteur final, +1 −1). Insertions : 10 + 38 + 1 = 49 ; suppressions : 10 + 1 + 1 = 12.
- Total : 62 + 49 = 111 insertions, 62 + 12 = 74 suppressions, 32 + 12 = 44 hunks : égal au `--stat` et au comptage des `@@`.
3.1a Les 10 modifications d'une ligne, avec la lecture au dump (lignes citées = nouveau fichier) :
| Réf. l. | Nœud / broche | Avant → après | Attendu |
|---|---|---|---|
| 121 | en-tête EventGraph | `1439 noeuds` → `1447 noeuds` | 8 nœuds en plus |
| 829 | `IfThenElse_123.then` (l. 826-830 : Condition ← `VariableGet_233`) | `CallFunction_35.execute` → `(vide)` | coupure `123.then ↛ 35` |
| 987 | `VariableGet_22.SexOn` | `IfThenElse_15.Condition` → `IfThenElse_15.Condition, IfThenElse_134.Condition` | 22 alimente aussi 134.Condition, garde 15 |
| 992 | `IfThenElse_15.then` (l. 989-993) | `IfThenElse_10.execute` → `(vide)` | coupure `15.then ↛ 10` |
| 1549 | `IfThenElse_40.then` (l. 1546-1550 : execute ← `63.else`, Condition ← `CallFunction_125`) | `CallFunction_277.execute` → `IfThenElse_134.execute` | `40.then → 134` |
| 1727 | `IfThenElse_23.then` (l. 1724-1728 : Condition ← `VariableGet_51.SexOn`, else → `131`) | `IfThenElse_44.execute` → `IfThenElse_132.execute` | `23.then → 132` |
| 1738 | `IfThenElse_44.execute` | `IfThenElse_23.then, CustomEvent_5.then` → `CustomEvent_5.then, VariableSet_39.then, IfThenElse_133.then` | 44 garde `CustomEvent_5.then`, perd 23, gagne 39 et 133 |
| 3009 | `CallFunction_35.execute` (appel `LeftMouseSexOn`) | `IfThenElse_123.then` → `(vide)` | côté réciproque de la coupure 123 |
| 3022 | `IfThenElse_10.execute` | `IfThenElse_15.then, CustomEvent_11.then` → `CustomEvent_11.then` | côté réciproque de la coupure 15 |
| 4424 | `CallFunction_277.execute` (`PlayClick`) | `IfThenElse_40.then` → `IfThenElse_134.else` | `134.else → 277`, 40 ne va plus vers 277 |
3.1b Nœuds créés : hunk d'ajout (dump l. 6481 à 6517, 37 lignes, plus la ligne d'écho remplacée l. 6518), extrait fidèle :
```
K2Node_IfThenElse_132 execute<-IfThenElse_23.then Condition<-VariableGet_385.SexC3 then->VariableSet_39.execute else->IfThenElse_133.execute
K2Node_VariableGet_385 variable 'SexC3' SexC3->IfThenElse_132.Condition self(vide)
K2Node_VariableSet_39 variable 'SexC3' execute<-IfThenElse_132.then then->IfThenElse_44.execute SexC3='false' self(vide)
K2Node_IfThenElse_133 execute<-IfThenElse_132.else Condition<-VariableGet_386.POVOn then->IfThenElse_44.execute else->VariableSet_58.execute
K2Node_VariableGet_386 variable 'POVOn' POVOn->IfThenElse_133.Condition self(vide)
K2Node_VariableSet_58 variable 'SexC3' execute<-IfThenElse_133.else then(vide) SexC3='true' self(vide)
K2Node_CallFunction_408 appel ?::LeftMouseSexOn() execute<-IfThenElse_134.then then(vide) self(vide)
K2Node_IfThenElse_134 execute<-IfThenElse_40.then Condition<-VariableGet_22.SexOn then->CallFunction_408.execute else->CallFunction_277.execute
```
Lignes par nœud : 132 = 5, 385 = 3, 39 = 6, 133 = 5, 386 = 3, 58 = 6, 408 = 4, 134 = 5 : somme 37, égale à 6397 − 6360. Le hunk
compte +38 −1 parce que la ligne d'écho `LogInit: Display: … (1439 noeuds)` est remplacée par la même à 1447.
3.1c Recompte des liens de la demande, un par un, tous lus dans le dump :
| # | Lien attendu | Lu |
|---|---|---|
| 1 | `23.then → 132` (plus vers 44) | l. 1727 |
| 2 | `132.then → 39` ; `39.then → 44` | 132 : `then -> VariableSet_39.execute` ; 39 : `then -> IfThenElse_44.execute` |
| 3 | `132.else → 133` | 132 : `else -> IfThenElse_133.execute` |
| 4 | `133.then → 44` ; `133.else → 58` | 133 : `then -> IfThenElse_44.execute`, `else -> VariableSet_58.execute` |
| 5 | `58.then` vide | 58 : `then (vide)` |
| 6 | `44.execute` garde `CustomEvent_5.then` | l. 1738 |
| 7 | conditions 132 ← 385, 133 ← 386 | 132 : `Condition -> VariableGet_385.SexC3` ; 133 : `Condition -> VariableGet_386.POVOn` |
| 8 | `123.then` ne va plus vers 35 ; `15.then` ne va plus vers 10 | l. 829, 992 : `(vide)` |
| 9 | `40.then → 134` (plus vers 277) | l. 1549 |
| 10 | `134.else → 277` ; `134.then → 408` ; `408.then` vide | 134 : `else -> CallFunction_277.execute`, `then -> CallFunction_408.execute` ; 408 : `then (vide)` |
| 11 | `134.Condition ← VariableGet_22.SexOn`, qui garde `15.Condition` | l. 987 et 134 : `Condition -> VariableGet_22.SexOn` |
| 12 | aucun `VariableGet_387` | 0 occurrence |
Soit 8 nœuds, 8 liens G-d, 4 liens G-g et 2 coupures : les nombres d'IMPL § 3.2 sont retrouvés. Rien d'autre : aucun hunk sur
`IfThenElse_63`, `VariableGet_233`, `CustomEvent_5`, `CustomEvent_11`, `InputAction_3`, `IfThenElse_131`, ni sur aucun autre
nœud.
3.1d Périmètre du dump : `-Fn=EventGraph` ne dump qu'un graphe (EventGraph du PC). Les autres graphes du PC ne sont pas dans
cette commande et ne sont pas rejoués ici.
### 3.2 V5 Room / GI / Person
Non demandé par la fiche (aucune écriture de ces assets). Contrôlé seulement par MD5 (§ 3.4).
### 3.3 V6 CompileAllBlueprints : **PASS**
Attendu (écrit avant lancement, d'après la référence B2p-R) : code 3, 25 lignes d'erreur / 16 signatures, 55 lignes
d'avertissement / 42 signatures, 3 erreurs au décompte final, 420 compilations réussies, 421 lignes `Loading and Compiling`,
toutes les erreurs sur `CR_FaceExpRig` / `RLExpStruct` (moteur), PC compilé sans erreur ni avertissement.
```
.\Tools\RunCommandlet.ps1 -Lot CAM-B2p-G-PC-VAL -Commandlet CompileAllBlueprints -EtatDir "D:\Game\LifePlay-master 5.8\Docs\Migration\etat\CAM"
code=3 duree=202s erreurs=25 avertissements=55
resume : D:\Game\LifePlay-master 5.8\Docs\Migration\etat\CAM\CAM-B2p-G-PC-VAL_CompileAllBlueprints_20261014-135635.txt
journal : D:\Game\LifePlay-master 5.8\Saved\Logs\portage\CAM-B2p-G-PC-VAL_CompileAllBlueprints_20261014-135635.log
```
Trace : Fiche CAM-B2p-G-PC-VAL — 2026-10-14 13:56-13:59. 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 B2p-R | B2p-G-PC (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é (l. 6) | identique |
| Bloc « Erreurs » (16 lignes, l. 7 à 22) | — | mêmes 16 lignes, même ordre et mêmes comptes | lecture parallèle des deux résumés (`Read`) | identique, toutes `CR_FaceExpRig` / `RLExpStruct` |
| Bloc « Avertissements » (55 / 42, l. 25 à 66) | 55 / 42 | mêmes 42 lignes, même ordre et mêmes comptes | lecture parallèle | identique, toutes `CR_FaceExpRig` |
| `Compiling Completed with …` | `3 errors and 0 warnings and 0 blueprints that failed to load` (journal l. 3302) | même texte (journal l. 3302) | `Grep` sur les deux journaux | identique |
| Compilations réussies | 420 | 420 | `Grep` en comptage de `La compilation de .* a réussi` | identique |
| Lignes `Loading and Compiling` | 421 | 421 | `Grep` en comptage | identique (421 = 420 + `CR_FaceExpRig` en erreur) |
| `PC` | `La compilation de PC a réussi ! [en 978 ms]` (l. 118) | `La compilation de PC a réussi ! [en 920 ms]` (l. 142) | `Grep` | **PC sans erreur ni avertissement** |
Aucune ligne d'erreur ou d'avertissement du résumé ne cite `PC`, `SexC3`, `IfThenElse_13x` ou `CallFunction_408` : les blocs ne
contiennent que `CR_FaceExpRig` / `RLExpStruct`. Limite : la liste complète des BP compilés (nom + chemin) n'a pas été
comparée par somme de contrôle comme en B2p-R (pas de `sed` ni de tube autorisés ici) ; le compte des 420 réussies et des 421
chargements, les deux blocs lus ligne à ligne et le décompte final tiennent lieu de recoupement.
### 3.4 MD5 après les commandlets : **PASS**
```
$ md5sum ../../../../Content/BPs/PC.uasset … Room.uasset … GI.uasset … Person.uasset (relevé après V5 et V6)
b07f16a9ec04ca297a8504f126d406e1 *../../../../Content/BPs/PC.uasset
931387479e2d15f80bc4f36398907712 *../../../../Content/BPs/Room.uasset
32fc0a970ab194626e8dc07df3a9633d *../../../../Content/BPs/GI.uasset
8668a47c627f7a5254910cf0ac33b12a *../../../../Content/BPs/Person.uasset
```
Identiques au § 3.0 : les commandlets n'ont rien écrit dans ces 4 assets. `git status --short -- Content/BPs Source Config` :
GI, PC, Person, Room en `M` (depuis des lots antérieurs), plus des fichiers `Source/LifePlay/` modifiés ou non suivis
(`LPBonusRewardSubsystem`, `LPCameraModeSubsystem`, `LPSaveRelaunch`) qui ne relèvent pas de ce lot ; aucun n'est écrit par la
VAL.
### 3.5 UeState final : **PASS**
`.\Tools\UeState.ps1` après V6 : `processus=0 editeur=0 compilation=0 shaders=0 jeu=0` (UeState = 0).
## 4. Diff lu en entier
- Diff de dump : lu en entier (233 lignes, 44 hunks : 32 d'en-tête classés, 12 de corps et de pied classés, § 3.1). Recompte
indépendant : `--stat` = `111 insertions(+), 74 deletions(-)` ; `Grep` des `@@` = 44 ; répartition 32 + 12 par numéro de ligne ;
nœuds recomptés par lignes `K2Node_` moins l'écho tronqué (1447 contre 1439).
- Diff de V6 : lu en parallèle (§ 3.3) : aucune différence de contenu.
- Fichier du dépôt modifié par le lot CAM-B2p-G-PC : `Content/BPs/PC.uasset` seul (binaire, non lisible en diff texte ; son
contenu est validé par le dump). Room, GI et Person : MD5 inchangés.
- Fins de ligne : sans objet : aucun fichier texte du jeu modifié par le lot en dehors de livrables Markdown neufs ;
`PC.uasset` est binaire.
## 5. Verdict
**PASS** : V5 (1447 nœuds = 1439 + 8, 8 nœuds créés sans `VariableGet_387`, liens et coupures de la fiche, aucune autre
différence), V6 (= référence, PC sans erreur ni avertissement), MD5 (PC `B07F16A9…` ; Room, GI, Person inchangés, avant et
après), UeState = 0 aux trois relevés.
Non rejoué ou non vérifié : défaut de `SexC3` (G-5, non lisible sans éditeur), export orphelin éventuel (G-7), V7 en jeu et
`LogStats` (G-8), comparaison octet à octet de `PC.uasset` avec l'instantané, somme de contrôle de la liste complète des BP
de V6, autres graphes du PC.
## 6. Points à confirmer par l'utilisateur
- [ ] Défaut de `SexC3` = faux : lecture du CDO du PC à l'ouverture de l'éditeur, ou à défaut effet en jeu (premier appui sur
C du sexe depuis la Scene doit rendre C3, pas la vue C1 ou C2).
- [ ] V7 en jeu (build empaqueté, B2p-G compilé) : Scene (`POVOn` faux, `SexC3` faux) → C → C3 (`SexC3` vrai, vue inchangée) →
C → `SexC3` faux, puis POV 1 … dernier POV → C → Scene ; pendant le sexe, Espace bascule le panneau des positions au lieu de
mettre en pause, et le clic molette est fait par le C++ ; les clics courts gauche et droit ne le basculent plus ; hors sexe,
Espace met toujours en pause et rien d'autre ne change.
- [ ] `LogStats` en jeu sans `Accessed None` nouveau sur le PC. Lecture statique : `134.Condition` reprend `VariableGet_22.SexOn`
(self ← `VariableGet_6044.GI`), déjà lu par `IfThenElse_15` ; `385` et `386` n'ont pas de broche cible (self = le PC) ;
aucune lecture de `GI` nouvelle, donc pas de nouvelle source d'`Accessed None` établie par le dump.
## 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-G-PC-VAL.md`
- A `Docs/Migration/etat/CAM/CAM-B2p-G-PC-VAL_LPDumpFunction_20261014-135527.txt`
- A `Docs/Migration/etat/CAM/CAM-B2p-G-PC-VAL_CompileAllBlueprints_20261014-135635.txt`
- (déjà annoncés par l'IMPL : M `Content/BPs/PC.uasset`, A `Docs/Migration/etat/CAM/CAM-B2p-G-PC-IMPL.md`)
Tours : 14 / 40
## Constats
- Le dump du PC contient deux copies de l'EventGraph : le journal complet (l. 121-6517) puis un écho stdout tronqué (13 nœuds,
l. 6519-6567). Un comptage des lignes `K2Node_` donne donc 1460 (et 1452 pour la référence) : il faut retrancher les 13 de
l'écho pour retrouver 1447 (et 1439). Le recompte par l'en-tête et par les lignes concordent ainsi.
- Les 32 hunks d'en-tête du diff de dump sont le bruit habituel de l'histogramme d'avertissements ; leur équilibre (62 / 62)
se contrôle sans les lire un à un, en retranchant les hunks de corps du total.
- Ce que le dump ne dit pas : la déclaration des variables de membre et leur défaut. Le contrôle « défaut faux » d'une
variable de Blueprint demande l'éditeur (ou un commandlet qui lit le CDO), à prévoir dans la fiche suivante qui ajoute une
variable.
- Sans `sed`, `awk`, tube ni redirection (crochet `ecriture-gardien`), la comparaison de deux résumés `CompileAllBlueprints` se
fait par lecture parallèle (`Read` des 80 premières lignes) et `Grep` en comptage ; la somme de contrôle de la liste des BP,
utilisée en B2p-R, n'est pas reproductible dans ces conditions.