LifePlay-Revival/Docs/Migration/etat/ST/STE/STE-J4.md

127 lines
8.9 KiB
Markdown
Raw Normal View History

# STE-J4 : IMPL F-a, témoin et preuve en jeu J4 (2026-10-10)
Orchestrateur LOT STE ; BUILD-GO étape 2 de Big Boss ; SPEC `STE-H5b-SPEC.md` § 2.3 (F-a) et § 2.7 (témoin) ; contre-épreuve
`STE-H5b-C0.md`. État de départ : GI B8B97C46 (5c55db4), HEAD 6b038c6, instantané `STE-H5b` (B8B97C46) fait en C0.
**Résultat : critère du témoin atteint (G5-B1 18 → 0), mais nouvelle famille d'avertissements dans `GI.Dress`, absente de C0 et
de J3 ; pas de commit, diagnostic nécessaire.**
## 1. IMPL F-a (MCP, éditeur headless 21:36:58)
- P2 : GI = B8B97C46, `git status -- Content Config Source` vide. P5 : `IfThenElse_148`, `CallFunction_743`, `_739`,
`MakeArray_3` à `_6`, `MacroInstance_43` conformes au § 2.2 ; `self` est compté : indices `AddVariable` = `execute` 0,
`self` 1, `Name` 2, `Class` 3, `Array` 4, `Bool` 5, `Float` 6, `String` 7, `Person` 8, `Building` 9 (le § 2.1 l'avait prévu,
« +1 »). P6 : `find_node_types` `AddVariable` → `Scène|AddVariable` (autres : Optimus, Movie Graph, écartés).
- Étapes 1-12 : H5-A = `K2Node_CallFunction_568` (pos -12760,-4900) ; `break_pins` `IfThenElse_148.else` / `CallFunction_743.execute` ;
`else` → H5-A ; H5-A.then → `CallFunction_743` ; `MakeArray_3/_4/_5/_6.Array` → `Person`/`Bool`/`Float`/`String` ;
`Name` = `AI`, `Class` = `Person` ; `Array` relu `false` (non posé). Étape 13 : liens = § 2.4 (relus).
- Étape 14 : compilation (avertissements en erreurs) sans erreur ; **premier `save_assets` = false** (21:39) :
`MoveFile was unable to move ...Content/BPs/GI.uasset` × 10 puis `Error saving`, fichier tenu par un jeu étranger
(PID 19716, `UnrealEditor.exe ...LifePlay-master 5.8\LifePlay.uproject /Engine/Maps/Entry?game=/Script/LPSandbox.LPPairSandboxGameMode -game`,
lancé à 21:37:07 depuis `LifePlay-Sandbox-5.8\Tools\debug`). ARRÊT, rien tué, rapport à Big Boss ; l'utilisateur a fermé ce jeu ;
reprise sur message de Big Boss : `save_assets` = true (21:42:36). GI disque resté B8B97C46 pendant l'arrêt. Temporaire laissé
par l'échec : `Saved\GIADDB917541E7568F168C8F871C7A9DFD.tmp` (52 545 296 o, 21:39:19), gardé.
- **M1 (GI F-a) = `4773054E738A0AB166ED1971FD4FA889` (52 545 296 o).** Instantané `STE-H5b-temoin` = M1 (copie contrôlée).
- Écarts : les appels `compile_blueprint` et `save_assets` du premier essai ont été envoyés dans un même message (le journal
montre la sauvegarde 7 s après la compilation, sans chevauchement) ; l'éditeur n'a pas été fermé entre F-a et le témoin
(M1 relevé et instantané pris sur le fichier enregistré) ; le dump V1 sur M1 reste à faire (éditeur fermé).
## 2. Témoin (même éditeur, 21:42-21:43)
T-1 conforme ; `K2Node_CallFunction_361` (T1) sur `IfThenElse_14.else`, `K2Node_CallFunction_362` (T2) sur `IfThenElse_15.else`,
textes et `bPrintToScreen = false` relus ; compilation sans erreur (journal), `save_assets` true (21:43:29). Éditeur fermé
(Stop-Process 24860), `UeState.ps1` = 0. **M2 (GI F-a + témoin) = `84E681EB65F83EAE238289F57E379D0E` (52 554 000 o)**, jamais commité.
## 3. Build de diagnostic
`Build.ps1 -Lot STE-H5b` : code 0, 0 unité (`STE-H5b_Build_20261010-214352.txt`) ; `BuildDebug.ps1 -SkipBuild` vers
`D:\Game\LifePlay_Build_5.8_STE-H5b-TEMOIN_Development` (absent avant) : UAT code 0, 107 s, cuisson `0 error(s), 1 warning(s)`,
163 paquets recuits, CheckPackage PASS. `GI.uexp` cuit : 21:44:52, 2 023 521 o (C0 : 2 023 221), 2 × `STE-H5b-TEMOIN`.
Archive gardée, « diagnostic, GI M2 non commité ».
## 4. Session J4 de l'utilisateur
Journal `...\STE-H5b-TEMOIN_Development\Windows\LifePlay\Saved\Logs\LifePlay.log` (22:16:38, 21 220 172 o, MD5 CD002DD5…, copie
de lecture identique). Utilisateur : « c'est fait ».
| Motif (lignes) | C0 (sans F-a) | J4 (F-a) |
|---|---|---|
| `STE-H5b-TEMOIN G5-B1` | 18 | **0** |
| `STE-H5b-TEMOIN G5-B2` | 0 | 0 |
| `STE-H5b-TEMOIN` (toutes ; J4 : 2 = chemin du dossier dans l'en-tête) | 18 | 2 |
| `hours by [1-9]` | 22 | 27 |
| `hours by 0\b` | 0 | 0 |
| `CHECKING:` | 7 825 | 9 524 |
| `Person_24_.*of length 0` | 119 | 109 |
| `UNHIDE Persons` (fins de scène du joueur) | 27 | 25 |
| `Accessed None` | 56 | **32 874** |
| dont `property Person` dans `GI_C:Dress` | 0 | **32 681** |
| `GI_C:Dress:` (toutes lignes) | 0 | 32 716 |
| `clearScenePersons` (piles) | 0 | 2 907 |
| `GetSpecific_PersonToReturn` (Room) | 0 | 81 |
| `removeAlreadyGot` | 0 | 30 |
| Fatal / Unhandled / Critical | 0 | 0 |
J3 (`STF-STE-LISIB`) : `GI_C:Dress:`, `clearScenePersons`, `GetSpecific_PersonToReturn`, `removeAlreadyGot` = 0.
**Critère F-a** : `G5-B1` = 0 pour 27 routines avec personne et 9 524 `CHECKING:` (parcours comparable à C0) : le cas B ne se
produit plus. Contrôle positif donné par C0 (18).
**Constat nouveau (bloquant pour le commit)** : à partir de 20:06:42 UTC (après ≈ 5 min de jeu), 13 des 25 fins de scène du
joueur sont suivies de **2 887** (une fois 3 444, une fois 3 844) `Accessed None ... property Person` dans `GI.Dress`.
Piles : `Room_C:ExecuteUbergraph_Room > GI_C:Dress` (29 797) et `Scene_C NextButton > GI_C:ContinueScene > ExecuteUbergraph_GI
> clearScenePersons > Dress` (2 884) ; précédés de `Room_C` `GetSpecific_PersonToReturn` None. Le nombre fixe 2 887 évoque une
boucle de `Dress` sur une liste de vêtements pour une personne nulle. Aucune ligne de cette famille en C0 ni en J3 avec un
nombre comparable de scènes du joueur (27 et 30 `UNHIDE`). **Imputation à F-a : probable, non établie** (hypothèse : la
variable `AI` reposée par F-a garde un `AIDummy` détruit ensuite — `DestroyDummy was from CheckScenes` — et des fonctions de
scène du joueur la lisent ; à vérifier sur dumps de `clearScenePersons`, `Dress`, `GetSpecific` et du graphe de `Room`).
## 5. Restauration du témoin
`.\Tools\Restore.ps1 -Lot STE-H5b-temoin`, éditeur fermé : GI = **M1 `4773054E…`** (52 545 296 o), 0 occurrence de
`STE-H5b-TEMOIN` dans `GI.uasset` ; M2 gardé dans `LifePlay_Backup_5.5\STE-H5b-temoin\_avant-restauration\20261010-221856`.
`git status` : ` M Content/BPs/GI.uasset` (F-a, non commité) + Docs. Retour à l'état commité possible par
`.\Tools\Restore.ps1 -Lot STE-H5b` (B8B97C46).
## 6. Décision de l'utilisateur (2026-10-10, après J4)
- F-a / Dress : **« Diagnostiquer d'abord »** : GI reste à M1 non commité (copie UE gelée pour les builds et cuissons des autres
lots, Big Boss) ; dumps STE-D6 (`clearScenePersons`, `Dress`, `GetSpecific`, `removeAlreadyGot`, `Room.EventGraph`,
`GI.EventGraph` sur M1) puis DIAG lp-cart.
- Effet visible en J4 : **« Saccades / gels »** à la fin de certaines scènes (concordant avec les paquets de 2 887 avertissements).
## 7. Diagnostic STE-H5c et décisions (2026-10-10)
`STE-H5c-DIAG.md` (lp-cart) : le recompte corrige le § 4 : **11 paquets** (et non 13), le premier à 20:08:09.362 UTC (et non
20:06:42), 2 887 blocs par paquet sauf un de 3 844 (pas de paquet de 3 444), situés avant `UNHIDE` et non après ; `GI_C:Dress:64X`
= 32 713 lignes. 10 paquets viennent de `Room.getKnownNpcsHere` (`GetSpecific` rend None pour une clé numérique déjà prise,
sans garde jusqu'à `Dress`), déclenchés par la compagne qui suit le joueur : `[Person_C_…] N moves to` = 0 (C0), 0 (J3), 15 (J4)
(recompte de l'orchestrateur). Imputation à F-a : non établie, jugée improbable (aucun nœud de la voie Room ne lit `AI`).
Décisions de l'utilisateur : Q-H5c-1 = **essai décisif sur l'archive C0** (sans F-a) avec une compagne qui suit le joueur ;
Q-H5c-2 = **O1 + O3** (gardes `IsValid` ciblées dans `Room` et `clearScenePersons`) si l'essai confirme le défaut sans F-a.
Journal C0 sauvegardé avant l'essai : `LifePlay_Backup_5.5\STE-H5b\journaux\C0-LifePlay.log` (MD5 6F8D055C…).
## 8. Essai décisif C1 (archive C0, sans F-a, compagne qui suit) — 2026-10-10
Archive `LifePlay_Build_5.8_STE-H5b-C0_Development` (GI B8B97C46 + témoin, sans F-a) ; journal
`...\Windows\LifePlay\Saved\Logs\LifePlay.log` (23:11:01, 13 360 988 o, MD5 0D0F6DA3…, copie de lecture identique ; le journal C0
a été renommé par le jeu en `LifePlay-backup-2026.10.10-19.34.53.log`, copie aussi dans `LifePlay_Backup_5.5\STE-H5b\journaux\`).
Utilisateur : « c1 fini ».
| Motif (lignes) | C0 | J4 (F-a) | **C1 (sans F-a)** |
|---|---|---|---|
| `[Person_C_…] N moves to` (compagne qui suit) | 0 | 15 | 6 |
| `GI_C:Dress:` | 0 | 32 716 | **25 985** |
| `property Person in not an UClass` | 0 | 32 711 | **25 982** |
| `clearScenePersons` (piles) | 0 | 2 907 | 2 901 |
| `GetSpecific_PersonToReturn` | 0 | 81 | 65 |
| `removeAlreadyGot` | 0 | 30 | 50 |
| `UNHIDE Persons` | 27 | 25 | 15 |
| `CHECKING:` | 7 825 | 9 524 | 2 190 |
| `STE-H5b-TEMOIN G5-B1` | 18 | 0 | 0 |
| Fatal | 0 | 0 | 0 |
**Établi : les avertissements `Dress` (voies `Room` et `clearScenePersons`) existent sans F-a ; ils suivent le parcours
(compagne qui suit le joueur), pas F-a. F-a est disculpé.** (Le 0 de `G5-B1` en C1 n'est pas une mesure : peu de rafales d'IA,
2 190 `CHECKING:`.) Suite décidée (Q-H5c-2) : O1 (Room) + O3 (`clearScenePersons`), avec G12 (STE-H3c), puis VAL et J5.