LifePlay-Revival/Docs/Migration/etat/OB/OBB/OBB-T1b-IMPL.md
edujiro5972 8084622450 LifePlay UE 5.8 : état de développement au 2026-10-19
Tickets : REP1-T4

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 22:57:42 +02:00

13 KiB
Raw Permalink Blame History

Fiche OBB-T1b — Niveau N2 — Modèle prévu modèle de l'agent lp-impl | utilisé claude-opus-5-5 — Agent lp-impl — Skills sk-protocol, sk-windows-shell, lp-doc (gabarit IMPL lu dans gabarits.md) ; préchargés aussi : ue-cpp-build, lp-build, lp-ue-compat ; sk-change-safety non invoqué (instantanés pris par l'orchestrateur)

OBB-T1b-IMPL : B1 étape 1, commandes des modules en --git-dir explicite et exclusion de Content\Modules\.git\ (2026-10-10)

Entrées : fiche OBB-T1b (registre OBB-TACHES.md), OBB-T1-SPEC.md § 3 (piège), § 4, § 6. Aucun déplacement de .git, aucune écriture git, aucun lancement d'Unreal, d'UAT ou d'UBT.

1. Fichiers modifiés (chemins, lignes)

Dépôt Fichier Lignes après modification Changement
addon D:\Game\LifePlay-Sandbox (lot/DC3-atelier, HEAD cc649fd) Tools\claude\skills\lp-paths\SKILL.md 16 ; 66, 67 ; 68 (ajoutée) l. 16 : colonne arbre = texte de la fiche ; l. 66-67 : git --git-dir='D:\Game\LifePlay_ModulesGit\<5.8|5.5>.git' --work-tree='D:\Game\LifePlay-master <5.8|5.5>\Content\Modules' status --porcelain # modules <x> ; l. 68 : commentaire de la fiche (sans git -C)
idem Tools\claude\skills\lp-repo\SKILL.md 18 texte de la fiche
addon D:\Game\LifePlay-Sandbox-5.8 (ue5.8, HEAD 450fb3e) Tools\claude\skills\lp-paths\SKILL.md 16, 66, 67, 68 identique à l'addon 5.5 (cmp = identiques)
idem Tools\claude\skills\lp-repo\SKILL.md 18 identique (cmp = identiques)
jeu D:\Game\LifePlay-master 5.8 (ue5.8, HEAD 2cca224) .gitignore 82 (+ fins de ligne 87-90, voir § 2 E1) commentaire PUB2 = texte de la fiche ; l. 83 /Content/Modules/ inchangée
idem Tools\CheckIntegrity.ps1 30-31 ; 38-40 ; 71 l. 30 commentaire # OBB-T1 : … ; l. 31 $gitDirLike = 'Content\Modules\.git\*' ; Hash-Tree l. 38-40 : chemin relatif dans $relPath, return s'il est sous .git\ (le fichier n'est plus haché) ; l. 71 : Where-Object { $_.Rel -notlike $gitDirLike } sur Import-Csv $refCsv

Encodage et fins de ligne (relevé avant / après, [IO.File]::ReadAllBytes) : les 4 SKILL.md restent en UTF-8 sans BOM et LF seul (avant 72/93 LF, après 73/93 LF, UTF-8 valide) ; CheckIntegrity.ps1 reste en ASCII et LF seul (89 → 93 LF) ; .gitignore était mixte (4 CRLF aux lignes 87-90, 86 LF) et est maintenant en LF seul (90 LF) : voir E1.

