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, `\Docs\Migration\etat\REPO\tickets\.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 `, 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-.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 `, 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 -Racine -RacineVerrou `, 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 -RacineVerrou 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 -RacineVerrou 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 -RacineVerrou 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 -RacineVerrou 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 \ancien\Tools\Vague.ps1 -Tickets VAGFIX-ESSAI1 -Racine -RacineVerrou VERDICT VAGFIX-ESSAI1 — refusé C4-CHEMIN-INTERDIT : M README.md (fichier partage hors ticket PARTAGES, V5) code=1 === AVANT (24b2ef4f) : pwsh -NoProfile -File \ancien\Tools\Vague.ps1 -Tickets VAGFIX-ESSAI4-PARTAGES -Racine -RacineVerrou 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é.