LifePlay-Revival/Docs/Migration/etat/CG/CG2/CG2-VAL-01.md
edujiro5972 56dfcfc3d2 LifePlay UE 5.8 : état de développement au 2026-10-20
Tickets : PUB-20261020-T1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 17:35:10 +02:00

206 lines
16 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 CG2-VAL-01 — Niveau N1 — Modèle prévu haiku | utilisé claude-haiku-5-5 (Haiku 5.5) — lp-validator
Skills : lp-validate, sk-protocol, sk-recount, debug-verification
# CG2-VAL-01 : validation de la build 1 CG2 (CG2-IMPL-01 v4 : cœur et C7 faits, C8 sautée) (2026-10-20)
Lecture seule : aucun éditeur, MCP, build, commandlet ni jeu lancé ; aucune commande git en écriture. Seul ce fichier est écrit.
## 1. Fiches amont relues
| Fiche | Relue | Gabarit |
|---|---|---|
| `CG2-SPEC-01.md` (révision 3) | en-tête (l. 1-14), § 7 (l. 149-167), § 9 (l. 177-202), § 10 (l. 204-225) ; diff git lu en entier : +50 lignes, § 9 et § 10 seulement | § 1 à § 7 présents dans l'ordre ; § 8 à § 10 ajoutés |
| `CG2-IMPL-01.md` v4 | intégralité (l. 1-250) ; seule IMPL du lot, v1 à v3 décrites dans son historique (l. 14-30) | § 1 à § 6 présents ; « Hors gabarit » annoncé en tête (l. 3) ; écart de forme E4 |
| `CG2-TACHES.md` | intégralité (l. 1-55) + diff git lu en entier | 13 colonnes présentes ; colonne Tours déclarée, non mesurée (E5) |
| `COMMUN-14-BILAN.md` | § 1 à § 6 (l. 5-139) | § 1 à § 6 présents ; § 4 et § 5 contredits (R6, E1, E3) |
| `CG2-JOURNAL-BROUILLON.md` | intégralité | CHG « 420 réussis » : confirmé (§ 3.3) |
| `OPT0-G0-INV-01.md` | l. 81 seule (référence CR_FaceExpRig), non relu en entier | — |
| `CG2-CART-01.md` | non relu : hors liste de la fiche, inchangé (git status) | — |
## 2. Points à confirmer des IMPL (IMPL v4 § 5 et SPEC § 7)
| Id | Point | Verdict | Preuve |
|---|---|---|---|
| V1 | `git status` de Content/ | PASS | § 3.1 |
| V2 | liaisons relues (SelectInt, SetIsEnabled, Substring, P20, P25) | relu par IMPL (C3, C4, C5, C6, C7, C9) ; C1 : réserve R4 | IMPL § 1, l. 68-149 |
| V3 | compilation sans Error ni Warning | relu par IMPL | IMPL § 6 bis, l. 199-213 ; recoupé en § 3.3 |
| V4 | CompileAllBlueprints, éditeur fermé | PASS | § 3.3 |
| V5 | MD5 des quatre .uasset | PASS | § 3.2 |
| V6a | menu de forme sans CharGen (cas .4) | PASS | § 3.5 |
| V6b | réglage anti-déformation, visage inchangé (cas .5) | PASS (réserve mineure : l'entrée ne détaille pas les trois curseurs) | § 3.5 ; bilan § 2 |
| V6c | boutons d'état (cas .6) | PASS partiel (R1) | § 3.5 |
| V6d | refus des trois noms à l'enregistrement (cas .7) | PASS | § 3.6 |
| V6e | C8 (cas .8) | reporté : B2 (C8 non faite, IMPL § 4 ; TACHES « Report en B2 ») | IMPL § 2 H1 ; TACHES l. 26-37 |
| Point B2 | condition IsMale sans garde dans VisualMorph (IfThenElse_1) | reporté : B2 | SPEC § 9, l. 195-196 ; IMPL § 5 |
| V7 | PubCheck et fins de ligne | PASS (amont) ; présent fichier : § 7 | § 3.7 |
| IMPL § 4 | C2 sautée (sans objet, SPEC § 9) ; C10 et C11 reportées B2 ; étape 6 faite ; build faite | reporté (B2) pour C2, C10, C11 ; PASS pour étape 6 (journal de V4) | § 3.3 ; `COMMUN-14-BUILD.md` |
## 3. Critères rejoués (commande → résultat)
### 3.1 V1 — PASS
Commande : `git -C "D:/Game/LifePlay-master 5.8" status --short -- Content/`
```
M Content/UI/CharGen.uasset
M Content/UI/CharGenSlider.uasset
M Content/UI/VisualMorph.uasset
```
Rien d'autre sous Content/ ; `Content/BPs/GI.uasset` absent de la liste, donc intact.
### 3.2 V5 — PASS
Commande : `Get-FileHash -Algorithm MD5` (pwsh) sur les quatre fichiers.
```
8D781EC0B94318B5BFBF22EE3B33556A Content\UI\CharGen.uasset
CBE53469FC73E7829A00710126095C7E Content\UI\CharGenSlider.uasset
84DD9B17B977A007F9A13940406E970A Content\UI\VisualMorph.uasset
32FC0A970AB194626E8DC07DF3A9633D Content\BPs\GI.uasset
```
Avant (manifeste `D:\Game\LifePlay_Backup_5.5\CG2\manifest.csv`, l. 2 à 5) : CharGenSlider 9B194EA6…, CharGen E4C2EEA6…, VisualMorph 849C46E0… ; GI 32FC0A97…, égal à l'après. Les trois « après » diffèrent des « avant ». Les valeurs concordent avec IMPL § 1 (en minuscules) et § 7.
### 3.3 V4 — PASS
Journal : `Saved\Logs\portage\CG2_CompileAllBlueprints_20261020-021948.log` (505 048 o). Commande : Grep sur le journal.
```
2657: LogCompileAllBlueprintsCommandlet: ... Compile of CharGenSlider successful! [in 427 ms]
2830: ... Compile of CharGen successful! [in 702 ms]
2833: ... Compile of VisualMorph successful! [in 155 ms]
3333: Compiling Completed with 3 errors and 0 warnings and 0 blueprints that failed to load.
3376: Commandlet->Main return this error code: 3
3377: With 17 error(s), 34 warning(s)
```
- « successful! » : 420 lignes (count). Le brouillon CHG l'annonce : confirmé.
- Avertissement nommant CharGen, CharGenSlider ou VisualMorph : 0 (Grep `Warning.*(CharGen|VisualMorph)|(CharGen|VisualMorph).*Warning`).
- Erreurs (`(?i)error`) : 33 lignes (count). Listées : l. 2, 5, 7, 402 (DLL absentes, GetLastError=126, sans lien) ; l. 3046 à 3102 et l. 3340 à 3349 (CR_FaceExpRig et structures de `/Engine/CC_Shaders`) ; l. 3376 et 3377. La 33e ligne est le résumé l. 3333, non affiché par la recherche de contenu (déduit : 32 lignes listées plus l. 3333). Aucune erreur sur les trois Blueprints de CG2.
- Seul échec : CR_FaceExpRig, contenu du moteur installé. Même référence que G0 : `etat\OPT\OPT0\OPT0-G0-INV-01.md`, l. 81 (« CR_FaceExpRig … 3 erreurs », code de sortie 3). Hors CG2.
### 3.4 V2 et V3 — relus par l'IMPL (non rejoués)
Copie UE absente et MCP exclu : non rejouable. Contrôle de la présence des relectures dans IMPL v4 :
- C3 : « Relu : aucun présent » (l. 76). C4 : DynamicCast_0 et CallFunction_95 relus (l. 82-83). C5 : liaisons de garde et sorties relues (l. 85-110). C6 : relue (l. 112-113). C7 : relue (l. 130-131). C9, lectures 1 et 2 : relues (l. 141-142, l. 149).
- C1 : liaison `IfThenElse_5#1 → VariableSet_4226#0` citée (l. 68-69), sans mention de relecture. La précondition de SPEC § 9 (VariableGet_25 sans autre liaison) n'est pas tracée : R4.
- Compilation sans Error ni Warning : CharGenSlider (v2, filtre Error|Warning : sortie vide), CharGen et VisualMorph (v4 : seule ligne « Compiling Blueprint », IMPL § 6 bis, l. 201-213).
### 3.5 V6 — journal de l'essai
Sessions identifiées par la première ligne de chaque journal (`Log file open`) :
- **S1** = `Saved\Logs\LifePlay-backup-2026.10.20-06.46.10.log` (build Development, `D:\Game\LifePlay_Build_5.8_Development\Windows\LifePlay\`) : session ouverte à 07:57:50 (heure locale), 7 544 lignes, 1 073 894 o, LastWriteTime 08:46:10, MD5 7D748AB03A9DE454DFB2DCC6DE8DB570. C'est la session des cas .4 à .7.
- **S2** = `Saved\Logs\LifePlay.log`, identique à la copie `etat\BOSS\COMMUN-14\COMMUN-14.4-17_LifePlay_20261020-0757.log` (MD5 F51967CDE5F640BD45AB650D2CE42016) : session ouverte à 08:46:15, 1 099 lignes, 103 442 o, LastWriteTime 08:53:25.
- Taille attendue par la fiche (313 710 o) : aucun journal de `Saved\Logs` de cette taille. Tailles relevées : 118 895 ; 173 753 ; 226 098 ; 1 073 894 ; 103 442 o.
| Motif (Grep, mode count) | S1 | S2 | Attendu | Critère |
|---|---|---|---|---|
| `LogInit` (contrôle, doit être > 0) | 93 | 93 | > 0 | méthode |
| `property chargen` | 0 | 0 | 0 | V6a |
| `Hello` ; `test2905` | 0 ; 0 | 0 ; 0 | 0 | V6b |
| `Accessed None.*(CharGen_C\|CharGenSlider_C\|VisualMorph_C)` | 0 | 0 | 0 | V6c |
| `: Error:` | 20 | 1 (l. 942) | — | bilan § 5, R6 |
| `InputMode:UIOnly` | 21 | non compté | — | R6 |
Méthode : Grep (outil), même expression régulière que `grep -c -E` ; `LogStats.ps1` non lancé.
Verdicts : V6a PASS (cas .4) ; V6b PASS (.5) ; V6c PASS partiel (.6) ; V6d PASS (.7, § 3.6) ; V6e non joué (.8).
### 3.6 V6d — fichiers écrits (Get-ChildItem, LastWriteTime depuis 2026-10-20 07:57)
- Build, `Windows\LifePlay\Content\Modules` : deux fichiers de 2 106 o chacun. L'un porte un nom normal (écrit à l'enregistrement) ; l'autre a l'extension doublée (`*.lpcharacter.lpcharacter`, ERR-142 réservé au brouillon).
- Copie, `Content\Modules` : aucun fichier.
- Aucun fichier au nom des trois refus (`a/b`, `..x`, `a\b`). Les refus eux-mêmes sont observés par l'utilisateur (cas .7) ; l'absence de fichiers est vérifiée ici.
### 3.7 V7 — PASS (amont)
Commande : `pwsh -NoProfile -Command "& 'D:\Game\LifePlay-master 5.8\Tools\PubCheck.ps1' -Fichiers @(SPEC, IMPL, TACHES, JOURNAL-BROUILLON)"`, sortie `PubCheck : 0 constat(s)`, code 0.
Retours chariot (`tr -cd '\r' | wc -c`) dans les .md de `etat\CG\CG2\` : CG2-SPEC-01 0, CG2-IMPL-01 0, CG2-TACHES 0, CG2-JOURNAL-BROUILLON 0, CG2-CART-01 0. Fins LF.
## 4. Diff lu en entier
Commande : `git --no-pager diff --stat` sur Content/ et Docs/Migration/etat/CG/CG2/ : `5 files changed, 93 insertions(+), 2 deletions(-)`.
| Fichier | État git | Lu | Compte |
|---|---|---|---|
| Content/UI/CharGen.uasset | M | binaire : vérifié par V5 | 5 054 038 → 5 063 130 o |
| Content/UI/CharGenSlider.uasset | M | binaire : vérifié par V5 | 455 140 → 447 967 o |
| Content/UI/VisualMorph.uasset | M | binaire : vérifié par V5 | 327 185 → 333 578 o |
| Docs/Migration/etat/CG/CG2/CG2-SPEC-01.md | M | diff entier | +50, 0 suppression (§ 9 et § 10) |
| Docs/Migration/etat/CG/CG2/CG2-TACHES.md | M | diff entier | +45 / −2 (lignes T3 et T4 ; trois sections ajoutées) |
| Docs/Migration/etat/CG/CG2/CG2-IMPL-01.md | non suivi | intégral | 250 l. |
| Docs/Migration/etat/CG/CG2/CG2-JOURNAL-BROUILLON.md | non suivi | intégral | — |
| Content/BPs/GI.uasset | inchangé | V1, V5 | MD5 égal au manifeste |
## 5. Verdict
**PASS**, avec les réserves R1 à R6.
PASS établi par : V1, V4, V5, V6a, V6b, V6d et V7 (amont) rejoués ou recomptés ; V2 et V3 relus par l'IMPL. Le présent fichier : V7 à constater après écriture (§ 7).
Réserves nommées :
- **R1** : C6 non jouée. Aucune créature n'est créable dans la build ; les boutons de créature sont absents (cas .6 et .10 partiels).
- **R2** : C8 non faite, reportée en B2. V6e non joué (cas .8).
- **R3** : Q8 non observée (cas .9). La fermeture de l'écran est suspendue par décision ; le constat sur les boutons grisés n'a pas été fait. À trancher en B2.
- **R4** : V2 et V3 relus, non rejoués. Pour C1, la précondition de suppression de VariableGet_25 n'est pas tracée dans IMPL v4.
- **R5** : journal V6. La copie archivée `…0757` est la session de 08:46:15 ; la session de 07:57:50 (S1) n'est pas archivée sous `etat\BOSS\COMMUN-14\`. Les comptes V6 ont été rejoués sur S1 et sur S2, et valent 0 dans les deux. La taille de 313 710 o citée par la fiche et TACHES n'est retrouvée nulle part.
- **R6** : bilan § 5. « 0 : Error: » est contredit : 3 (.1), 4 (.2), 4 (.18), 1 (copie archivée .4-17), 20 (S1). Signature : `LogPlayerController: Error: InputMode:UIOnly … Non-Focusable widget`. Son lien avec CG2 n'est pas établi. Ce motif n'est pas un critère V6 de la fiche.
Conséquence pour le bilan : deux écarts ou plus (§ 1 et § 5) relèvent de sk-recount (rejet en bloc, reprise). Le bilan est à reprendre par lp-writer avant le versement de la DOC (CG2-T5). Ce verdict ne s'appuie pas sur ces lignes : les comptes V6 utilisés ont été rejoués ici.
## 6. Points à confirmer par l'utilisateur (cases)
- [ ] R1 : accepter la VAL sans la fin de liste des races animales (pas de créature dans la build), ou prévoir un essai avec créature.
- [ ] R3 : confirmer le report de Q8 en B2.
- [ ] R6 : trier la signature `InputMode:UIOnly` (lien avec CG2 ou non) avant la DOC.
- [ ] R5 : décider l'archivage de la session de 07:57:50 et la correction de l'étiquette (Big Boss).
- [ ] Décisions Q7, Q8 et Q9 : TACHES cite une formulation brouillée (l. 17-18) ; la lecture faite par Big Boss est à confirmer par l'utilisateur.
- [x] Déjà tranchés (citations dans TACHES, l. 26-37 et 53-54) : C8 reportée en B2 ; Q9 = 9 boutons. À rouvrir seulement si contredit.
## 7. PubCheck et fins de ligne
- Amont : § 3.7 (0 constat ; retours chariot 0).
- Présent fichier : écrit en un seul Write, fins LF attendues. PubCheck et comptage des retours chariot lancés après écriture ; résultat dans le compte rendu de remise (ce fichier ne peut pas le citer sans réécriture).
## 8. Témoin en jeu
La VAL est PASS (non PASS-STATIC) : les lignes suivantes sont données pour traçabilité.
Témoin en jeu : COMMUN-14.4 (V6a)
Témoin en jeu : COMMUN-14.5 (V6b)
Témoin en jeu : COMMUN-14.6 (V6c, partiel)
Témoin en jeu : COMMUN-14.7 (V6d)
Suite en jeu : COMMUN-14.4 PASS, .5 PASS, .6 PASS partiel, .7 PASS, .8 non joué, .9 non joué, .10 PASS partiel (2026-10-20 08:53)
## Écarts (numérotés)
- **E1** : étiquette du journal archivé (R5). `COMMUN-14.4-17_…0757.log` est la session de 08:46:15 ; la session de 07:57:50 est `LifePlay-backup-2026.10.20-06.46.10.log` (MD5 7D748AB0…), non archivée. Correction proposée (lp-writer ou Big Boss) : archiver la session de 07:57:50 sous `etat\BOSS\COMMUN-14\`, renommer ou annoter la copie de 08:46, corriger BILAN § 1 (journaux de jeu) et § 5.
- **E2** : « 313 710 octets » (TACHES, section « Essai COMMUN-14», l. 42-43) : aucun fichier de cette taille ; la fiche V6 reprend la même valeur. Correction proposée : retirer ou qualifier la valeur (orchestrateur).
- **E3** : BILAN § 5, « 0 : Error: » (R6). Correction proposée : lp-writer reprend § 5 avec la commande et la sortie, et nomme la signature ou cite la règle d'exclusion de EssaiJournal qui la retire.
- **E4** : IMPL v4, ligne « Tours » (§ 7) : placée avant « État de reprise », donc pas en dernière ligne avant Constats ; dénominateurs 50 et 75 (maxTurns) au lieu du budget de la rubrique 9 (N3 : 60). Correction proposée : déplacer la ligne et écrire le budget à la prochaine reprise.
- **E5** : TACHES, CG2-T3, colonne Tours : « 18 + 21 + 11 + 45 (déclarés) ». Le gabarit TACHES demande la mesure de FicheStats. Correction proposée : FicheStats à la clôture (orchestrateur).
- **E6** : IMPL § 1, C1 : précondition de suppression de VariableGet_25 non tracée (R4). Correction proposée : get_node_infos sur SL (VariableGet_25, IfThenElse_5) en fiche courte, ou réserve acceptée par l'utilisateur.
- **E7** : BILAN § 4, lignes « Suite en jeu » : non écrites dans les VAL (le gabarit BILAN § 4 demande au rédacteur de les ajouter ; la consigne du bilan dit le contraire). Correction proposée : orchestrateur ou lp-writer. Ce fichier porte la sienne (§ 8).
- **E8** (hors fiche) : extension ajoutée deux fois à l'enregistrement d'un préréglage (ERR-142, brouillon). Ce n'est pas un écart de VAL ; suivi en B2.
## Ce qui n'a pas été rejoué
- V2 et V3 (copie UE absente, MCP exclu) ; compilation, build et LPTestStringCompat (hors fiche).
- En jeu : C6 (créature absente), C8 (B2), Q8 (cas .9), V6e (cas .8).
- PubCheck et retours chariot du présent fichier (après écriture).
- SPEC § 1 à § 6 (inchangés par rapport à HEAD, hors fiche) ; CG2-CART-01 ; FicheStats.
## Fichiers à commiter
- A `Docs/Migration/etat/CG/CG2/CG2-VAL-01.md` : écrit par la VAL, non commité (gardien).
- État git constaté, non modifié par la VAL, à traiter par le gardien : M `Content/UI/CharGen.uasset`, `Content/UI/CharGenSlider.uasset`, `Content/UI/VisualMorph.uasset` ; M `Docs/Migration/etat/CG/CG2/CG2-SPEC-01.md` ; M `Docs/Migration/etat/CG/CG2/CG2-TACHES.md` ; ?? `Docs/Migration/etat/CG/CG2/CG2-IMPL-01.md` ; ?? `Docs/Migration/etat/CG/CG2/CG2-JOURNAL-BROUILLON.md`.
- Aucune commande git en écriture.
Tours : 9 / 20 (remise comprise)
## Constats
- MD5 du bilan (`Get-FileHash`) : D8EA376422EC40AA734DA3C15697AADE, égal à la base citée par TACHES (« MD5 d8ea3764 »). Ce n'est pas le MD5 d'un journal.
- Ligne « Suite en jeu » : identique à BILAN § 4 (l. 71 et l. 75).
- Doc 27 : aucun contenu de jeu cité. Boutons et morphs désignés par identifiant de nœud seulement.
- Incertitudes : origine de `InputMode:UIOnly` (R6), et présence de la même signature dans les sessions .1, .2 et .18 (comptes relevés, nature non détaillée). Non tranchées par cette VAL.