2. Écarts à la SPEC

  • E1 (fins de ligne du .gitignore) : la fiche demande de garder les fins de ligne, mais l'outil Edit (seul permis) ramène en LF un fichier à fins de ligne mixtes, exception connue et nommée pour ce fichier dans sk-protocol § 7. Essai préalable sur une copie jetable (scratchpad\obb-t1b\gitignore-essai), même résultat : CRLF 4 → 0. Le diff du jeu touche donc aussi les lignes 87-90 (bloc # BEGIN/END HYPERAISTUDIO MANAGED RUNTIME IGNORE), en fins de ligne seulement : git diff --ignore-cr-at-eol --stat -- .gitignore = 1 +, 1 -. À trancher par l'orchestrateur : accepter, ou repartir de l'instantané D:\Game\LifePlay_Backup_5.5\OBB\.gitignore et faire appliquer la ligne 82 autrement.
  • E2 (Grep (1) sur %USERPROFILE%\.claude) : le Grep brut ne donne pas 0 mais 147 occurrences dans 69 fichiers, toutes dans l'historique de Claude Code : transcriptions projects\**\*.jsonl (121 lignes, 55 fichiers, rg -c), y compris celle de cette session, et file-history\92a3927f-…\d344a2d78fb4f32d@v4…v17 (14 fichiers). Le même Grep sans ces dossiers (glob !{projects/*/*.jsonl,projects/*/*/subagents/**,file-history/**}) donne 0. La configuration active (skills, agents, réglages, mémoire) n'a donc aucune occurrence. Je n'ai pas touché à l'historique (hors périmètre).
  • E3 (| dans les cellules de tableau) : le texte dicté pour lp-paths:16 et lp-repo:18 contient <5.8|5.5> dans une cellule de tableau markdown. Il est appliqué tel quel. En rendu GFM, un | non échappé coupe la cellule, même entre accents graves : les colonnes se décalent à l'affichage, mais le texte brut que lisent les agents est correct. Je ne l'ai pas corrigé d'initiative (proposition : \|, ou 5.8.git et 5.5.git écrits en entier).
  • E4 (HEAD du jeu) : la fiche annonce 08c1a49, j'ai relevé 2cca224 (git rev-parse --short HEAD). C'est le commit suivant (registre AG, CHG-299). Les lignes 82 et 31-75 avaient bien le texte attendu, ce n'est pas un critère d'arrêt.
  • E5 (-InitRef) : Hash-Tree sert aussi à -InitRef, donc une future référence ne contiendra plus les lignes .git. C'est cohérent avec l'exclusion des deux côtés. Je ne l'ai pas exécuté (il écrit).
  • E6 (mon propre défaut, corrigé avant les preuves finales) : la première version nommait la variable $rel. Comme PowerShell ignore la casse, elle écrasait le paramètre $Rel ([string[]]) de Hash-Tree, et Rel devenait un tableau. Résultat de l'essai : ECHEC … 2053 ecart(s) sur 2053, tous absent. J'ai renommé la variable en $relPath, puis rejoué les preuves (3), (4) et (5) ci-dessous. Piège à reporter dans un skill.
  • E7 : le contrôle conseillé par SPEC § 3 (git --git-dir=<GITDIR> rev-parse --show-toplevel dans lp-paths) n'a pas été ajouté, car la fiche ne le demande pas.
  • E8 (méthode) : quelques comptages en lecture seule ont été faits au shell (rg -c, grep -ci, grep -v '^index ') au lieu de l'outil Grep (sk-protocol § 7) : répartition des 147 occurrences, 142 lignes .git de la référence, comparaison des deux diffs d'addon.

3. Instantané

Pris par l'orchestrateur avant la fiche (relu dans les manifestes) :

  • D:\Game\LifePlay_Backup_5.5\OBB\manifest.csv : .gitignore (2633 o, MD5 8E7421D6…, 12:15:19), Tools\CheckIntegrity.ps1 (3958 o, MD5 A7EE18B8…, 12:15:19). Il contient aussi Tools\BuildDebug.ps1 et Tools\SplitModules.ps1 (OBB-T3, 11:11:44) : un retour arrière d'OBB-T1b doit viser seulement les 2 fichiers (options de Restore.ps1 non lues : incertain).
  • …\OBB-addon\manifest.csv et …\OBB-addon58\manifest.csv : lp-paths\SKILL.md (6403 o, 06BE11FC…) et lp-repo\SKILL.md (7403 o, CC2F74E7…), 12:15:20.
  • Les tailles correspondent à mon relevé de départ (2633, 3958, 6403, 7403 o). Les MD5 n'ont pas été recalculés avant modification.

