LifePlay-Revival/Docs/Migration/etat/AG/VAGFIX/VAGFIX-IMPL.md

169 lines
11 KiB
Markdown
Raw Normal View History

Fiche VAGFIX-IMPL — Niveau N1 — Modèle prévu non précisé par la fiche | utilisé claude-opus-5-5 — Agent lp-impl — Skills sk-protocol, ue-cpp-build, lp-build, lp-ue-compat
# VAGFIX-IMPL : le README racine n'est plus un fichier partagé dans `Tools\Vague.ps1` (2026-10-21)
[sk-protocol] Skills chargés dans le contexte : sk-protocol, ue-cpp-build, lp-build, lp-ue-compat.
Ordonnateur : Big Boss (`local_104ff22d`). Décision de l'utilisateur relayée par la fiche (non tapée dans cette session) :
« Fais d'abord corriger Vague.ps1 (le README racine n'est pas le README des CHG), puis relance la vague avec le README. »
Résultat : réussi. Le README racine passe dans un ticket ordinaire (`essai-OK`, code 0). `Docs/README.md` et
`Docs/Journal_Modifications.md` restent refusés en C4 hors ticket PARTAGES.
## 1. Fichiers modifiés
- `D:\Game\LifePlay-master 5.8\Tools\Vague.ps1` (local, ignoré par git : `.gitignore:91 /Tools/`), 2 lignes :
- l. 258 : `|^(Docs/)?README\.md$'` → `|^Docs/README\.md$' # README racine : fichier ordinaire (VAGFIX)` ;
- l. 340 : `elseif ($c -match 'README\.md$')` → `elseif ($c -match '^Docs/README\.md$')`.
- Fondement : `lp-repo` § 6 (`D:\Game\LifePlay-Sandbox-5.8\Tools\claude\skills\lp-repo\SKILL.md:61-62`) : « `README.md`
(index) […] tous dans `Docs/` de la copie 5.8 ».
- Autres endroits qui reconnaissent un README sans `Docs/` : aucun. Grep `README\\?\.md` sur `Tools\*.{ps1,py,psm1,cmd,bat}`
(chemin passé en `path`, car `Tools/` est ignoré) : seules les lignes 258 et 340 de `Vague.ps1` répondent.
- MD5 : avant `24b2ef4f6a6729c98b6958c7e8d09619`, après `ad23aae837827bda0c2d244a1b046c44`. 494 lignes avant et après.
Fins de ligne : 0 CR, donc LF seul, inchangé. UTF-8 sans BOM (premiers octets `#Re`), inchangé. Analyse syntaxique
PowerShell (`Parser::ParseFile`) : 0 erreur.
## 2. Écarts à la SPEC
- E1, emplacement du ticket d'essai. La solution de repli de la fiche (ticket dans `etat\AG\VAGFIX\`) ne peut pas servir.
`Vague.ps1` lit les tickets à un seul endroit, `<Racine>\Docs\Migration\etat\REPO\tickets\<id>.md` (`Vague.ps1:76-77,106`),
sans option de chemin. De plus, `etat\AG\VAGFIX\*.md` n'est pas ignoré : `git check-ignore -v` renvoie la règle de
ré-inclusion `.gitignore:77 !/Docs/Migration/etat/**/*.md`. J'ai donc fait l'essai sur un clone jetable dans le
scratchpad, avec `-Racine <clone>`, comme VAG1 (`VAG1-IMPL.md:24` ; `VAG1-SPEC-01.md:21` : « servent aux essais sur
clones »). Mise en place : `git clone --shared --no-checkout`, puis sparse-checkout de `/README.md`, `/Docs/README.md`,
`/Docs/Journal_Modifications.md` et `/Docs/Migration/etat/REPO/`. Le README du clone est une copie du `README.md`
modifié de la copie 5.8 : même MD5 `d7a974193c6a15a54289554c2482a6ba`, même `numstat 57 13`. C'est le cas de la vague 14.
Les commandes git qui écrivent n'ont touché que ce clone. Aucun ticket n'a été écrit dans le dépôt : 0 fichier `VAGFIX*`
dans `etat\REPO\tickets`.
- E2, identité. `user.name` et `user.email` du jeu sont dans `.git/config` (`git config --show-origin`), que le clone
ne reprend pas. Je les ai injectés pour le seul processus par `GIT_CONFIG_COUNT` / `GIT_CONFIG_KEY_n` / `GIT_CONFIG_VALUE_n`,
avec les valeurs lues dans le jeu. Ces valeurs n'ont été ni affichées ni écrites.
- E3, verrou. Le clone n'a pas de dossier `VERROU`. Le premier passage a rendu `BLOCKED-VERROU : Verrou.ps1 : racine
introuvable`. J'ai ensuite passé `-RacineVerrou` vers un dossier vide du scratchpad. Le verrou réel n'a été ni lu ni pris.
- E4 : un commentaire de traçabilité a été ajouté en fin de ligne 258 (`# README racine : fichier ordinaire (VAGFIX)`).
- E5, essais en plus de la fiche :
- ESSAI3 (`M Docs/README.md`, ticket ordinaire) ;
- ESSAI4-PARTAGES (`M README.md` dans un ticket PARTAGES) ;
- reproduction du défaut avec l'ancien script (instantané `24b2ef4f`), copié dans le scratchpad avec des copies de
`Verrou.ps1` et `PubCheck.ps1`.
- E6 : je n'ai rien supprimé (`sk-protocol` § 2). Le clone, les 4 tickets d'essai et les copies de scripts restent dans
le scratchpad de la session, hors dépôt. `Vague.ps1` écrit aussi, par conception, `message-<id>.txt` dans
`%TEMP%\claude\VAG1-run\` (`Vague.ps1:91-92,319-320`).
## 3. Instantané
`pwsh -NoProfile -File Tools/Snapshot.ps1 -Lot VAGFIX -Path Tools/Vague.ps1` (depuis la racine du jeu), code 0 :
```
sauvegarde : Tools/Vague.ps1 (24B2EF4F6A6729C98B6958C7E8D09619)
1 entree(s) ajoutee(s) a D:\Game\LifePlay_Backup_5.5\VAGFIX\manifest.csv
```
Copie : `D:\Game\LifePlay_Backup_5.5\VAGFIX\Tools\Vague.ps1` (MD5 `24b2ef4f…`). Retour arrière proposé :
`Tools\Restore.ps1 -Lot VAGFIX`.
## 4. Ce qui n'a pas été fait
- Aucun essai sur le dépôt réel (`-Racine` par défaut). La fiche l'interdit sans ticket dans le dépôt.
- Aucune exécution `-Executer`, aucun commit, aucun verrou pris. La vague 14 n'a pas été relancée : c'est à Big Boss de le faire.
- Pas d'entrée CHG ni de ligne dans `Tools\LISEZMOI.md`. Pour un outil local de `Tools/`, l'instantané et le CHG
remplacent le commit (`lp-build` § 1, `sk-protocol` § 7). Le numéro de CHG est à décider et à réserver par Big Boss.
- Hors périmètre, non modifié : `(^|/)(…|FILE|…)\.md$` (l. 258) reconnaît aussi un `FILE.md`, un `NUMEROS.md`, etc.
placé dans n'importe quel dossier.
## 5. Points à confirmer en VAL
- Le diff entre l'instantané et `Tools\Vague.ps1` ne porte que sur les lignes 258 et 340 (voir Constats). MD5 après : `ad23aae8…`.
- ESSAI1 (`M README.md`, ticket ordinaire, HEAD `3f74261`) → `VERDICT VAGFIX-ESSAI1 — essai-OK — fichiers 1`, code 0.
- ESSAI2 (`M Docs/Journal_Modifications.md`, ticket ordinaire) → `refusé C4-CHEMIN-INTERDIT`, code 1.
- ESSAI3 (`M Docs/README.md`, ticket ordinaire) → `refusé C4-CHEMIN-INTERDIT`, code 1.
- ESSAI4-PARTAGES (`M README.md`) → `refusé P5-PARTAGES : M README.md n'est pas un fichier partage`, code 1.
Ce changement de comportement est voulu. Pour relancer la vague 14, Big Boss met `M README.md` dans un ticket
ordinaire, pas dans le ticket PARTAGES.
- `git status --porcelain -uall` du jeu et de l'addon : identique avant et après les essais (`cmp`).
- Fins de ligne de `Vague.ps1` : LF seul (0 CR), UTF-8 sans BOM.
## 6. Fichiers à commiter
- `A Docs/Migration/etat/AG/VAGFIX/VAGFIX-IMPL.md` (dépôt du jeu, branche `ue5.8`).
- `Tools/Vague.ps1` : rien à commiter (local, ignoré par `.gitignore:91`). La trace est l'instantané `VAGFIX` et le CHG
que décidera Big Boss.
Tours : 23 / 40 (déclaré ; `Tools/FicheStats.py --lot VAGFIX` fait foi)
## Constats
Diff (`diff <instantané> <Tools\Vague.ps1>`, code 1 = différences) :
```
258c258
< $partages = '(^|/)(Journal_Modifications|Registre_Erreurs|NUMEROS|BOSS-ETAT|BOSS-JOURNAL|FILE|REPO-JOURNAL)\.md$|^(Docs/)?README\.md$'
---
> $partages = '(^|/)(Journal_Modifications|Registre_Erreurs|NUMEROS|BOSS-ETAT|BOSS-JOURNAL|FILE|REPO-JOURNAL)\.md$|^Docs/README\.md$' # README racine : fichier ordinaire (VAGFIX)
340c340
< elseif ($c -match 'README\.md$') { $ok = ($txt -match 'CHG-001.*CHG-(\d+)') -and ($ids -contains "CHG-$([int]$Matches[1])") }
---
> elseif ($c -match '^Docs/README\.md$') { $ok = ($txt -match 'CHG-001.*CHG-(\d+)') -and ($ids -contains "CHG-$([int]$Matches[1])") }
```
Trace : sorties ci-dessous, fiche VAGFIX-IMPL, 2026-10-21.
- Commande : `pwsh -NoProfile -File Tools\Vague.ps1 -Tickets <id> -Racine <clone> -RacineVerrou <dossier vide>`,
lancée depuis `D:\Game\LifePlay-master 5.8`, en mode essai par défaut.
- Environnement : clone jetable du jeu (`ue5.8`, HEAD `3f74261`) sous le scratchpad de la session ; addon réel
`D:\Game\LifePlay-Sandbox-5.8`, lu seulement.
- Attendu (écrit avant de lancer) : ESSAI1 `essai-OK` ; ESSAI2 C4.
- Lecture : la sortie STATUS de l'addon est coupée ici (lignes `??` sans rapport). `essai-OK` n'est émis qu'après un
PubCheck à 0 sur le README et le message (`Vague.ps1:355-357`).
Après correctif (`ad23aae8`) :
```
=== pwsh -NoProfile -File Tools\Vague.ps1 -Tickets VAGFIX-ESSAI1 -Racine <clone> -RacineVerrou <vide>
VERDICT VAGFIX-ESSAI1 — essai-OK — fichiers 1
STATUS jeu :
## ue5.8...origin/ue5.8
M README.md
?? Docs/Migration/etat/REPO/tickets/VAGFIX-ESSAI1.md
?? Docs/Migration/etat/REPO/tickets/VAGFIX-ESSAI2.md
?? Docs/Migration/etat/REPO/tickets/VAGFIX-ESSAI3.md
STATUS addon :
## ue5.8...origin/ue5.8 [ahead 5]
code=0
=== pwsh -NoProfile -File Tools\Vague.ps1 -Tickets VAGFIX-ESSAI2 -Racine <clone> -RacineVerrou <vide>
VERDICT VAGFIX-ESSAI2 — refusé C4-CHEMIN-INTERDIT : M Docs/Journal_Modifications.md (fichier partage hors ticket PARTAGES, V5)
code=1
=== pwsh -NoProfile -File Tools\Vague.ps1 -Tickets VAGFIX-ESSAI3 -Racine <clone> -RacineVerrou <vide>
VERDICT VAGFIX-ESSAI3 — refusé C4-CHEMIN-INTERDIT : M Docs/README.md (fichier partage hors ticket PARTAGES, V5)
code=1
=== APRES (ad23aae8) : pwsh -NoProfile -File Tools\Vague.ps1 -Tickets VAGFIX-ESSAI4-PARTAGES -Racine <clone> -RacineVerrou <vide>
VERDICT VAGFIX-ESSAI4-PARTAGES — refusé P5-PARTAGES : M README.md n'est pas un fichier partage
code=1
```
Avant correctif (instantané `24b2ef4f`, copié dans le scratchpad), mêmes tickets. Les deux effets constatés en vague 14
sont reproduits :
```
=== AVANT (24b2ef4f) : pwsh -NoProfile -File <scratch>\ancien\Tools\Vague.ps1 -Tickets VAGFIX-ESSAI1 -Racine <clone> -RacineVerrou <vide>
VERDICT VAGFIX-ESSAI1 — refusé C4-CHEMIN-INTERDIT : M README.md (fichier partage hors ticket PARTAGES, V5)
code=1
=== AVANT (24b2ef4f) : pwsh -NoProfile -File <scratch>\ancien\Tools\Vague.ps1 -Tickets VAGFIX-ESSAI4-PARTAGES -Racine <clone> -RacineVerrou <vide>
VERDICT VAGFIX-ESSAI4-PARTAGES — refusé P6-V5-LIGNE-INCONNUE : README.md:10 : alpha 2026.10.2.2a, download the game archive. The latest full source archive is the V1.5 one (Unreal Engine 5.5).
code=1
```
Dépôts réels non touchés :
```
jeu: status identique
addon: status identique
```
`git rev-parse --short HEAD` du jeu : `3f74261`. Tickets `VAGFIX*` dans `etat\REPO\tickets` : `0`.
Ticket d'essai type (ESSAI1, écrit dans le clone seulement) :
```
# Ticket VAGFIX-ESSAI1 — COMMIT
Statut : demandé
Dépôt : jeu 5.8 — Branche attendue : ue5.8 — HEAD attendu : 3f74261
Fichiers :
M README.md
Message : VAGFIX essai README racine en ticket ordinaire ; corps `Tickets : VAGFIX-ESSAI1`
CHG / ERR : aucun
```
À verser :
- `lp-repo` § 6 : « `README.md` (index) » désigne `Docs/README.md`, jamais le README racine. Le README racine part dans
un ticket ordinaire.
- `lp-repo` (essai de `Vague.ps1` sur clone) :
- `-RacineVerrou` doit viser un dossier qui existe (sinon `BLOCKED-VERROU racine introuvable`) ;
- l'identité du jeu est dans `.git/config` : l'injecter par `GIT_CONFIG_COUNT` dans le clone ;
- `git clone --shared --no-checkout` évite de copier les objets.
- `sk-windows-shell` : en Git Bash, les motifs sparse-checkout qui commencent par `/` sont convertis en
`C:/Program Files/Git/...`. Il faut `MSYS_NO_PATHCONV=1` et un chemin Windows pour `git -C`.
Suite : Big Boss doit décider du CHG de ce correctif, puis relancer la vague 14 avec `M README.md` dans un ticket ordinaire.
État : correctif appliqué et essayé à blanc sur clone, rien de commité.