15 KiB
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. TicketsREPO\tickets\OBB-R6.mdetOBB-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 delp-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) : jeu5b34499(OBB étape 1, CHG-304), addon 5.58b884a6, addon 5.8247af5a: l'étape 1 est donc commitée ;git statusdu jeu n'a plus deMsur.gitignoreni surTools/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 lignesContent\Modules\.git\…, déjà traitée par l'exclusion deCheckIntegrity.ps15.8). Aucunref_modules_5.5.csvni nom voisin (Glob **/ref_*: un seul fichier ;U4-REF55ne contient aucun fichier*modules*).- Le
Tools\CheckIntegrity.ps1de la copie 5.5 (3 848 o,2026-09-29, non modifié) ne lit pas de CSV pour-Modules: il compareContent\Modulesde la copie àD:\Game\LifePlay-master 4.27\Content\Modulesen direct (CheckIntegrity.ps1:54-60),-Forceinclus.D:\Game\LifePlay-master 4.27\Content\Modules\.gitn'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.gitqui 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-SandboxetD:\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 (11M, 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.mdet 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 deContent\Modulesni de git-dir n'y figure. - copie 5.5 :
git status --shortvide. - 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 deOBB-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
- 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. - Éditeur UE 5.8 :
tasklisten début de relevé montraitUnrealEditor.exePID 30840 ;Get-Process UnrealEditor*en fin de relevé ne rend rien (processus terminé entre-temps, non provoqué par moi). - Piège établi : sans
.git,git -C '<copie>\Content\Modules'rend la racine du jeu (D:/Game/LifePlay-master 5.8,…5.5) et, pourstatus, la sortie du dépôt du jeu (Content/Modulesy est ignoré,.gitignore:83/:77) : confirme le remplacement obligatoire des commandes (SPEC § 3). - Forme d'INT-R7 : voir § 1 (titres de sections différents du gabarit INT).