4. Ce qui n'a pas été fait

  • Étape 2 (déplacement de Content\Modules\.git, création de D:\Game\LifePlay_ModulesGit, core.worktree) : hors fiche, ticket MOVE au gardien sous BUILD-GO. Test-Path D:\Game\LifePlay_ModulesGit = False avant et après.
  • .gitignore de la copie 5.5 et D:\Game\LifePlay-master 5.5 : non touchés (Grep sur Tools 5.5 = 0, rien à remplacer).
  • Docs 21, 27 et 29 (descriptions) : fiche DOC après la VAL (SPEC § 4).
  • Déclaration à Big Boss des lignes de CheckIntegrity.ps1 : rôle de l'orchestrateur. Pour l'aider, j'ai cherché les appelants : Grep CheckIntegrity sur D:\Game\LifePlay-master 5.8\Tools ne trouve que le script lui-même (l. 15-16) et Engine.ps1:23 (commentaire) ; sur D:\Game\LifePlay-Sandbox-5.8\Tools\claude = 0.
  • Pas de -InitRef, aucune référence réécrite, aucun build, aucune écriture git.
  • Les modifications en cours de D:\Game\LifePlay-Sandbox (Config/DefaultEngine.ini, Config/DefaultGame.ini, Plugins/LPSandbox/Source/LPAnimMeasure/LPAnimMeasure.cpp) appartiennent à une autre session : je n'y ai pas touché.

5. Points à confirmer en VAL

