LifePlay-Revival/Docs/Migration/etat/OUTC/OUTC-T6-IMPL.md

81 lines
4.9 KiB
Markdown
Raw Normal View History

# OUTC-T6-IMPL : EtatDir.ps1, -EtatDir relatif sans dossier parasite (2026-10-11)
Fiche OUTC-T6 — Niveau N2 — Modèle prévu opus | utilisé claude-opus-5-5 — Agent orchestrateur (session OUTC) — Skills lp-lot, sk-change-safety, sk-windows-shell
Origine : demande de Big Boss du 2026-10-11 (« Corrige aussi `Tools\EtatDir.ps1:30` (`-EtatDir` relatif → dossier
parasite), si c'est dans ton périmètre »). Dans le périmètre du lot : contrôle des dossiers parasites (M1). Correctif de
moins de 20 lignes, fait par l'orchestrateur (code moyen, `sk-orchestrate` § 1) ; VAL indépendante en OUTC-T4.
## 1. Fichiers modifiés
`M Tools\EtatDir.ps1` (copie 5.8, dépôt jeu) : 18 lignes ajoutées, 3 retirées (`git diff --stat`).
- l. 7-11 (aide) : règle du préfixe, refus des parasites et de la racine, règle `OUT[A-Z]?\d*`.
- l. 26 : règle `^(PROP|SK|ETAT\d*|OUT[A-Z]?\d*)(?:-|$)` (avant `OUT\d*`) : `OUTC` et `OUTC-Tn` → `etat\OUTC\`.
- l. 33-39 : `-EtatDir` relatif : `/` → `\`, `.\` retiré, préfixe `Docs\Migration\etat\` ou `etat\` retiré (insensible à
la casse) ; vide après retrait → exception (racine d'`etat\`).
- l. 52-56 : après calcul, exception si le chemin est la racine d'`etat\` ou contient, sous `etat\`, un segment `etat`
ou `Migration` (vaut aussi pour un `-EtatDir` absolu et pour les règles de lot).
Écriture : version préparée et testée dans le scratchpad (`…\scratchpad\OUTC-T6\EtatDir.ps1`), puis **une seule**
écriture `Copy-Item -Force` vers `Tools\` (consigne de Big Boss : `Build.ps1` et `RunCommandlet.ps1` le dot-sourcent
pendant que STE travaille). MD5 avant `28274CB7428E4A5D25F3BAE46486C012`, après `5E18EC5BDBFE9B80D55C985B15F864E4`.
LF, sans BOM, 0 octet non ASCII (`FileCheck.ps1` : `LF=62`, alertes 0). `Build.ps1` analysé sans erreur
(`Parser::ParseFile`, 0 erreur).
## 2. Écarts à la SPEC
La SPEC (`OUTC-SPEC.md` § 2) ne prévoyait pas `EtatDir.ps1` : ajout demandé par Big Boss après la SPEC. Changement de
comportement voulu, en plus du correctif : `OUTC-T1` allait dans `etat\OUTC-T1\` (lot hors table), il va maintenant
dans `etat\OUTC\` ; un `-EtatDir` relatif qui désignait la racine ou un parasite lève désormais une exception au lieu de
créer le dossier.
Écart de procédure : Big Boss a ensuite demandé de remplacer le fichier « entre deux commandlets ». Le remplacement a eu
lieu à 06:32:38 (`LastWriteTime`), alors que `UnrealEditor-Cmd` PID 37900 (`-run=CompileAllBlueprints`, copie 5.8, lot
STE) tournait depuis 06:31:44. Je l'estime sans effet : `RunCommandlet.ps1` dot-source `EtatDir.ps1` et résout le
dossier aux l. 38-39, avant de lancer le commandlet, et l'écriture s'est faite en une seule copie. Big Boss en est
informé. Pour les écritures suivantes de `Tools\`, je vérifie d'abord que `UnrealEditor-Cmd` est absent.
## 3. Instantané
`Tools\Snapshot.ps1 -Lot OUTC -Path Tools\EtatDir.ps1` → `D:\Game\LifePlay_Backup_5.5\OUTC\manifest.csv` (7 entrées),
copie `D:\Game\LifePlay_Backup_5.5\OUTC\Tools\EtatDir.ps1`.
## 4. Essais (17 cas, ancienne vs nouvelle version, `Resolve-LPEtatDir … -NoCreate`)
Sorties brutes : `OUTC-T6_essais.txt` (même dossier). Résumé :
| Entrée (`lot`, `-EtatDir`) | Avant | Après |
|---|---|---|
| `U8`, `STE`, `OUT1`, `OUTC`, `ZZZ`, `PUB2` (sans `-EtatDir`) | `U58\U8`, `ST\STE`, `OUT1`, `OUTC`, `ZZZ`, `publication\PUB2` | identique |
| `OUTC-T1` | `etat\OUTC-T1` | `etat\OUTC` |
| `Docs\Migration\etat\OUTC` | `etat\Docs\Migration\etat\OUTC` (parasite) | `etat\OUTC` |
| `Docs/Migration/etat/U58/U8` | parasite | `etat\U58\U8` |
| `etat\OUTC`, `.\etat\OUTC` | `etat\etat\OUTC`, `etat\.\etat\OUTC` (parasites) | `etat\OUTC` |
| `U58\etat\U8` | parasite créé | exception « dossier parasite refusé » |
| `Docs\Migration\etat\Docs\Migration\etat\X` | parasite double | exception |
| `etat` | `etat\etat` | exception (racine) |
| `publication\PUB2\neutral\Docs` | inchangé | inchangé (pas un parasite) |
| `D:\Temp\abs` | `D:\Temp\abs` | identique |
| absolu `…\Docs\Migration\etat` / `…\etat\U58\etat` | acceptés | exception (racine / parasite) |
## 5. Ce qui n'a pas été fait
Aucun appel réel de `Build.ps1` ou `RunCommandlet.ps1` (ils lancent UBT ou l'éditeur : copie UE). Les appelants ne
passent `-EtatDir` que sur demande de l'opérateur (paramètre transmis tel quel).
## 6. Points à confirmer en VAL
- P1 : rejouer les 17 cas (`…\scratchpad\OUTC-T6\test.ps1 -Script Tools\EtatDir.ps1`) et les 2 cas absolus ; comparer à la copie sauvegardée.
- P2 : `Build.ps1`, `RunCommandlet.ps1`, `ReimportCorrectif.ps1` s'analysent sans erreur et dot-sourcent `EtatDir.ps1` sans le modifier.
- P3 : diff lu en entier ; LF, sans BOM, ASCII.
## 7. Fichiers à commiter (dépôt jeu, `D:\Game\LifePlay-master 5.8`)
```
M Tools/EtatDir.ps1
A Docs/Migration/etat/OUTC/OUTC-T6-IMPL.md
```
(`OUTC-T6_essais.txt` : `.txt` sous `etat\`, ignoré par git comme les autres journaux de lot.)
Tours : sans objet (fiche de l'orchestrateur)