# OUTC-T7-IMPL : CopieEtat.ps1, git sans verrou d'index facultatif (2026-10-11) Fiche OUTC-T7 — Niveau N2 — Modèle prévu opus | utilisé claude-opus-5-5 — Agent orchestrateur (session OUTC) — Skills lp-lot, sk-change-safety Origine : point d'incertitude 4 d'OUTC-T4a (`OUTC-VAL-A.md`). `CopieEtat.ps1` lançait `git status` sans `--no-optional-locks`. Ce `status` pouvait donc prendre `index.lock` un instant et faire échouer un commit du gardien lancé au même moment. `GitEtat.ps1` évite déjà ce cas. ## 1. Fichiers modifiés `M Tools\CopieEtat.ps1` (dépôt jeu, fichier neuf du lot, pas encore commité), fonction `Invoke-LPGit` (l. 143-147) : - `--no-optional-locks` est ajouté en tête des arguments de chaque appel git ; - le commentaire de la fonction gagne une ligne. Rien d'autre ne change. MD5 avant `4A83F321C9EBBA12FF0AB64DA85CD3D2` (livré par T1 et validé par T4a), après `5E441FA06F05B1F1D91B91DCAC5B023F`. LF, 0 CR, 0 octet non ASCII, analyse syntaxique sans erreur. Écriture : version préparée dans `…\scratchpad\OUTC-T7\` et testée là. `UnrealEditor-Cmd` était absent (0 à 07:13:01). Je contrôle que le MD5 de `Tools\CopieEtat.ps1` vaut encore celui d'avant, puis j'écris en une seule copie. ## 2. Écarts à la SPEC Aucun. Le script reste en lecture seule ; l'option empêche seulement les écritures facultatives d'index de `git status`. ## 3. Essais | Commande | Code | Synthèse | |---|---|---| | version T1, `-Lot OUTC -Assets Content\BPs\GI.uasset,Content\BPs\GM.uasset -Json` | 1 | `proc=1 … git=0/9/0 hors_declares=9 … head=7bceea6/22dd7c3/c8661cd verrou=98:libre alertes=PROC,GIT` | | version T7 (scratchpad, `-Copie` vers la copie 5.8), même appel | 1 | identique au champ `cpu` près | | version T7 installée, `-Assets Content\BPs\GI.uasset` | 1 | `proc=0 … alertes=GIT` (l'éditeur `-game` PID 2620 venait de se fermer ; 9 fichiers addon non déclarés d'un autre lot) | Limite constatée, sans lien avec T7 : `Win32_Processor.LoadPercentage` revient parfois vide. Sur 3 lancements, `cpu=?` sort une fois. Le script affiche alors `?`, comme prévu à la l. 427. Piège rencontré pendant l'essai : avec `pwsh -File`, une liste PowerShell passée en `-Assets $a` arrive en deux arguments. Le second, refusé (`PositionalBinding=$false`), donne le code 2. Il faut écrire la liste dans un seul argument `a,b`. Code 0 réel avec la version T7 : P3 de la reprise de T4a l'a bloqué (`BLOCKED-PROC`), parce que l'éditeur PID 28332 tournait (essai MCP du lot MCPA, sous GO de Big Boss). L'orchestrateur l'a rejoué ensuite par `…\scratchpad\OUTC-T7\code0.ps1`, en lecture seule. La sortie brute est copiée dans `OUTC-T7_code0.txt` et le JSON dans `OUTC-T7_code0.json`. | Heure | Commande | Code | Synthèse | |---|---|---|---| | 07:17:56 | `CopieEtat.ps1 -Lot OUTC -Assets 'Content\BPs\GI.uasset,Content\BPs\GM.uasset' -Sortie ref.json` | 1 | `proc=1 … git=0/11/0 hors_declares=11 … alertes=PROC,GIT` | | 07:18:00 | `UeState.ps1 -Copie 'D:\Game\LifePlay-master 5.8' -WaitExit -TimeoutSeconds 3600` | 0 | `attente terminee apres 155 s : plus rien ne tourne` | | 07:20:36 | même appel de CopieEtat avec `-Reference ref.json` | **0** | `COPIE OK … proc=0 assets=2 absents=0 modifies=0 git=0/11/0 hors_declares=0 parasites=0 … alertes=aucune` | ## 4. Points à confirmer en VAL - P1 : diff `CopieEtat.avant.ps1` → `Tools\CopieEtat.ps1` réduit à `Invoke-LPGit` (2 lignes). - P2 : `git status` lancé par CopieEtat ne touche plus la date de `.git\index` (date relevée avant et après). - P3 : V3 et V5 rejoués rapidement sur la version installée : mêmes codes. ## 5. Fichiers à commiter `A Tools/CopieEtat.ps1` (déjà au ticket, version T7) ; `A Docs/Migration/etat/OUTC/OUTC-T7-IMPL.md`. Tours : sans objet (fiche de l'orchestrateur)