9.4 KiB
Fiche OBB-T1-SPEC — Niveau N2 — Modèle prévu claude-opus-5-5 | utilisé claude-opus-5-5 — Agent orchestrateur (session « OBB ») — Skills sk-orchestrate, lp-lot, sk-change-safety
OBB-T1-SPEC : B1, dépôt git de Content\Modules hors de l'arbre (P1-b, core.worktree) (2026-10-10)
Statut : rédigée, non exécutable en l'état (OBB-T1 suspendue par arbitrage Big Boss, etat\BOSS\BOSS-JOURNAL.md).
Aucune modification faite par cette SPEC. Entrées : OBB-T1a-INV.md (accepté), etat\OB\OBA\OBA-T5-EVAL.md § 1 B1,
OBA-T23-PROJ-CART.md A10. Décision utilisateur : G-OB-3 = P1 variante b + garde-fou P2 (OBB-TACHES l. 3-6).
1. Conditions d'entrée (toutes requises)
| # | Condition | Contrôle |
|---|---|---|
| E1 | Tickets ETAT3-R3 / ETAT3-R4 commités (skills lp-paths, lp-repo des deux addons propres) et FIN-LOT de DOCMV, qui gèle ensuite ces deux skills (Big Boss, 2026-10-10) |
git -C D:\Game\LifePlay-Sandbox status --short -- Tools/claude/skills/lp-paths Tools/claude/skills/lp-repo vide ; idem LifePlay-Sandbox-5.8 |
| E2 | Emplacement <GITDIR> choisi par l'utilisateur (§ 2) |
citation de l'accord dans le ticket |
| E3 | Copie 5.5 (gelée) : accord explicite de l'utilisateur, demandé par Big Boss | accord transmis par Big Boss (2026-10-10) : « approuvé pour OBB » (déplacement de Content\Modules\.git 5.5 vers D:\Game\LifePlay_ModulesGit\5.5.git) ; à confirmer par l'utilisateur dans la session OBB avant le ticket 5.5 ; prévenir Big Boss avant d'agir (hors file : ne touche pas la copie UE 5.8) |
| E4 | Copie 5.8 : BUILD-GO de Big Boss (le déplacement touche Content\) |
ligne du BOSS-JOURNAL.md |
| E5 | Dépôt Modules dans un état normal : pas d'index.lock, MERGE_HEAD, rebase ; aucun UnrealEditor / LifePlay lancé |
Test-Path, Get-Process |
2. Emplacement du git-dir (décision utilisateur)
Décision utilisateur (2026-10-10) : option A, « LifePlay_ModulesGit (Recommandé) » → <GITDIR_5.8> =
D:\Game\LifePlay_ModulesGit\5.8.git, <GITDIR_5.5> = D:\Game\LifePlay_ModulesGit\5.5.git. Condition E2 remplie.
| Option | Chemins | Pour | Contre |
|---|---|---|---|
| A (recommandée) | D:\Game\LifePlay_ModulesGit\5.8.git, D:\Game\LifePlay_ModulesGit\5.5.git |
hors des deux copies, hors de Content, hors des builds ; nommage des dossiers voisins (LifePlay_Backup_5.5, LifePlay_Build_…, LifePlay_Publication) ; même volume D: (déplacement = renommage, sans recopie) |
un dossier de plus à sauvegarder |
| B | D:\Game\LifePlay-master 5.8.modules.git (et 5.5) |
à côté de chaque copie | mêmes avantages, nom moins lisible |
| C | sous D:\Game\LifePlay_Backup_5.5\ |
déjà sauvegardé | mélange un dépôt vivant avec les instantanés (que Restore.ps1 lit) : rejetée |
D: : 2,46 To libres (T1a § D) ; aucun dossier candidat n'existe déjà.
3. Procédure par copie (ticket MOVE au gardien ; 5.8 d'abord, 5.5 ensuite si E3)
- Photo avant (lecture) :
git -C <copie>\Content\Modules rev-parse HEAD;git -C … --no-optional-locks status --porcelain(5.8 attendu :M Clothes4.txt, 1 ligne, à conserver tel quel) ;git -C … rev-list --all --reflog --count(428) ;du -sb <copie>\Content\Modules\.git(450 763 872 o). - Copie de sécurité (
sk-change-safety) :robocopy <copie>\Content\Modules\.git D:\Game\LifePlay_Backup_5.5\OBB\modules-git-<5.8|5.5> /E /COPY:DATpuis compte de fichiers et d'octets égaux (142 fichiers, 450 763 872 o). - Déplacement :
Move-Item -LiteralPath '<copie>\Content\Modules\.git' -Destination '<GITDIR>'(même volume). - Configuration :
git --git-dir='<GITDIR>' config core.worktree '<copie>/Content/Modules';git --git-dir='<GITDIR>' config core.bare=false. - Photo après :
Test-Path -LiteralPath '<copie>\Content\Modules\.git'= False (dossier et fichier) ;git --git-dir='<GITDIR>' --work-tree='<copie>\Content\Modules' rev-parse HEAD= étape 1 ;status --porcelainidentique octet pour octet à l'étape 1 ;rev-list --all --reflog --count= 428 ;git -C <copie> status --short(dépôt du jeu) identique à avant. - Retour arrière (proposé, jamais lancé sans accord) :
git --git-dir='<GITDIR>' config --unset core.worktreepuisMove-Item '<GITDIR>' '<copie>\Content\Modules\.git'; la copie de l'étape 2 reste le filet.
Piège établi par lecture (nouveau) : sans .git dans Content\Modules, git -C <copie>\Content\Modules … remonte au
dépôt du jeu (<copie>\.git), où /Content/Modules/ est ignoré (.gitignore:83 5.8, :77 5.5). Une commande
oubliée ne échoue donc pas : elle répond pour le mauvais dépôt (status vide, log du jeu). Toute commande sur les
modules doit passer par --git-dir/--work-tree ; le remplacement des 4 lignes de lp-paths est obligatoire, pas
cosmétique. Contrôle conseillé dans lp-paths : git --git-dir=<GITDIR> rev-parse --show-toplevel doit rendre
<copie>/Content/Modules.
4. Remplacements (fiche lp-impl après E1 ; liste exhaustive de OBB-T1a-INV.md § 5)
| Fichier | Lignes | Changement |
|---|---|---|
D:\Game\LifePlay-Sandbox\Tools\claude\skills\lp-paths\SKILL.md (sert les deux copies par la jonction .claude\skills, T1a) et l'exemplaire LifePlay-Sandbox-5.8 |
16, 66, 67 | forme git --git-dir=<GITDIR_x> --work-tree='<copie>\Content\Modules' status --porcelain ; ligne 16 : « git-dir hors arbre <GITDIR> » |
…\skills\lp-repo\SKILL.md (deux exemplaires) |
18 | « git-dir local <GITDIR> hors arbre (un par copie) » |
.gitignore 5.8 :82 ; 5.5 :76 (5.5 : seulement si E3) |
commentaire | « modules de jeu dans un dépôt local séparé (git-dir hors arbre <GITDIR>, OBB) » ; la règle /Content/Modules/ reste |
Tools\CheckIntegrity.ps1 (5.8) |
Hash-Tree :35 |
décision de lot : la référence D:\Game\LifePlay_Backup_5.5\ref_modules_5.8.csv contient 142 lignes Content\Modules\.git\… ; après le déplacement, -Modules signalera 142 fichiers absents. Recommandé : exclure \.git\ des deux côtés de la comparaison (référence conservée, la modification CHG-287 de Clothes4.txt reste visible). Alternative : -InitRef (efface aussi l'écart Clothes4.txt). Script partagé : à déclarer à Big Boss avant écriture |
Docs/Migration/21_Sandbox_Addon.md:227, 27_Plan_Migration_UE58.md:59, 29_Projet_Stabilisation_V2.md:317 |
descriptions | fiche DOC (lp-writer) après la VAL, avec l'entrée CHG |
Hors périmètre : Config/DefaultGame.ini:74 (DirectoriesToAlwaysStageAsNonUFS=(Path="Modules")) reste inchangé ; les
lignes historiques du Journal ne sont pas réécrites.
5. Validation (fiche VAL distincte, lp-validator)
- Étape 5 de § 3 rejouée sur chaque copie traitée ;
CheckIntegrity.ps1 -Modules: 0 écart horsClothes4.txt(si l'option recommandée de § 4 est retenue). Tools\CheckPackage.ps1(OBB-T3) sur le build neuf d'OBB-T7 : contrôle (1) PASS, 0 ligneModules/.gitau manifeste NonUFS.- Démarrage du build neuf et S2 sans erreur nouvelle (L12 : P1-b ramène l'état sans
.gitde V1.5 et DC4 ; les appelants Blueprint deGetAllFilesFromFoldern'ont pas besoin d'être établis pour ce retour à l'état antérieur).
6. Ordre imposé (arbitrage Big Boss, 2026-10-10, sur cette SPEC)
- Remplacements d'abord (§ 4) : skills et scripts passent à
git --git-dir=<GITDIR> --work-tree=<copie>\Content\Modulesexplicites, avant le déplacement ou dans le même commit. Pendant la fenêtre, le<GITDIR>n'existe pas encore : une commande échoue bruyamment (« not a git repository ») au lieu de répondre pour le dépôt du jeu. - Déplacement ensuite (§ 3) : copie 5.8 sous
BUILD-GO; copie 5.5 sur accord de l'utilisateur, phrase exacte citée dans le ticket (aucun accord obtenu à ce jour). Après la levée du gel DOCMV, refaire le Grep de T1a avant les remplacements : DOCMV change aussi des chemins danslp-pathsetlp-repo(Big Boss, 2026-10-10) ; la liste de § 4 n'est valable qu'après ce nouveau relevé. - Contrôle : Grep
git -C+Content[\\/]ModulesdansD:\Game\LifePlay-Sandbox\Tools\claude,D:\Game\LifePlay-Sandbox-5.8\Tools\claude,%USERPROFILE%\.claudeetToolsdes deux copies = 0 occurrence (témoin non nul : le même Grep avant les remplacements = 4) ;git --git-dir=<GITDIR> --work-tree=… statusfonctionne. - Annonce :
[OBB→BOSS] OBB-T1 FAIT; Big Boss diffuse à toutes les sessions.
CheckIntegrity.ps1 (§ 4) : accordé par Big Boss ; avant écriture, lui déclarer les lignes modifiées et les appelants
du script (Grep dans Tools et dans les skills). Skills modifiés seulement après le commit d'ETAT3-R3/R4 (session « AR »).
7. Découpage prévu
| Fiche | Agent | Copie UE | Dépend de |
|---|---|---|---|
| OBB-T1b (remplacements § 4, étape 1) | lp-impl | non | E1 ; déclaration CheckIntegrity.ps1 à Big Boss |
| OBB-R2 (ticket COMMIT d'OBB-T1b, après VAL statique) | lp-gardien | non | OBB-T1b |
| OBB-R3 (ticket MOVE 5.8, étape 2) | lp-gardien | oui (BUILD-GO, Content\) |
E2, E4, E5, OBB-R2 |
| OBB-R4 (ticket MOVE 5.5) | lp-gardien | non (copie 5.5) | E3, OBB-R3 vérifié |
| OBB-T1v (VAL § 5 et contrôle de l'étape 3) | lp-validator | non | OBB-R3 (et R4 si fait) |
| OBB-T7 (build, contrôles, démarrage) | lp-builder + lp-validator | oui (BUILD-DEMANDE) | OBB-T1v, OBB-T3v |
Numérotation des tickets indicative : OBB-R2 peut revenir au premier COMMIT d'OBB-T3 selon l'ordre réel.