LifePlay-Revival/Docs/Migration/etat/AG/VAGFIX/VAGFIX-IMPL.md
2026-10-21 10:57:36 +02:00

11 KiB

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é.