169 lines
11 KiB
Markdown
169 lines
11 KiB
Markdown
|
|
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é.
|