96 lines
15 KiB
Markdown
96 lines
15 KiB
Markdown
|
|
Fiche OBB-T1v — Niveau N1 — Modèle prévu modèle de l'agent lp-validator | utilisé claude-sonnet-5-5 — Agent lp-validator — Skills sk-protocol, sk-recount, debug-verification, lp-validate, lp-doc (gabarit VAL lu dans `gabarits.md`)
|
|||
|
|
# OBB-T1-VAL : validation de B1 étapes 2 et 3 (dépôts git des modules hors de `Content\Modules`, `core.worktree`, contrôle de l'ordre imposé) (2026-10-10)
|
|||
|
|
|
|||
|
|
Validation en lecture seule : aucune écriture dans les git-dirs, les copies, les sauvegardes, les skills ; aucune écriture git ni config ; aucun `gc`, `fsck` ; aucun Unreal / UAT / UBT / commandlet lancé ; `CheckIntegrity.ps1 -InitRef` jamais lancé ; l'éditeur STE-GI n'a pas été touché. Scripts d'essai (scratchpad `…\scratchpad\obb-t1v\`) : `git-checks.ps1`, `misc-checks.ps1` (lecture seule). Critères d'arrêt (un `.git` qui réapparaît, un HEAD qui diffère) : non atteints.
|
|||
|
|
|
|||
|
|
## 1. Fiches amont relues
|
|||
|
|
- `D:\Game\LifePlay-master 5.8\Docs\Migration\etat\OB\OBB\OBB-T1-SPEC.md` (lu en entier : § 3 procédure et piège, § 5 validation, § 6 ordre imposé).
|
|||
|
|
- `…\OBB\OBB-T1b-IMPL.md` (lu en entier, 138 lignes ; § 5 P1-P13 repris au § 2) et `…\OBB\OBB-T1b-VAL.md` (lu en entier, PASS ; son § 5 « non rejoué » et son § 6 repris au § 2 et § 6).
|
|||
|
|
- `…\OBB\OBB-INT-R6.md` (MOVE 5.8) et `…\OBB\OBB-INT-R7.md` (MOVE 5.5) : lus en entier ; leurs valeurs « photo après » sont recomptées au § 3, pas reprises. Tickets `REPO\tickets\OBB-R6.md` et `OBB-R7.md` : cités par les INT, non relus ligne à ligne (périmètre : les deux INT).
|
|||
|
|
- `D:\Game\LifePlay-Sandbox\Tools\claude\skills\lp-paths\SKILL.md:58-73` (lignes 66-67 exécutées au § 3) ; gabarit VAL de `lp-doc`.
|
|||
|
|
- Conformité des INT au gabarit INT : INT-R6 a les sections 1 à 8 du gabarit (+ 9 à 11 en plus) ; INT-R7 a des sections numérotées 1 à 7 dont les titres diffèrent du gabarit INT (contrôles d'entrée et sorties brutes regroupés, « Tags et pin » fusionné en § 4, pas de section « Push » dédiée). Écart de forme mineur, sans effet sur le verdict (aucun commit ni tag dans ces tickets).
|
|||
|
|
- Commits amont (lecture `git log`) : jeu `5b34499` (OBB étape 1, CHG-304), addon 5.5 `8b884a6`, addon 5.8 `247af5a` : l'étape 1 est donc commitée ; `git status` du jeu n'a plus de ` M` sur `.gitignore` ni sur `Tools/CheckIntegrity.ps1`.
|
|||
|
|
|
|||
|
|
## 2. Points à confirmer des IMPL
|
|||
|
|
Points de `OBB-T1b-IMPL.md` § 5 (P1-P13), repris avec la décision de `OBB-T1b-VAL.md` ; rejoués ici quand l'état a changé (le git-dir existe maintenant).
|
|||
|
|
| Id | Point | Résultat | Preuve |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| P1 | Grep `git -C.*Content[\\/]Modules` (-i) = 0 sur les 4 chemins | **PASS** (rejoué) | outil Grep, mode count : `LifePlay-Sandbox\Tools\claude` 0, `LifePlay-Sandbox-5.8\Tools\claude` 0, `LifePlay-master 5.8\Tools` 0, `LifePlay-master 5.5\Tools` 0 ; en plus `%USERPROFILE%\.claude\skills` 0, `…\agents` 0, `CLAUDE.md` / `AGENTS.md` du jeu 5.8 : 0 ; copie 5.5 : ni `CLAUDE.md` ni `AGENTS.md` (`ls`). Couverture prouvée par des Grep positifs : `git --git-dir` = 3 occurrences dans chaque addon (2 fichiers : `lp-paths`, `lp-repo`) ; `git` = 22 occurrences dans 7 fichiers de `master 5.8\Tools`, 4 dans 2 fichiers de `master 5.5\Tools`, 16 dans 11 fichiers de `…\.claude\agents`. `.claude\skills` des deux copies = jonction vers `D:\Game\LifePlay-Sandbox\Tools\claude\skills` (`ls -la`), donc couverte par le Grep de l'addon |
|
|||
|
|
| P2 | même Grep sur `%USERPROFILE%\.claude` hors historique = 0 | **PASS** pour `skills` et `agents` (périmètre de la fiche) ; brut `.claude` entier **reporté** | brut (147 dans `projects`, `file-history`, E2 de l'IMPL, accepté par T1b-VAL) non rejoué, la fiche limite le Grep à `skills` et `agents` |
|
|||
|
|
| P3 | témoin non nul | **PASS** avec écart de chemin (voir Constats 1) | `D:\Game\LifePlay_Backup_5.5\OBB-addon (2)` **n'existe pas** (Grep : « Path does not exist ») ; les témoins existants sont `OBB-addon` = 2 (`…\lp-paths\SKILL.md:66-67`) et `OBB-addon58` = 2 (`…\lp-paths\SKILL.md:66-67`), même motif, anciennes lignes `git -C '…\Content\Modules' status --porcelain` |
|
|||
|
|
| P4 | `--git-dir` inexistant : code 128 | **caduc (remplacé)** | le git-dir existe maintenant ; la même forme de commande rend le statut et le code 0 (§ 3, lp-paths:66-67) |
|
|||
|
|
| P5 | `CheckIntegrity.ps1 -Modules` : 1 écart sur 2053 (`Clothes4.txt`) | **PASS** (rejoué, `.git` réellement absent) | `pwsh -NoProfile -File "D:\Game\LifePlay-master 5.8\Tools\CheckIntegrity.ps1" -Modules` → `ECHEC T-STAT-02 Modules = reference 5.8 : 1 ecart(s) sur 2053` / ` different : Content\Modules\Clothes4.txt`, code 1 |
|
|||
|
|
| P6 | faux projet : 143 → 1 écart | reporté | établi par T1b-VAL ; remplacé par l'exécution réelle de P5 (le vrai `.git` est absent : 2053 fichiers, même total) ; compte recoupé : Grep `Content\\Modules\\\.git\\` dans `ref_modules_5.8.csv` = 142 lignes |
|
|||
|
|
| P7 | `ParseFile` = 0 erreur | **PASS** (rejoué) | `[Parser]::ParseFile(…\Tools\CheckIntegrity.ps1…)` → `erreurs = 0` |
|
|||
|
|
| P8 | deux exemplaires de `lp-paths` et `lp-repo` identiques | **PASS** (rejoué) | `Get-FileHash -Algorithm MD5` : lp-paths `402232CF177BB4DFD8AFA8A930500EE5` des deux côtés ; lp-repo `38D90FE6BD81D459AA6B758D540758B1` des deux côtés |
|
|||
|
|
| P9 | seuls les 6 fichiers modifiés par T1b | reporté (dépassé) | T1b-VAL PASS ; les fichiers sont commités (`8b884a6`, `247af5a`, `5b34499`) ; `git status --short` des addons = vide (aucune ligne) ; les ` M` du jeu sont ceux d'autres lots (liste au § 4) |
|
|||
|
|
| P10 | `lp-paths:68` sans `git -C` | **PASS** | Grep `git -C.*Content[\\/]Modules` = 0 sur `Sandbox\Tools\claude` ; ligne 68 lue par T1b-VAL (`SKILL.md:68` : « # modules : jamais sans --git-dir ; sans .git local, git remonte au dépôt du jeu … (OBB-T1) »), non relue ici : le Grep nul la couvre |
|
|||
|
|
| P11 | décision E1 (fins de ligne du `.gitignore`) | reporté | T1b-VAL PASS ; commité ; `git status` du jeu ne montre plus `.gitignore` |
|
|||
|
|
| P12 | décision E3 (`\|` dans les cellules) | reporté | T1b-VAL PASS, non rejoué |
|
|||
|
|
| P13 | `ref_modules_5.8.csv` inchangée | **PASS** (réserve) | `Get-Item` : 222 357 o, `2026-10-08T23:04:41` (date de T1b-VAL inchangée) ; MD5 non recalculé (T1b-VAL : `8C1EB509…`) : estimé |
|
|||
|
|
| T1b-E7 | contrôle `--show-toplevel` non ajouté aux skills : vérifier qu'il répond | **PASS** | § 3 : `rev-parse --show-toplevel` rend `<copie>/Content/Modules` avec `--git-dir` seul, dans les deux copies |
|
|||
|
|
| T1b-VAL § 6 | report du contrôle `--show-toplevel` sur `<GITDIR>` après le déplacement | **PASS** (levé par ce VAL) | idem |
|
|||
|
|
| T1b-VAL § 5 | comportement de `CheckIntegrity -Modules` après le vrai déplacement | **PASS** | P5 |
|
|||
|
|
|
|||
|
|
## 3. Critères rejoués
|
|||
|
|
Commandes écrites dans `scratchpad\obb-t1v\git-checks.ps1` (pwsh, `git --git-dir=<GITDIR> --work-tree=<copie>\Content\Modules …`), sortie lue en entier, code du script 0.
|
|||
|
|
| Critère | Attendu | 5.8 recompté | 5.5 recompté | Verdict |
|
|||
|
|
|---|---|---|---|---|
|
|||
|
|
| `Test-Path -LiteralPath '<copie>\Content\Modules\.git'` ; `Get-Item -Force` | False ; null (ni dossier ni fichier) | False ; `<null>` | False ; `<null>` | PASS |
|
|||
|
|
| Recherche `-Filter '.git*' -Recurse -Force` sous `Content\Modules` | 0 | 0 | 0 | PASS |
|
|||
|
|
| `rev-parse HEAD` | `ade587fc215af31de16707367448a294365082b9` | `ade587fc215af31de16707367448a294365082b9` | `ade587fc215af31de16707367448a294365082b9` | PASS |
|
|||
|
|
| `-c core.fsmonitor=false --no-optional-locks status --porcelain` | 5.8 ` M Clothes4.txt` ; 5.5 vide | 1 ligne `[ M Clothes4.txt]` | 0 ligne `[]` | PASS |
|
|||
|
|
| `rev-list --all --count` | 115 | 115 | 115 | PASS |
|
|||
|
|
| `rev-list --all --reflog --count` | 428 | 428 | 428 | PASS |
|
|||
|
|
| `config core.worktree` | `<copie>/Content/Modules` | `D:/Game/LifePlay-master 5.8/Content/Modules` | `D:/Game/LifePlay-master 5.5/Content/Modules` | PASS |
|
|||
|
|
| `config core.bare` | false | false | false | PASS |
|
|||
|
|
| `rev-parse --show-toplevel` avec `--work-tree` ; avec `--git-dir` seul | `<copie>/Content/Modules` | les deux : `D:/Game/LifePlay-master 5.8/Content/Modules` | les deux : `D:/Game/LifePlay-master 5.5/Content/Modules` | PASS |
|
|||
|
|
| `count-objects -v` (lecture) | — | count 115, size 20, in-pack 14063, packs 1, size-pack 439864, prune-packable 0, garbage 0 | identique | relevé, identique des deux côtés |
|
|||
|
|
| git-dir : fichiers / octets (`Get-ChildItem -Recurse -Force -File`) | 142 ; 450 763 928 | 142 / 450 763 928 | 142 / 450 763 928 | PASS (+56 o = ligne `worktree` de la config) |
|
|||
|
|
| fichiers `*.lock` dans le git-dir | 0 | 0 | 0 | PASS |
|
|||
|
|
| copie de sécurité `OBB\modules-git-<v>` : fichiers / octets | 142 ; 450 763 872 | 142 / 450 763 872 | 142 / 450 763 872 | PASS |
|
|||
|
|
| `lp-paths:66-67` copiées telles qu'écrites (commentaire fini compris) | 5.8 ` M Clothes4.txt` ; 5.5 vide ; code 0 | sortie ` M Clothes4.txt`, `exit 5.8 = 0` | sortie vide, `exit 5.5 = 0` | PASS |
|
|||
|
|
| Piège (lecture) : `git -C '<copie>\Content\Modules' rev-parse --show-toplevel` | racine du dépôt du jeu | `D:/Game/LifePlay-master 5.8` | `D:/Game/LifePlay-master 5.5` | établi : `-C` répond pour le mauvais dépôt, d'où son interdiction |
|
|||
|
|
| `git -C <copie> status --short -- Content` (dépôt du jeu) | aucune ligne liée à `Content/Modules` | 1 ligne ` M Content/UI/MainMenu.uasset` (autre session, présente à l'ouverture de la session ; sans lien) | 0 ligne | PASS |
|
|||
|
|
| `git check-ignore -v Content/Modules/Clothes4.txt` | ignoré | `.gitignore:83:/Content/Modules/` | `.gitignore:77:/Content/Modules/` | PASS |
|
|||
|
|
| `CheckIntegrity.ps1 -Modules` (5.8) | 1 écart sur 2053 | `1 ecart(s) sur 2053`, `different : Content\Modules\Clothes4.txt`, code 1 | — | PASS |
|
|||
|
|
| Ordre imposé, étape 3 : Grep `git -C…Content[\\/]Modules` | 0 ; témoin non nul | 0 sur tous les chemins demandés (§ 2 P1) ; témoin 2 + 2 (P3, chemin `(2)` inexistant) | idem | PASS (avec écart de chemin du témoin) |
|
|||
|
|
| Ordre imposé, étape 3 : `git --git-dir … status` fonctionne | oui | oui | oui | PASS |
|
|||
|
|
|
|||
|
|
Recomptes par autre méthode : INT-R6 annonce `du -sb 5.8.git` = 450 763 928 et `find … -type f` = 142 ; recompté en PowerShell (`Get-ChildItem -Recurse -Force -File`, somme des `Length`) : mêmes valeurs, pour 5.8 et 5.5 (INT-R7 : 450 763 928 / 142). Le recompte des `.git` du CSV (142) est fait par Grep, indépendant de `find`.
|
|||
|
|
|
|||
|
|
Relevé 5.5 demandé au point (b) de la fiche (sans rien modifier) :
|
|||
|
|
- `D:\Game\LifePlay_Backup_5.5\` ne contient qu'une référence de modules : `ref_modules_5.8.csv` (5.8 ; 142 lignes `Content\Modules\.git\…`, déjà traitée par l'exclusion de `CheckIntegrity.ps1` 5.8). Aucun `ref_modules_5.5.csv` ni nom voisin (`Glob **/ref_*` : un seul fichier ; `U4-REF55` ne contient aucun fichier `*modules*`).
|
|||
|
|
- Le `Tools\CheckIntegrity.ps1` de la copie 5.5 (3 848 o, `2026-09-29`, non modifié) ne lit pas de CSV pour `-Modules` : il compare `Content\Modules` de la copie à `D:\Game\LifePlay-master 4.27\Content\Modules` en direct (`CheckIntegrity.ps1:54-60`), `-Force` inclus. `D:\Game\LifePlay-master 4.27\Content\Modules\.git` n'existe pas (`ls`). Il n'y a donc **pas** d'écart attendu « 142 absent » : l'effet du déplacement est l'inverse (les 142 fichiers `.git` qui auraient figuré « en plus en 5.5 » ont disparu, estimé car l'état avant n'est pas rejoué). Rejoué : `-Modules` (5.5, lecture seule) → `ECHEC T-STAT-02 Modules = 4.27 : 3 ecart(s) sur 2053` : `different : Content\Modules\donors.txt`, `en plus en 5.5 : …\vin_Base\Hairstyles\vin_Base.lphair`, `en plus en 5.5 : …\vin_Base\Proximity\furniture.lpnear`, code 1. Aucune ligne `.git`. Ces 3 écarts ne viennent pas du déplacement ; leur cause n'est pas examinée (hors périmètre ; incertain).
|
|||
|
|
|
|||
|
|
## 4. Diff lu en entier
|
|||
|
|
Sans objet pour le code : cette fiche ne modifie ni ne produit de diff (VAL de déplacements de dossiers git et d'état). Les diffs de l'étape 1 ont été lus en entier par `OBB-T1b-VAL.md` § 4 (6 fichiers, +17/−11) et sont commités ; ici seul l'état est relu :
|
|||
|
|
- addons `D:\Game\LifePlay-Sandbox` et `D:\Game\LifePlay-Sandbox-5.8` : `git status --short` = aucune ligne.
|
|||
|
|
- jeu 5.8 (`git -C 'D:/Game/LifePlay-master 5.8' status --short`, dernier relevé) : 28 lignes (11 ` M`, 17 `??`, `wc -l` / `grep -c`). Ligne liées à OBB : ` M OBB-TACHES.md`, ` M REPO-JOURNAL.md`, `?? OBB-INT-R3R5.md`, `OBB-INT-R6.md`, `OBB-INT-R7.md`, `tickets/OBB-R6.md`, `tickets/OBB-R7.md` et le présent livrable (traces non commitées annoncées par les INT ; mon livrable est le seul fichier que j'ajoute). Autres lots : `Content/UI/MainMenu.uasset`, `Content/BPs/GI.uasset` (apparu après mon premier relevé de session, probablement l'éditeur / STE-GI, estimé), `Docs/Migration/etat/{BOSS,ST}`, `Tools/uasset58.py`. Aucun fichier de `Content\Modules` ni de git-dir n'y figure.
|
|||
|
|
- copie 5.5 : `git status --short` vide.
|
|||
|
|
- Arbres de travail `Content\Modules` : non modifiés par les déplacements (status 5.8 = 1 ligne attendue, 5.5 = 0).
|
|||
|
|
|
|||
|
|
## 5. Verdict
|
|||
|
|
**PASS.**
|
|||
|
|
Motifs : pour les deux copies, `.git` absent (dossier et fichier), HEAD `ade587fc215af31de16707367448a294365082b9`, 115 commits, 428 avec reflog, status = valeurs attendues, `core.worktree` et `core.bare` corrects, `--show-toplevel` correct, git-dir 142 fichiers / 450 763 928 o et copie de sécurité 142 / 450 763 872 o, commandes de `lp-paths:66-67` en code 0 avec les bonnes sorties, Grep = 0 avec témoin non nul, `CheckIntegrity.ps1 -Modules` (5.8) = 1 écart sur 2053.
|
|||
|
|
|
|||
|
|
Non rejoué ou reporté : Grep brut de `%USERPROFILE%\.claude` (historique, E2) ; faux projet P6 (remplacé par le cas réel) ; P11 / P12 / P9 (acceptés par T1b-VAL, commités) ; `Tools\CheckPackage.ps1` et démarrage du build neuf (SPEC § 5, lignes 2 et 3 : OBB-T3 / OBB-T7, hors de cette fiche) ; cause des 3 écarts de `CheckIntegrity` 5.5 vs 4.27 (hors périmètre).
|
|||
|
|
|
|||
|
|
## 6. Points à confirmer par l'utilisateur
|
|||
|
|
- [ ] Témoin de l'étape 3 : accepter `OBB-addon` + `OBB-addon58` (2 + 2) à la place de `OBB-addon (2)`, dossier inexistant (la fiche citait un nom erroné ou un dossier renommé).
|
|||
|
|
- [ ] Les 3 écarts propres à la copie 5.5 de `CheckIntegrity.ps1 -Modules` (`donors.txt`, `vin_Base.lphair`, `furniture.lpnear`) : copie 5.5 gelée, ne pas corriger ; confirmer qu'ils sont connus (non liés à OBB).
|
|||
|
|
- [ ] Phrase d'accord de l'utilisateur pour le déplacement 5.5 : la SPEC (§ 6, étape 2) demande de la citer dans le ticket ; non relue ici (tickets non relus ligne à ligne) : à confirmer par l'orchestrateur avant l'annonce `[OBB→BOSS] OBB-T1 FAIT`.
|
|||
|
|
- [ ] Fiche DOC (docs 21, 27, 29) à lancer après cette VAL (SPEC § 4, dernière ligne).
|
|||
|
|
|
|||
|
|
## Fichiers à commiter
|
|||
|
|
Le validateur n'a modifié aucun fichier projet. Livrable :
|
|||
|
|
- jeu `D:\Game\LifePlay-master 5.8` (`ue5.8`) : `A Docs/Migration/etat/OB/OBB/OBB-T1-VAL.md`
|
|||
|
|
|
|||
|
|
Tours : 15 / 40
|
|||
|
|
|
|||
|
|
## Constats
|
|||
|
|
1. **Témoin de la fiche** : `D:\Game\LifePlay_Backup_5.5\OBB-addon (2)` n'existe pas ; `ls "D:/Game/LifePlay_Backup_5.5/"OBB*` → `OBB`, `OBB-addon`, `OBB-addon58`. Témoins pris : 2 + 2.
|
|||
|
|
2. **Éditeur UE 5.8** : `tasklist` en début de relevé montrait `UnrealEditor.exe` PID 30840 ; `Get-Process UnrealEditor*` en fin de relevé ne rend rien (processus terminé entre-temps, non provoqué par moi).
|
|||
|
|
3. **Piège établi** : sans `.git`, `git -C '<copie>\Content\Modules'` rend la racine du jeu (`D:/Game/LifePlay-master 5.8`, `…5.5`) et, pour `status`, la sortie du dépôt du jeu (`Content/Modules` y est ignoré, `.gitignore:83` / `:77`) : confirme le remplacement obligatoire des commandes (SPEC § 3).
|
|||
|
|
4. **Forme d'INT-R7** : voir § 1 (titres de sections différents du gabarit INT).
|