LifePlay-Revival/Docs/Migration/etat/OUT1/OUT1-IMPL.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

108 lines
9.8 KiB
Markdown

Fiche OUT1-T1 — Niveau N3 — Modèle prévu non précisé (session mère) | utilisé claude-opus-5-5
# OUT1 — trois outils pour remplacer les scripts improvisés (IMPL + essais)
Date : 2026-10-09. Copie : `D:\Game\LifePlay-master 5.8` (branche `ue5.8`) ; addon : checkout actif
`D:\Game\LifePlay-Sandbox` (`lot/DC3-atelier`, lu par les deux jeux via la jonction `.claude\skills`) et worktree
`D:\Game\LifePlay-Sandbox-5.8` (`ue5.8`).
**Statut : clos, commité, rien poussé.** Entrées au journal du jeu 5.8 : **CHG-264** (ces outils) et **CHG-265**
(`Tools/uasset.py`, même lot OUT1, autre session). CHG-263 a été pris par STM, CHG-267 par EDIT1 (qui a intégré le
passage `lp-validate` d'OUT1).
| Dépôt | Branche | Commit | Contenu |
|---|---|---|---|
| jeu `D:\Game\LifePlay-master 5.8` | `ue5.8` | `866e869` | `Tools/UeState.ps1`, `Tools/FileCheck.ps1` (nouveaux), `LogStats.ps1`, `Build.ps1`, `RunCommandlet.ps1`, `EtatDir.ps1` (règle `OUT\d*`), ligne CHG-264, plage du README |
| jeu `D:\Game\LifePlay-master 5.8` | `ue5.8` | `8c6149e` | `Tools/uasset.py`, ligne CHG-265 (session uasset.py) |
| addon `D:\Game\LifePlay-Sandbox` | `lot/DC3-atelier` | `a69c43b` | skills `lp-build`, `lp-commandlets` |
| addon `D:\Game\LifePlay-Sandbox` | `lot/DC3-atelier` | `496ff2c` | skill `lp-validate` (FileCheck), commité par EDIT1 |
| addon `D:\Game\LifePlay-Sandbox-5.8` | `ue5.8` | `8422fd6` | skills `lp-build`, `lp-commandlets` (même contenu) |
| addon `D:\Game\LifePlay-Sandbox-5.8` | `ue5.8` | `aa0c1e5` | skill `lp-validate` (FileCheck), commité par EDIT1 ; pin du jeu 5.8 → `aa0c1e5` au doc 21 (jeu `f6df36b`, EDIT1) |
`git diff lot/DC3-atelier ue5.8 -- Tools/claude/skills` est vide après ces commits.
Compte rendu de `Tools/uasset.py` : `etat/OUT1/OUT1-UASSET.md`, déposé par la session uasset.py (non écrit ici).
Instantanés : `D:\Game\LifePlay_Backup_5.5\OUT1` (7 entrées, jeu 5.8), `OUT1-addon` (3 entrées, addon 5.8),
`OUT1-addon55` (2 entrées, addon `lot/DC3-atelier`).
Emplacement des preuves (`etat/` est ignoré par git dans les deux copies, rien n'y est commité) :
- ce dossier (`D:\Game\LifePlay-master 5.5\Docs\Migration\etat\OUT1\`) : fiche et sorties archivées à la main
(`OUT1_FileCheck_U7b.txt`, `OUT1_LogStats_U7b.txt`, `OUT1_UeState.txt`) ;
- `D:\Game\LifePlay-master 5.8\Docs\Migration\etat\OUT1\` : résumés automatiques écrits par `Build.ps1` et
`RunCommandlet.ps1` dans l'etat de la copie 5.8 (`OUT1_Build_20261009-161628.txt`,
`OUT1_LPTestStringCompat_20261009-161745.txt`) ; journaux complets dans `…5.8\Saved\Logs\portage\`.
## Origine
Audit des transcriptions du 2026-10-09 : « Unreal tourne-t-il ? » 474 appels / 95 agents ; fins de ligne 475 / 92 ;
MD5 197 / 46 ; compter un motif dans un .log 475 / 60 ; trouver le dernier journal 240 / 31.
## Fichiers
| Fichier | Changement |
|---|---|
| `Tools/UeState.ps1` | nouveau (107 lignes). Familles `Editeur` (UnrealEditor, UnrealEditor-Cmd), `Compilation` (UnrealBuildTool, dotnet avec UnrealBuildTool dans la ligne de commande, cl.exe), `Shaders` (ShaderCompileWorker), `Jeu` (`LifePlay*.exe`) ; PID, départ, colonne Copie (dossier `LifePlay*` lu dans la ligne de commande ou le chemin de l'exe), ligne de commande (`-Brief` la masque). Codes 0 rien / 1 quelque chose / 2 délai `-WaitExit -TimeoutSeconds N` dépassé. |
| `Tools/FileCheck.ps1` | nouveau (164 lignes). Fins (CRLF, LF, mixte, aucune, vide, binaire), comptes CRLF / LF seuls / CR seuls, BOM, MD5 ; `-Lot` lit le manifeste de `Snapshot.ps1` et compare à la copie sauvegardée (Contenu identique / modifié / nouveau / absent ; alertes `FINS`, `BOM`, `MIXTE`) ; `-OnlyChanged`, `-Recurse`, `-ProjectRoot` (addon). Codes 0 / 1 alerte / 2 introuvable. Compatible PowerShell 5.1 (pas de `MD5.HashData` ni `Encoding.Latin1`). |
| `Tools/LogStats.ps1` | 78 → 141 lignes : `-Latest <Lot>[_<Commandlet>]` (dernier `Saved\Logs\portage\<préfixe>_*.log` selon l'horodatage du nom), `-Pattern` (une ou plusieurs regex, compte + `-Max` extraits avec `-Context` lignes, ligne trouvée marquée `>`), `-Tail N`, `-Stats`, `-LogDir`. Première ligne `Journal : <chemin complet>`. Comportement d'origine inchangé sans ces options. |
| `Tools/Build.ps1` | contrôle de l'éditeur par `UeState.ps1 -Kind Editeur` (au lieu de `Get-Process`), code 3 conservé ; ligne finale `journal : <chemin>`. |
| `Tools/RunCommandlet.ps1` | ligne finale `journal : <chemin>`. |
| `Tools/EtatDir.ps1` | règle `OUT\d*` ajoutée au groupe à plat (`PROP|SK|ETAT\d*|OUT\d*`), au moment du commit. |
| addon `lp-validate/SKILL.md` | § 1 Fins de ligne : `FileCheck.ps1` remplace le `python -c` ; mise en garde `grep -c $'\r'`. Édité par-dessus la modification EDIT1 déjà présente (conservée). |
| addon `lp-build/SKILL.md` | UeState (contrôle, liste, `-WaitExit`) ; `LogStats -Latest <lot>_Build -Pattern …`. |
| addon `lp-commandlets/SKILL.md` | ligne `journal :`, `LogStats -Latest <Lot>_<Commandlet>`, UeState avant un commandlet qui sauvegarde. |
Tous ces fichiers sont en LF sans BOM, comme avant (`FileCheck.ps1 -Lot OUT1` et `-Lot OUT1-addon` : 0 alerte).
## Preuves (établi : sortie réelle, fichiers de ce dossier)
- `OUT1_FileCheck_U7b.txt` : `FileCheck.ps1 -Lot U7b` → 56 fichiers, tous binaires ; 28 `*_pose.uasset` modifiés,
28 `*_anim.uasset` identiques ; 0 alerte, code 0.
- `OUT1_LogStats_U7b.txt` : `-Latest U7b_CompileAllBlueprints` → `U7b_CompileAllBlueprints_20261009-140525.log`
(3 journaux candidats) ; `: Error: ` 2 lignes (`LogHyperAIStudioAutomation`), `: Warning: ` 0,
`Failure - 1 error(s), 0 warning(s)` ; `-Latest U7b -Tail 5` ; `-Latest OUT1_LPTestStringCompat` → `3120 cas … 0 … 60`.
- `OUT1_UeState.txt` : éditeur headless réel d'une autre session (`STM-T4c`, PID 30000) listé avec copie
`LifePlay-master 5.8` et ligne de commande, code 1.
- `D:\Game\LifePlay-master 5.8\Docs\Migration\etat\OUT1\OUT1_LPTestStringCompat_20261009-161745.txt` (résumé
automatique) : `RunCommandlet.ps1` code 0, 16 s, ligne `journal :` affichée.
- Essais au scratchpad (sortie dans la conversation, non archivée) :
- FileCheck sur un faux lot (Snapshot puis modifications) → `FINS` (CRLF → LF ; LF → mixte), `BOM` (BOM retiré),
nouveau fichier `nouveau`, fichier inchangé `identique` ; code 1 ; fichier mixte sans lot + fichier absent → code 2.
- Faux `UnrealEditor.exe` (copie de `ping.exe`) : UeState code 1 ; `Build.ps1 -Lot OUT1` → liste + code 3, rien
lancé ; `-WaitExit -TimeoutSeconds 3` → code 2 ; `-TimeoutSeconds 60` → code 0 après 9 s.
- Faux `cl.exe`, `dotnet.exe` dans un dossier `UnrealBuildTool`, `ShaderCompileWorker.exe`,
`LifePlay-Win64-Shipping.exe` → tous listés ; un `dotnet.exe` sans UnrealBuildTool est ignoré.
## Écarts et incidents
- **Incident de test** : le premier faux éditeur (`ping` avec un argument en trop) s'est arrêté avant le contrôle ;
`Build.ps1 -Lot OUT1` a donc lancé UBT : « Target is up to date », 0 action, 2,56 s, rien recompilé
(`Saved\Logs\portage\OUT1_Build_20261009-161628.log`, résumé `…5.8\Docs\Migration\etat\OUT1\OUT1_Build_20261009-161628.txt`).
Le second essai vérifiait d'abord le code 1 d'UeState avant d'appeler Build.ps1.
- **Édition par script** (règle EDIT1) : les deux nouveaux fichiers, écrits par Write, ont été convertis en CRLF puis
remis en LF par `[IO.File]::WriteAllText` (j'avais d'abord cru les outils en CRLF, voir constat suivant) ; deux
remplacements d'API dans `FileCheck.ps1` faits par `.Replace()`. Toutes les autres modifications sont passées par Edit.
- **Constat** : `grep -c $'\r$'` / `grep -c $'\r'` sous Git Bash (GNU grep 3.0) compte aussi les lignes LF (fichier
`a\nb\n` sans CR → 2). `Tools/*.ps1` : 11 en LF, 3 en CRLF (`BuildDebug`, `CollectDebugArtifacts`, `SummarizeDebugCsv`).
- `Tools/EtatDir.ps1` : pendant les essais, le lot `OUT1` était hors table (avertissement de `Resolve-LPEtatDir`).
Règle `OUT\d*` à plat ajoutée au moment du commit (`866e869`) : `etat\OUT1\`, sans avertissement. Les autres lots ont
été vérifiés à blanc et ne changent pas.
- Les skills chargés par les sessions passent par la jonction `.claude\skills` → `D:\Game\LifePlay-Sandbox` (branche
`lot/DC3-atelier`). D'abord édités dans `LifePlay-Sandbox-5.8` seulement, ils ont été reportés et commités dans les deux
checkouts (voir le tableau en tête).
## Estimé / incertain
- Estimé : `UeState` détecte UBT lancé par `Build.bat` (dotnet + `UnrealBuildTool.dll`, ligne vue dans le journal de
l'incident) — non observé pendant un vrai build.
- Incertain : lignes de commande de processus d'un autre utilisateur ou élevés (affichées « illisible »).
## Retour arrière
Le texte de CHG-264 a été écrit avant les commits. Depuis : jeu `git revert 866e869` ; addon `git revert a69c43b`
(`lot/DC3-atelier`) et `git revert 8422fd6` (`ue5.8`). Pour `lp-validate`, le changement d'OUT1 est dans les commits
EDIT1 `496ff2c` / `aa0c1e5` : le retirer à la main, ou revenir sur ces commits en accord avec EDIT1.
## INT
Commits demandés par l'utilisateur, relayés par la session « Commençons U7 » ; rien n'est poussé.
- `866e869` (jeu 5.8) : les 2 nouveaux outils, 4 scripts modifiés dont `Tools/EtatDir.ps1` (règle `OUT\d*`), la ligne
CHG-264 et la plage du README (`CHG-266` à cette date, mise à jour depuis par d'autres lots).
- `a69c43b` / `8422fd6` (addon, deux branches) : `lp-build`, `lp-commandlets` ; `496ff2c` / `aa0c1e5` : `lp-validate`
(EDIT1).
- `8c6149e` (jeu 5.8) : `Tools/uasset.py`, CHG-265, par la session uasset.py ; compte rendu dans `OUT1-UASSET.md`.
Le passage `LPTestStringCompat` n'a pas été relancé après le commit : un éditeur interactif était ouvert (PID 32492).
Le `RunCommandlet.ps1` commité est celui du passage de 16:17:45 (dernière modification à 16:14:51) : 3120 / 0 / 60.
Passage de main : session mère `local_03589c9b-7874-4332-b821-d45228d827df`. Lot clos.