LifePlay-Revival/Docs/Migration/etat/OB/OBB/OBB-T1-SPEC.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

88 lines
9.4 KiB
Markdown

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)
1. **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).
2. **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:DAT` puis compte de fichiers et d'octets égaux (142 fichiers, 450 763 872 o).
3. **Déplacement** : `Move-Item -LiteralPath '<copie>\Content\Modules\.git' -Destination '<GITDIR>'` (même volume).
4. **Configuration** : `git --git-dir='<GITDIR>' config core.worktree '<copie>/Content/Modules'` ; `git --git-dir='<GITDIR>' config core.bare` = `false`.
5. **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 --porcelain` identique octet pour octet à l'étape 1 ; `rev-list --all --reflog --count` = 428 ; `git -C <copie> status --short` (dépôt du jeu) identique à avant.
6. Retour arrière (proposé, jamais lancé sans accord) : `git --git-dir='<GITDIR>' config --unset core.worktree` puis `Move-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 hors `Clothes4.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 ligne `Modules/.git` au manifeste NonUFS.
- Démarrage du build neuf et S2 sans erreur nouvelle (L12 : P1-b ramène l'état sans `.git` de V1.5 et DC4 ; les appelants Blueprint de `GetAllFilesFromFolder` n'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)
1. **Remplacements d'abord** (§ 4) : skills et scripts passent à `git --git-dir=<GITDIR> --work-tree=<copie>\Content\Modules`
explicites, **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.
2. **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 dans
`lp-paths` et `lp-repo` (Big Boss, 2026-10-10) ; la liste de § 4 n'est valable qu'après ce nouveau relevé.
3. **Contrôle** : Grep `git -C` + `Content[\\/]Modules` dans `D:\Game\LifePlay-Sandbox\Tools\claude`,
`D:\Game\LifePlay-Sandbox-5.8\Tools\claude`, `%USERPROFILE%\.claude` et `Tools` des deux copies = 0 occurrence
(témoin non nul : le même Grep avant les remplacements = 4) ; `git --git-dir=<GITDIR> --work-tree=… status` fonctionne.
4. **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.