P1 Grep git -C.*Content[\\/]Modules (-i) = 0 sur D:\Game\LifePlay-Sandbox\Tools\claude, D:\Game\LifePlay-Sandbox-5.8\Tools\claude, D:\Game\LifePlay-master 5.8\Tools, D:\Game\LifePlay-master 5.5\Tools P2 même Grep sur %USERPROFILE%\.claude hors projects/*/*.jsonl, projects/*/*/subagents/**, file-history/** = 0 (brut = 147 dans l'historique, E2) P3 témoin : même Grep sur D:\Game\LifePlay_Backup_5.5\OBB-addon = 2 et …\OBB-addon58 = 2 (lp-paths\SKILL.md:66-67) P4 git --git-dir='D:\Game\LifePlay_ModulesGit\5.8.git' --work-tree='D:\Game\LifePlay-master 5.8\Content\Modules' status --porcelain → fatal: not a git repository: 'D:\Game\LifePlay_ModulesGit\5.8.git', code 128 (idem 5.5) P5 pwsh -NoProfile -File "D:\Game\LifePlay-master 5.8\Tools\CheckIntegrity.ps1" -Modules → 1 ecart(s) sur 2053, seule ligne different : Content\Modules\Clothes4.txt, code 1 (avant : 1 sur 2195) P6 faux projet sans .git avec la référence copiée (-ProjectRoot, -BackupRoot) : script d'origine 143 écarts (142 absent : …\.git\…), script modifié 1 écart sur 2053 P7 ParseFile de Tools\CheckIntegrity.ps1 = 0 erreur P8 cmp des deux exemplaires de lp-paths\SKILL.md et de lp-repo\SKILL.md = identiques ; diffs des deux addons identiques hors lignes index P9 git status : seuls les 6 fichiers sont modifiés par cette fiche (plus le livrable) ; les 3 fichiers en cours de LifePlay-Sandbox ne sont pas les miens P10 lp-paths\SKILL.md:68 ne contient pas git -C P11 décision E1 (fins de ligne du .gitignore, lignes 87-90) prise par l'orchestrateur P12 décision E3 (| dans les cellules de tableau) prise par l'orchestrateur P13 ref_modules_5.8.csv inchangée (date 2026-10-08 23:04:41, cmp identique à la copie prise avant les essais)

6. Fichiers à commiter

Ordre addon → jeu (lp-repo) ; chemins explicites, jamais add -A.

  • addon D:\Game\LifePlay-Sandbox (lot/DC3-atelier) :
    • M Tools/claude/skills/lp-paths/SKILL.md
    • M Tools/claude/skills/lp-repo/SKILL.md
  • addon D:\Game\LifePlay-Sandbox-5.8 (ue5.8) :
    • M Tools/claude/skills/lp-paths/SKILL.md
    • M Tools/claude/skills/lp-repo/SKILL.md
  • jeu D:\Game\LifePlay-master 5.8 (ue5.8) :
    • M .gitignore (voir E1 avant le commit)
    • M Tools/CheckIntegrity.ps1
    • A Docs/Migration/etat/OB/OBB/OBB-T1b-IMPL.md

Tours : 15 / 40

Constats

Preuves (commandes et sorties brutes)

  • (1) Grep (outil Grep, -i, motif git -C.*Content[\\/]Modules) : LifePlay-Sandbox\Tools\claude 0, LifePlay-Sandbox-5.8\Tools\claude 0, LifePlay-master 5.8\Tools 0, LifePlay-master 5.5\Tools 0, %USERPROFILE%\.claude 147 / 69 fichiers bruts, 0 hors historique (E2). Témoin : OBB-addon 2, OBB-addon58 2. Avant modification, les addons vivants donnaient aussi 2 + 2.
  • (2) pwsh -NoProfile -Command "git --git-dir='D:\Game\LifePlay_ModulesGit\5.8.git' --work-tree='D:\Game\LifePlay-master 5.8\Content\Modules' status --porcelain; \$LASTEXITCODE" → fatal: not a git repository: 'D:\Game\LifePlay_ModulesGit\5.8.git' puis code=128 ; 5.5 : même message avec 5.5.git, code=128.
  • (3) pwsh -NoProfile -File "D:\Game\LifePlay-master 5.8\Tools\CheckIntegrity.ps1" -Modules (lecture seule : le chemin -Modules ne fait que Import-Csv, Get-FileHash et Report, et Engine.ps1 -NoCheck lit seulement le .uproject). Avant (12:16:58) : ECHEC T-STAT-02 Modules = reference 5.8 : 1 ecart(s) sur 2195 / different : Content\Modules\Clothes4.txt, code 1. Après : ECHEC T-STAT-02 Modules = reference 5.8 : 1 ecart(s) sur 2053 / different : Content\Modules\Clothes4.txt, code 1. 2195 − 2053 = 142 = fichiers de Content\Modules\.git (find … -type f) = lignes .git de la référence. Aucune écriture dans D:\Game\LifePlay_Backup_5.5 (find -maxdepth 2 -newer à 12:16:50) en dehors de AG-R6\ (manifeste 12:20:05, Config et Plugins : instantané d'une autre session, ticket AG-R6 non suivi dans le jeu ; estimé : pas produit par CheckIntegrity, qui ne crée aucun dossier).
  • (4) Faux projet %USERPROFILE%\AppData\Local\Temp\claude\D--Game-LifePlay-master-5-8\0b6366db-34d6-4803-8aee-2e309785cb38\scratchpad\obb-t1b\fake\proj (robocopy … /E /XD .git, 2053 fichiers, 14 987 391 o, pas de .git) et …\fake\backup\ref_modules_5.8.csv (copie) : script d'origine 143 ecart(s) sur 2195 (les 20 premières lignes affichées sont absent : Content\Modules\.git\…) ; script modifié 1 ecart(s) sur 2053 (Clothes4.txt). L'exclusion côté référence est donc prouvée par l'exécution, pas seulement par lecture.
  • (5) [System.Management.Automation.Language.Parser]::ParseFile(…CheckIntegrity.ps1…) → erreurs ParseFile = 0.
  • (6) git diff des 3 dépôts : jeu .gitignore (blob 8d52499..941fe14) l. 82 et, en fins de ligne seulement, l. 87-90 ; Tools/CheckIntegrity.ps1 (bdfeb6c..14858a5) 8 ++++++-- ; addon Sandbox et Sandbox-5.8 : lp-paths/SKILL.md 7 ++++---, lp-repo/SKILL.md 2 +- dans chacun, les deux diffs étant identiques hors lignes index. Diff complet relu : lignes conformes au § 1, rien d'autre.

Compte rendu (sk-protocol § 3)

  1. Résultat : réussi, avec deux écarts à trancher (E1 : fins de ligne du .gitignore ; E2 : historique de Claude Code dans le Grep de %USERPROFILE%\.claude).
  2. Preuves : voir (1) à (6) ci-dessus.
  3. Chiffres : Grep 0 / 0 / 0 / 0 (+ 0 hors historique), témoin 2 / 2 ; code 128 ×2 ; CheckIntegrity 1 sur 2195 → 1 sur 2053 ; faux projet 143 → 1 ; ParseFile 0.
  4. Incertitudes : effet du passage en LF sur le bloc géré par HyperAIStudio (non vérifié, l'outil peut réécrire son bloc) ; options de Restore.ps1 non lues.
  5. Écarts : § 2. Fichiers écrits : les 6 du § 1 et ce livrable ; dans le scratchpad, obb-t1b\gitignore-essai, obb-t1b\fake\…, obb-t1b\marqueur-debut, obb-t1b\backuproot-avant.txt.
  6. Tours : 15 / 40.
  7. Suite : l'orchestrateur doit trancher E1 et E3, puis envoyer la VAL statique (P1-P13) et le ticket COMMIT (OBB-R2) au gardien. État : étape 1 de B1 appliquée, non commitée ; le .git des modules est toujours en place.