12 KiB
Fiche OBB-T7v — Niveau N1 — Modèle prévu modèle de l'agent lp-validator | utilisé Sonnet 5.5 (claude-sonnet-5-5) — Agent lp-validator — Skills sk-protocol, sk-recount, debug-verification, lp-validate, lp-doc (gabarit VAL)
OBB-T7-VAL : verdict sur B1 / B2 / B3 dans le build Shipping neuf Shipping_OBB, et explication de l'écart de taille avec Shipping_U8 (2026-10-10)
Verdict : PASS-STATIC. Les 4 contrôles valent 0 avec témoins non nuls, aucun .git dans l'archive, le .rsp Shipping est corroboré par une lecture de l'exe lui-même, et l'écart de taille est expliqué à l'octet (somme des parties = −219 802 914 o). Le démarrage du build reste à faire (reporté, aucun jeu lancé). Un constat hors critère est à décider par l'utilisateur : l'archive contient le PDB (225 570 816 o) et les polices de debug, car -nodebuginfo n'a pas été passé (voir Constats C1).
1. Fiches amont relues
D:\Game\LifePlay-master 5.8\Docs\Migration\etat\OB\OBB\OBB-T7a-BUILD.md(compilation Shipping, code 0, 8 tours) : lu en entier.D:\Game\LifePlay-master 5.8\Docs\Migration\etat\OB\OBB\OBB-T7b-BUILD.md(cuisson complète, archive neuve, CheckPackage code 0, 15 tours) : lu en entier.etat\OB\OBA\OBA-T5-EVAL.mdl. 89-98 (les 4 contrôles B3 et la preuve par l'échec attendue sur U8) ;etat\U58\U8\U8-T4-BUILD.md(commande U8 et constats : lignes 9 et 41-52 relues par Grep) ;Tools\CheckPackage.ps1(lu en entier, 229 lignes).- Aucune IMPL dans ce lot-fiche (aucun fichier suivi modifié par T7a / T7b : T7a § Constats, T7b § Fichiers à commiter).
2. Points à confirmer des fiches amont
| Point (source) | Résultat | Preuve |
|---|---|---|
(a) .rsp Shipping non réécrit (T7a § 3 et Constats) : contenu conforme à l'exe |
PASS | Exe OBB : LPAnimMeasure 0 occurrence (ASCII et UTF-16), LPAnimCore 1, LPSandbox 0 ; exe U8 (témoin par contraste) : LPAnimMeasure 1. .rsp : LPAnimMeasure 0, LPSandbox 0, LPAnimCore 1 (l. 686), Module.LifePlay.cpp.obj l. 693 (obj daté 13:04:39, seul objet récent), /OUT l. 1216 = l'exe du projet. 1 100 objets sur 1 134 entrées existent ; les 34 absents sont des bibliothèques système (delayimp.lib, wininet.lib…) résolues par le chemin de bibliothèques. Cohérent avec « UBT ne réécrit le .rsp que si son contenu change » (estimé, non rejoué). |
(a') CheckPackage a bien retenu le .rsp (PASS, pas NON-CONCLUANT) |
PASS | Rejoué : [3] PASS 0. Lecture de Get-StaleReason (l. 101-123) : le .rsp n'est écarté que s'il est postérieur de plus de 10 min à l'exe ; un .rsp plus ancien (ici −17 h) est retenu par construction. Le PASS n'est donc pas une preuve de fraîcheur du .rsp : c'est la lecture binaire de l'exe qui la fournit. |
| (b) Écart de taille (T7b § Mesures) | PASS | Expliqué en § 3 (tableau de réconciliation). |
T7a § 6 : addon non concerné, non vérifié dans .target / .uproject |
PASS | LifePlay.uproject l. 30-38 : LPSandbox, Optional, TargetAllowList: ["Editor"] ; .target : 226 entrées BuildPlugins, LPSandbox absent, LPAnimCore présent ; 0 occurrence de LPSandbox ou LPAnimMeasure dans tout le .target. |
| T7a § 3 : « DLL liées : 0 » à confirmer | PASS-STATIC | Sous Windows\LifePlay\Binaries\Win64 : 6 fichiers seulement (exe, pdb, d3d12core.dll, d3d12sdklayers.dll, tbb12.dll, tbbmalloc.dll) : aucune DLL de plugin ; exe monolithique. |
T7a Constats : -NoUBA / « UBA local executor » |
reporté | Journal OBB_Build_20261010-130315.log l. 2 (-NoUBA passé), l. 18 (UBA Storage capacity), l. 19-22 ([NoUba]) : sans effet sur le contenu ; interprétation de l'exécuteur laissée à l'orchestrateur. |
| T7a Constats : makefile invalidé « source file added », source non identifiée | reporté | Journal l. 8 relue ; la source ajoutée n'est pas recherchée (hors fiche). Sans effet sur B1-B3 (contrôles à 0). |
| T7b § 2 : ligne ExitCode de l'UnrealPak IoStore non relue | PASS | Journal OBB_T7b_20261010-130716.log l. 829 : Took 13,62s to run UnrealPak.exe, ExitCode=0 (en plus de l. 696, 597, 844). |
T7b : Clothes4.txt embarqué, octets non comparés |
PASS | Présent dans l'archive (manifeste NonUFS : 1 ligne). Taille U8 39 931 o, OBB 39 919 o (−12 o), cohérent avec un fichier modifié non commité. Contenu non comparé. |
T7b : Modules\.git absent non contrôlé |
PASS | Test-Path -LiteralPath …\Windows\LifePlay\Content\Modules\.git = False ; parcours -Recurse -Force : 0 entrée .git* (fichier ou dossier) ; 2 082 fichiers et 193 dossiers. |
| T7b : durée par horloge externe | reporté | Sans effet sur le verdict. |
3. Critères rejoués
Scripts (scratchpad …\scratchpad\obb-t7v\ : c1.ps1 à c6.ps1, exe_strings.py, files_U8.csv, files_OBB.csv), lecture seule.
3.1 CheckPackage : pwsh -NoProfile -File Tools\CheckPackage.ps1 -Build D:\Game\LifePlay_Build_5.8_Shipping_OBB -Config Shipping → [1] PASS 0, [2] PASS 0, [3] PASS 0, [4] PASS 0, Resultat : PASS (code 0), CHECKPACKAGE_EXIT=0 (attendu 0 : conforme). Exe archive et exe du projet : 2026-10-10 13:05:08, 164 830 208 o.
3.2 Recompte par une autre méthode (Select-String -SimpleMatch, ConvertFrom-Json, Get-ChildItem -Force) :
| Contrôle | Attendu | Recompté OBB | Témoin non nul |
|---|---|---|---|
B1 NonUFS Modules/.git |
0 | 0 (aussi Modules\.git 0 et .git 0) |
NonUFS Modules/ : 2 053 ; U8 : 142 |
B2 UFS LPSandbox |
0 | 0 (LPAnimMeasure 0 aussi) |
UFS StreetMap : 1 129 ; U8 : 1 (RemappedPlugins/LPSandbox/LPSandbox.uplugin) |
B3 .rsp LPAnimMeasure |
0 | 0 (LPSandbox 0) |
LPAnimCore 1 ; .rsp 1 218 lignes |
B3 .target BuildPlugins sans LPSandbox |
absent | absent (JSON : 226 entrées, LPSandbox False) |
LPAnimCore True |
Aucun .git sous l'archive |
0 | 0 entrée (-Recurse -Force) |
U8 : dossier .git présent (True) |
3.3 Écart de taille U8 → OBB (comptes par Get-ChildItem -Recurse -Force -File, comparaison par chemin relatif). U8 : 2 220 fichiers, 2 024 056 223 o. OBB : 2 082 fichiers, 1 804 253 309 o. Écart : −138 fichiers, −219 802 914 o (chiffres de la fiche confirmés).
Par dossier (niveau 2) : Windows\LifePlay −141 f / −225 184 665 o ; Windows\Engine +2 f / +5 395 982 o ; Windows\(fichiers racine) +1 f / −14 231 o. Niveau 3 : LifePlay\Content −142 f / −450 762 137 o ; LifePlay\Binaries +1 f / +225 577 472 o ; Engine\Content +2 f / +5 395 982 o.
Réconciliation par fichier (tous les écarts ; 142 fichiers seulement U8, 4 seulement OBB, 7 communs de taille différente, 0 autre) :
| Écart | Fichier(s) | Octets | Fichiers | Cause |
|---|---|---|---|---|
| Retrait B1 | Content\Modules\.git\* (seulement U8) |
−450 763 872 | −142 | dépôt git des modules retiré : somme exacte de la fiche (142 fichiers, 450 763 872 o) |
| Ajout | Binaries\Win64\LifePlay-Win64-Shipping.pdb |
+225 570 816 | +1 | PDB staged, -nodebuginfo absent (C1) ; même taille que le PDB du projet |
| Ajout | Engine\Content\SlateDebug\Fonts\LastResort.ttf |
+5 395 052 | +1 | fichier « debug » staged (idem, Manifest_DebugFiles) |
| Ajout | …\LastResort.tps |
+930 | +1 | idem |
| Ajout | Windows\Manifest_DebugFiles_Win64.txt |
+224 | +1 | manifeste des 3 fichiers debug ci-dessus (3 lignes) |
| Différence | Manifest_NonUFSFiles_Win64.txt |
−14 385 | 0 | 142 lignes .git en moins (2 213 → 2 071) ; par chemin, 0 ligne seulement OBB |
| Différence | Manifest_UFSFiles_Win64.txt |
−70 | 0 | 1 ligne de moins (22 070 → 22 069) : RemappedPlugins/LPSandbox/LPSandbox.uplugin absente d'OBB (B2) |
| Différence | LifePlay-Win64-Shipping.exe |
+6 656 | 0 | exe relié par T7a (Module.LifePlay.cpp recompilé), LPAnimMeasure en moins (voir (a)) |
| Différence | Paks\LifePlay-Windows.ucas / .pak / global.ucas |
+2 048 / −845 / +544 | 0 | cuisson complète du 10-10 (U8 : -skipcook) ; contenu cuit des paquets non commités MainMenu, GI ; < 1 Mo (estimé) |
| Différence | Content\Modules\Clothes4.txt |
−12 | 0 | fichier Modules non commité, voulu |
| Total | −219 802 914 | −138 | = −450 763 872 + 230 967 022 (4 fichiers) − 6 064 (7 différences) |
Contrôles de somme : Modules hors .git U8 14 987 403 o (2 053 f) contre OBB 14 987 391 o (2 053 f) : écart −12 o = Clothes4.txt seul ; .git U8 142 f / 450 763 872 o. Donc le retrait du .git est réalisé à l'octet près (−450 763 872 o, −142 f) et le « manque » de la fiche (+230 960 958 o, +4 f) = +230 967 022 o de 4 fichiers de debug − 6 064 o de différences communes. Écart > 1 Mo inexpliqué : aucun. Le Content hors Modules : U8 1 367 165 156 o contre OBB 1 367 166 903 o (+1 747 o = ucas/pak/global.ucas), 6 fichiers de part et d'autre.
3.4 Manifestes : NonUFS U8 2 213 lignes, OBB 2 071 lignes : −142 (attendu −142 : conforme) ; comparés par chemin (horodatages ignorés) : 142 chemins seulement U8 (tous Modules/.git), 0 seulement OBB. UFS : 22 070 → 22 069 (−1, LPSandbox.uplugin), 0 chemin en plus. Les écarts bruts « 4 lignes en plus » viennent des horodatages ; les lignes en plus côté OBB sont les mêmes chemins redatés.
4. Diff lu en entier
Sans objet : aucune modification de fichier suivi dans ce lot-fiche (T7a, T7b : aucun fichier suivi touché ; le seul fichier produit par cette VAL est ce livrable). git status --short relevé en lecture : fichiers M/?? d'autres lots (STE, STF, OBB-TACHES), plus Content/UI/CharGen.uasset M (voir C2). Aucun contrôle de fins de ligne ni de compilation (non demandés).
5. Verdict
PASS-STATIC. Critère de la fiche § 8 : 4 contrôles à 0 avec témoins (3.2), aucun .git dans l'archive, écart de taille entièrement expliqué (3.3). Reste à faire, reporté : démarrage du Shipping (aucun jeu lancé) ; contrôle de contenu des 7 fichiers de taille différente non rejoué au-delà des tailles (pas de hachage, archives ~2 Go).
6. Points à confirmer par l'utilisateur
- PDB et polices de debug dans l'archive (C1) : accepter l'archive
Shipping_OBBtelle quelle (225 570 816 o de PDB + 5 396 206 o de debug), ou la refaire avec-nodebuginfocomme U8 ? Le PDB est déjà copié à part dansD:\Game\LifePlay_Build_5.8_Shipping_OBB_PDB(1 fichier, 225 570 816 o). - Démarrage de
Shipping_OBB(écran titre, nouvelle partie, Continuer) : reporté, à faire par l'utilisateur ou une fiche dédiée (aucun jeu lancé ici). - Durcissement éventuel de
CheckPackage.ps1: un.rspplus ancien que l'exe est retenu sans alerte (C3). Non corrigé ici.
Tours : 17 / 40
Constats
- C1 (écart à la convention U8, hors B1-B3) : la commande UAT de T7b (
OBB-T7b-BUILD.mdl. 9) n'a pas-nodebuginfo, que celle de U8 portait (U8-T4-BUILD.mdl. 9). Effet établi :Manifest_DebugFiles_Win64.txt(3 lignes) et 230 967 022 o de fichiers de debug dans l'archive (PDB 225 570 816 + LastResort 5 395 982 + manifeste 224). Le PDB étant dans l'archive, la copie_PDBest redondante, etBUILD-ID.txt(présent pour U8) n'existe pas pour OBB (dossier_PDB: 1 fichier ; U8_PDB : 2). La fiche T7b elle-même n'est pas relue ici : on ne sait pas si l'omission était voulue. - C2 (reproductibilité) :
Content/UI/CharGen.uassetestMdansgit status(daté 2026-10-10 13:17:29), donc après la fin de l'archive (conteneurs 13:11:40) : il n'est pas dans le build ;MainMenu.uasset(12:14:14) etGI.uasset(12:44:19) sont antérieurs à la cuisson (13:07-13:12), donc embarqués comme voulu.CharGenne figurait pas dans l'état git relevé à l'ouverture de la session : modification par un autre lot en cours (STF / STE), non attribuée ici. - C3 (limite de l'outil) :
CheckPackage.ps1[3] ne rejette que les.rsp/.targetpostérieurs à l'exe ; le PASS [3] seul n'établit pas que le.rspdate du build. Ici établi autrement (lecture binaire de l'exe, § 2 (a)). - Note de méthode : le script de comparaison de manifestes a d'abord échoué (
HashSet::newambigu), corrigé dans le scratchpad, sans effet sur les résultats ; les chemins relatifs du.rspsont relatifs àEngine\Source(premier essai avec une mauvaise base, rejoué). - Aucune écriture dans les archives, la copie,
D:\Game\LifePlay_Build_5.8_STF-STE_Developmentni git ; aucun jeu ni éditeur lancé.
Fichiers à commiter
A Docs/Migration/etat/OB/OBB/OBB-T7-VAL.md(copie 5.8, branche ue5.8), par le gardien.