LifePlay-Revival/Docs/Migration/etat/OB/OBA/OBA-T23-PROJ-CART.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

28 KiB
Raw Blame History

Fiche OBA-T23-PROJ — Niveau N3 — Modèle prévu modèle de l'agent lp-cart | utilisé Opus 5.5 (claude-opus-5-5) — Agent lp-cart — Skills sk-protocol, lp-paths, ue-cpp-build, lp-commandlets

OBA-T23-PROJ-CART : plugins du dépôt et de l'addon, .git de Content\Modules embarqué dans les builds 5.8 (2026-10-09)

Lecture seule : aucun fichier modifié hors ce livrable, ni UE ni UAT lancé, aucun commit. Dépôt Modules : seuls les noms de références, les comptes, les tailles et les dates ont été lus (aucun message de commit, aucun contenu). Dates de fichiers en heure locale (UTC+2) ; horodatages des manifestes UAT en UTC (suffixe Z).

1. Objet et périmètre

Domaine « projet » du lot OBA : (a) comment Content\Modules\.git (450 763 872 o, 142 fichiers) entre dans les builds 5.8 et pas dans les builds 5.5, et quelle règle l'exclurait ; (b) les plugins du dépôt (StreetMap, ModdingExtra, LPAnimCore, McpAutomationBridge, HyperAIStudio) et de l'addon (LPSandbox), soit les 6 lignes source=depot|addon de OBA-T1-plugins.csv (l. 126, 150, 151, 156, 169, 244), évalués selon la grille O3 (30_Projet_Audit_Obsolescence.md:37). Copies : D:\Game\LifePlay-master 5.8 (ue5.8), D:\Game\LifePlay-master 5.5 (main), addon D:\Game\LifePlay-Sandbox-5.8. Hors périmètre : l'audit détaillé de HyperAIStudio (fiche OBA-T23-EDIT) et les dépréciations C++ (fiche OBA-T23-CODE).

2. Commandes et lectures (exactes) avec compte brut

Environnement vérifié : moteurs D:\Game\Launcher\Engine\UE_5.5 et UE_5.8 présents, avec les sources AutomationTool (Glob de CopyBuildToStagingDirectory.Automation.cs : 1 résultat par moteur) ; addon 5.8 présent (1 .uplugin).

# Commande ou lecture Compte brut
C1 pwsh : Get-Item + Get-ChildItem -Recurse -File -Force sur <copie>\Content\Modules et \.git (copies 5.5, 5.8, 4.27) 5.5 et 5.8 : Modules dossier ordinaire (LinkType vide) ; .git Hidden, Directory, Created=2026-10-07T20:26:39.6364479, 142 fichiers, 450 763 872 o. 4.27 : .git absent
C2 pwsh : pour chaque D:\Game\LifePlay_Build_*, mesure de Content\Modules et de Content\Modules\.git 7 builds 4.27/5.5 : .git absent (DC4 2 053 fichiers / 14 987 403 o ; V1.5 1 426 / 12 928 932 ; AP7 2 168 / 35 077 499). 7 builds 5.8 : Modules 2 195 fichiers / 465 751 275 o dont .git 142 / 450 763 872 o. Shipping_U8_PDB : pas de Content\Modules
C3 pwsh : CreationTime du dossier de build, de Content\Modules et LastWriteTime de l'exe voir tableau § 3 A3
C4 git -C "…5.5\Content\Modules" : remote -v, rev-list --all --count, log --all --reverse --format='%ai | %ci' (1re et dernière ligne), count-objects -v, branch -a, rev-parse --is-shallow-repository, rev-parse --short HEAD ; idem copie 5.8 remotes 0 ; 115 commits ; 1re date auteur 2018-01-05 00:40:51 +0700 ; dernière 2026-10-07 15:49:08 +0200 ; in-pack: 14063, size-pack: 439864 (Kio), 115 objets libres ; 1 branche ; non superficiel ; HEAD ade587f. Copie 5.8 : 115, ade587f, size-pack: 439864
C5 Grep DirectoriesToAlwaysStage… dans Config\ des deux copies 5.8 DefaultGame.ini:74, 5.5 DefaultGame.ini:71 : +DirectoriesToAlwaysStageAsNonUFS=(Path="Modules") ; aucun DirectoriesToAlwaysStageAsUFS, aucun StagingExclude
C6 Grep et Read dans les sources UAT 5.5 et 5.8 (CopyBuildToStagingDirectory.Automation.cs, AutomationUtils\DeploymentContext.cs) voir § 3 A2
C7 pwsh : listage de D:\Game\LifePlay-master 5.8\Releases et recompte de 2026.10.2.0 1 dossier 2026.10.2.0 ; 5 fichiers, 1 294 248 283 o ; chemins contenant \.git\ : 0 ; dossiers .git : 0
C8 7z l -slt sur LifePlay_Revival_V1.5_Windows_Game.7z et …V1.4_Windows_Game.7z, comptes awk des lignes Path = V1.5 : 1 596 entrées, 0 .git, 1 530 sous Content\Modules ; V1.4 : 1 613, 0, 1 539 (code de sortie 0)
C9 git -C <copie> tag --format='%(refname:short) %(creatordate:iso)' (jeu, deux copies) v1.0 2026-09-30 … v1.5 2026-10-03 11:19:49 ; lot-VQ0-avant 2026-10-07 20:24:40 ; aucun tag 5.8 de publication
C10 git -C …\Content\Modules reflog --date=iso --format='%gd %gs' (dates et type d'entrée seulement) 2 entrées : clone: à 2026-10-07 20:24:23 ; filter-branch: horodatée 2026-10-07 15:49:08
C11 Modules : for-each-ref --format='%(refname)' ; rev-list --count HEAD, --all, --all --reflog ; jeu : rev-list --all --count, count-objects -v ; cat-file -t a83ea56 dans les deux dépôts ; merge-base --is-ancestor a83ea56 HEAD ; jeu : log --all -1 -- Content/Modules, ls-files Content/Modules ; Modules : rev-list --objects HEAD et --all --reflog comptés 1 réf. (refs/heads/main) ; 115 / 115 / 428 commits ; jeu 731 commits, in-pack: 15306, size-pack: 429198 ; a83ea56 = commit dans les deux dépôts, non ancêtre de HEAD dans Modules ; dernier commit du jeu touchant Content/Modules : 69f975c 2026-10-03 10:14:37 ; 0 fichier suivi ; objets 6 607 (HEAD) contre 14 172 (reflog compris)
C12 git rev-list --objects <HEAD|--all --reflog> | cut -d' ' -f1 | git cat-file --batch-check='%(objectsize:disk)', somme awk (1er essai sans cut : +inf, sortie invalide, refait) HEAD : 10 238 344 o ; reflog compris : 450 046 383 o
C13 find "$M" -maxdepth 1 (comptes seulement) racine de Content\Modules : 21 fichiers (21 .txt), 17 dossiers hors .git ; pas de .gitignore propre
C14 Grep Modules[\\/]\.git[\\/] (count) dans Manifest_NonUFSFiles_Win64.txt de Shipping_U8 et de DC4 Shipping_U8 : 142 ; DC4 : 0 ; lignes 175-177 : …/.git/objects/pack/pack-e259cb6b….{idx,pack,rev} 2026-10-07T18:24:23.2xxZ
C15 git log -S'DirectoriesToAlwaysStageAsNonUFS' -- Config/DefaultGame.ini (deux copies) ; git diff -U0 main ue5.8 -- Config/DefaultGame.ini 1122e17 2026-09-29 00:56:10 L0 : etat initial du projet 5.5… dans les deux ; diff : 5 insertions, 2 suppressions (ProjectVersion, StagingDirectory, bUseZenStore=False + 2 commentaires), aucune ligne de staging
C16 Read Tools\SplitModules.ps1, Tools\BuildDebug.ps1 ; Grep Releases|Content[\\/]Modules|\.git|robocopy|-Exclude dans Tools\*.{ps1,py,bat,cmd,psm1} ; Grep BuildCookRun|archivedirectory|createreleaseversion dans Tools\ et etat\U58\U8 1 seul BuildCookRun dans Tools (BuildDebug.ps1:52) ; aucun filtre .git ni robocopy ; U8 lance UAT directement (U8-T4-BUILD.md:9)
C17 Glob Plugins/**/*.uplugin (copie 5.8, copie 5.5, addon 5.8) ; Read des 5 .uplugin + Grep des champs de HyperAIStudio.uplugin ; Read LifePlay.uproject (5.8) 5.8 : 5 ; 5.5 : 4 (pas de Marketplace) ; addon : 1
C18 Grep (count puis content) des noms de plugins et modules dans Source\ (5.8) ; Grep dans Config\ ; Grep .gitignore Source : 58 occurrences dans 13 fichiers ; Config : 1 (DefaultGame.ini:76)
C19 git ls-files Plugins/<p> ; git status --porcelain --ignored Plugins/<p> ; ls Binaries/Win64/*.dll ; git check-ignore -v voir § 3 B ; addon Plugins/LPSandbox : 66 fichiers suivis, HEAD ec23fad 2026-10-09 18:58:19
C20 git grep -l --text -F <motif> -- Content (assets suivis seulement, 292 .uasset/.umap) ; ls -R Content/Heavy/StreetMap compté ModdingExtraBPLibrary 12 ; StreetMapRuntime 30 ; /Script/LPAnimCore, /Script/LPSandbox, /Script/LPAnimMeasure, McpAutomationBridge, HyperAIStudio : 0 ; fonctions LoadTxt 9, SaveTxt 4, GetAllFilesFromFolder 6, ContentDirectory 4, GetAllSubfolders 0, IsPointInsidePolygon 0, ModdingExtraSampleFunction 0 ; Heavy/StreetMap : 560 assets sur disque
C21 Grep dans Manifest_UFSFiles_Win64.txt (Shipping_U8), Binaries\Win64\LifePlay-Win64-Shipping.target, Intermediate\Build\Win64\x64\LifePlay\Shipping\LifePlay-Win64-Shipping.exe.rsp ; find des plugins cuits voir § 3 B ; plugins cuits : 2 fichiers (StreetMap/Content/StreetMapDefaultMaterial.uasset/.uexp)

Méthodes en échec (0 résultat = échec de méthode, non pris comme absence) : Grep outil sur Content\*.uasset (0, fichiers binaires ignorés ; remplacé par C20) ; Grep outil sur LifePlay-Win64-Shipping.exe (0 pour LPAnimMeasure et pour le témoin LPAnimCore, forcément lié : non concluant ; remplacé par le .rsp, C21) ; Grep Module\.LPAnimMeasure dans Saved\Logs\portage\*Ship*.log (0 : aucun journal de compilation Shipping complète conservé sous ce nom).

3. Constats fichier:ligne

A. Content\Modules\.git dans les builds 5.8

A1. La règle qui copie Content\Modules est la même dans les deux branches, depuis L0. Config/DefaultGame.ini:74 (5.8) et :71 (5.5), section [/Script/UnrealEd.ProjectPackagingSettings] (:12) : +DirectoriesToAlwaysStageAsNonUFS=(Path="Modules"). Introduite par 1122e17 (2026-09-29, « L0 : etat initial »), donc héritée du projet d'origine ; git diff main ue5.8 -- Config/DefaultGame.ini ne touche aucune ligne de staging (C15).

A2. UAT copie tout le dossier, y compris les dossiers cachés, et le code est identique en 5.5 et en 5.8.

  • 5.8 CopyBuildToStagingDirectory.Automation.cs:2056 → StageAdditionalDirectoriesFromConfig (:817-857), branche NonUFS :852 : SC.StageFiles(StagedFileType.NonUFS, InputDir, StageFilesSearch.AllDirectories, OutputDir); (la seule vérification est Directory.Exists, :838). 5.5 : :1512, :779-819, :814, à l'identique.
  • Récursion : DeploymentContext.cs 5.8 :784-790, 5.5 :749-755 : un sous-dossier n'est écarté que s'il figure dans RestrictedFolderNames, c'est-à-dire noms de plateformes + RestrictedFolder.GetNames() (5.8 :581-587, 5.5 :561-567). Aucun filtre sur l'attribut caché ni sur .git.
  • Clés [Staging] lues (5.8 :594-646, 5.5 :574-622) : RemapDirectories, AllowedDirectories, DisallowedLocalizationTargets, AllowedConfigFiles, DisallowedConfigFiles, ExtraAllowedFiles. Aucune clé n'exclut un sous-dossier d'un répertoire NonUFS. RestrictedFolder est défini dans le code (UnrealBuildTool\System\RestrictedFolders.cs, accesseur GetNames() :146), pas dans une configuration du projet.

A3. La différence entre 5.5 et 5.8 tient à la date : le .git a été créé après le dernier build 5.5.

Build Content\Modules créé .git dans le build
LifePlay_Build_5.5_Shipping_V1.5 2026-10-03 10:51:07 absent
LifePlay_Build_5.5_Shipping_AP7 2026-10-07 02:33:32 absent
LifePlay_Build_5.5_DC4 (dernier build 5.5) 2026-10-07 20:17:04 absent
création de Content\Modules\.git (copies 5.5 et 5.8) 2026-10-07 20:26:39 (C1) —
LifePlay_Build_5.8_Development 2026-10-08 22:17:59 142 fichiers, 450 763 872 o
LifePlay_Build_5.8_U7d 2026-10-09 10:20:00 idem
LifePlay_Build_5.8_Shipping_V2.0 2026-10-09 10:39:08 idem
LifePlay_Build_5.8_Shipping_U8 / _essai 2026-10-09 18:12:23 / 18:16:09 idem
LifePlay_Build_5.8_Development_U8 / _essai 2026-10-09 18:19:42 / 18:23:46 idem
Hors .git, le contenu des builds 5.8 égale celui de DC4 : 2 195 − 142 = 2 053 fichiers et 465 751 275 − 450 763 872 =
14 987 403 o, soit exactement les valeurs de DC4 (C2).

A4. C'est bien UAT qui le copie. Windows\Manifest_NonUFSFiles_Win64.txt (écrit par la mise en scène) liste 142 fichiers Modules/.git/ dans Shipping_U8, 0 dans DC4 (C14). Le pack porte l'horodatage 2026-10-07T18:24:23Z (= 20:24:23 locale, Manifest_NonUFSFiles_Win64.txt:175-177), qui correspond à l'entrée clone du reflog (C10).

A5. Origine et contenu du dépôt Modules (métadonnées seulement).

  • .gitignore:76-77 : # PUB2 (2026-10-07) : depot public sans contenu sexuel ; modules de jeu dans un depot local separe (Content/Modules/.git) puis /Content/Modules/. Le dépôt du jeu ne suit plus aucun fichier sous Content/Modules (0 fichier ; dernier commit qui y touche : 69f975c, 2026-10-03 10:14:37) (C11).
  • Dépôt Modules : aucun remote, une seule référence (refs/heads/main), 115 commits depuis HEAD (1re date auteur 2018-01-05). Le reflog compte 2 entrées : clone (2026-10-07 20:24:23) puis filter-branch (C10).
  • Poids : les objets atteignables depuis HEAD occupent 10 238 344 o sur disque ; reflog compris, 450 046 383 o (C12). Les 97,7 % restants (439 808 039 o, 313 commits, 7 565 objets) ne sont retenus que par le reflog. Le pack (439 864 Kio) a la taille de celui du dépôt du jeu (429 198 Kio), et le commit a83ea56 du jeu (cité par CHG-097, Journal_Modifications.md:1073) existe dans les objets de Modules sans être ancêtre de HEAD (C11).

A6. Hypothèses classées.

# Hypothèse Verdict Preuve
H1 Chronologie : .git créé le 2026-10-07 à 20:26:39, après le dernier build 5.5 (DC4, 20:17:04) ; tout build fait depuis le copie retenue A1-A4
H2 Configuration de staging différente entre 5.5 et 5.8 réfutée règle identique (A1), diff sans ligne de staging (C15)
H3 UAT 5.5 filtre les dossiers cachés, UAT 5.8 non réfutée par lecture code identique (A2) ; reste à exclure seulement un écart de comportement du runtime .NET (improbable, non testé)
H4 Content\Modules est une jonction différente selon la copie réfutée LinkType vide dans les deux copies (C1)

A7. Aucun build distribué n'est touché.

  • Archives publiées : LifePlay_Revival_V1.4_Windows_Game.7z et …V1.5… : 0 entrée .git sur 1 613 et 1 596 (C8) ; tags v1.0 à v1.5 posés entre le 2026-09-30 et le 2026-10-03 (C9), donc avant le 2026-10-07.
  • 2026.10.2.0 n'a pas été publié : commit f90eec1 (« U8 : reprise partielle T2-T5 sans publication, reference 2026.10.2.0 gardee ») ; etat\U58\U8\U8-SUIVI.md:15 (« aucune publication »).
  • Releases\2026.10.2.0 (C7) : Windows\AssetRegistry.bin 4 569 308, Windows\Metadata\DevelopmentAssetRegistry.bin 8 611 567, LifePlay-Windows.pak 20 216 202, .ucas 1 259 275 600, .utoc 1 575 606 o (créés le 2026-10-09 entre 10:38:24 et 10:38:38). C'est le dossier de référence produit par -createreleaseversion (conteneurs cuits + registre d'assets, pour les correctifs et les mods), pas une copie du jeu. Il est exempt parce que les fichiers NonUFS n'y vont jamais, pas grâce à un filtre (voir § 4). Même minute que Shipping_V2.0 (dossier créé à 10:38:28) ; U8-T4-BUILD.md:43 le rattache à U7-T14.
  • Builds locaux concernés (non distribués) : 5.8_Development, 5.8_U7d, 5.8_Shipping_V2.0, 5.8_Shipping_U8, 5.8_Development_U8, ainsi que les copies _essai.

A8. Une publication par SplitModules.ps1 garderait le .git. Tools\SplitModules.ps1:47 appelle Get-ChildItem $modules -Directory sans -Force et ne retient que les dossiers qui ont un <nom>.lpmod. Le .git caché n'est donc ni listé ni déplacé, et resterait dans le build publié. Tools\BuildDebug.ps1:52 (seul BuildCookRun de Tools) ne filtre rien non plus.

A9. Coût : 450 763 872 o, soit 22,3 % du Shipping (OBA-T4-INV.md:46,54).

A10. Règles d'exclusion possibles (aucune n'est appliquée ici). Aucune ne s'écrit en .ini : UAT 5.5/5.8 n'a pas de clé pour exclure un sous-dossier NonUFS (A2).

# Règle Où elle s'écrit Effet / limite
P1 (structurelle, minimale côté staging) Sortir le dossier git de l'arbre mis en scène. Variante a : git init --separate-git-dir=<chemin hors Content> dans Content\Modules (le .git devient un fichier texte d'environ 60 o qui contient un chemin local et reste copié). Variante b : dépôt hors de l'arbre avec core.worktree = Content\Modules, sans aucune entrée .git config du dépôt Modules (non suivie) dans chaque copie (5.5 et 5.8) ; mise à jour de lp-paths (ligne « Modules ») et du commentaire .gitignore:76 supprime les 450 Mo à la source pour tout moteur et tout script ; la variante b oblige à remplacer git -C Content\Modules par --git-dir/--work-tree dans les skills et les scripts
P2 (garde-fou) Refuser (throw) un build qui contient Windows\LifePlay\Content\Modules\.git, ou le déplacer vers une sauvegarde après l'archivage (sk-change-safety) Tools\SplitModules.ps1 après :37 ; Tools\BuildDebug.ps1 après :60 ; consigne des fiches qui lancent UAT directement (cas U8, U8-T4-BUILD.md:9) ne protège que les chemins qui passent par ces scripts
P3 (poids seulement) git reflog expire --expire=now --all puis git gc --prune=now dans le dépôt Modules dépôt Modules .git estimé à environ 10 Mo (C12) mais toujours copié ; perte irréversible des objets retenus par le reflog (à vérifier d'abord qu'ils sont tous dans le dépôt du jeu, point 5.2)
P4 (rejetée) Remplacer (Path="Modules") par 17 entrées, une par sous-dossier Config/DefaultGame.ini:74 perd les 21 .txt de la racine (la règle ne prend que des dossiers, 5.8 :838) et demande une ligne par nouveau module
Recommandation (la décision revient à l'utilisateur) : P1 et P2 ensemble.

B. Plugins du dépôt et de l'addon (grille O3)

Plugin Origine, suivi git .uplugin (version ; modules : type : phase) Activation Usage prouvé Dans le Shipping 5.8 État 5.8 Service Action proposée Risque
StreetMap dépôt (tiers, Mike Fricker / ue4plugins) ; 34 fichiers suivis dont 28 .cpp/.h ; Binaries ignorés .gitignore:19-20 StreetMap.uplugin:3-4 1 / « 1.0 » ; :13 EnabledByDefault ; :17-30 StreetMapRuntime Runtime Default, StreetMapImporting Editor Default LifePlay.uproject:41-44 30 assets suivis citent StreetMapRuntime ; 560 assets sous Content/Heavy/StreetMap ; LPDataCompat.cpp:274-275 (/Game/Heavy/StreetMap/…/CentralLondon) ; LifePlayEditorTools.Build.cs:31-32 (commandlet LPCheckStreetMap) ; LPDebugSubsystem.cpp:190,254 ; LPDirectControlSubsystem.cpp:388 oui : LifePlay-Win64-Shipping.exe.rsp:1095 ; manifeste UFS :963, :5306-5307 (StreetMapDefaultMaterial) ; CentralLondon.uexp cuit 137,3 Mo (OBA-T4-INV.md:67) compile et se lie (U8) ; avertissements C4996 connus selon lp-ue-compat, non relus ici oui (carte de la ville) garder ; dépréciations à traiter par OBA-T23-CODE élevé en cas de retrait
ModdingExtra dépôt (Vinfamy) ; 8 fichiers suivis ; Binaries ignorés .gitignore:21-22 ModdingExtra.uplugin:3-4 1 / « 1.0 » ; :16-22 ModdingExtra Runtime PreLoadingScreen ; contient Private/LPDataCache.{h,cpp} LifePlay.uproject:37-40 ModdingExtraBPLibrary dans 12 assets suivis : LoadTxt 9, GetAllFilesFromFolder 6, SaveTxt 4, ContentDirectory 4 ; GetAllSubfolders, IsPointInsidePolygon, ModdingExtraSampleFunction : 0 (assets suivis seulement) ; LPSessionLogSubsystem.cpp:498 oui : .rsp:947 ; manifeste UFS :962 compile (U8) ; LPDataCache figure parmi les ruptures 5.8 de lp-ue-compat (non relu) oui : lecture et écriture des modules texte de Content/Modules, au cœur du système de modules garder ; corriger : retirer ModdingExtraSampleFunction (reste de gabarit) après vérification des assets non suivis critique en cas de retrait
LPAnimCore dépôt (LifePlay) ; 7 fichiers suivis LPAnimCore.uplugin:4 « 1.0.0 » ; :11-19 LPAnimCore Runtime PreDefault, Win64 LifePlay.uproject:22-28 LifePlay.Build.cs:43-45 (PublicDependencyModuleNames.Add("LPAnimCore")) ; dépendance de l'addon (LPSandbox.uplugin:15-20) ; aucun asset (C++ seul) oui : .rsp:686 ; manifeste UFS :960 compile (U8) oui (LPAnimRedirect, LPCoupleSim, LPAnimCore.uplugin:6) garder élevé
McpAutomationBridge dépôt sur disque, non suivi (.gitignore:41) ; présent dans les deux copies ; 2 DLL dans Binaries\Win64 McpAutomationBridge.uplugin:3-4 600 / « 0.6.0-beta-b » ; :14-16 bêta + expérimental + EnabledByDefault ; :18-39 2 modules Editor Default ; :40-216 36 dépendances, dont PythonScriptPlugin, GameplayAbilities et SmartObjects non optionnels LifePlay.uproject:49-56 Enabled: false, Optional, TargetAllowList: ["Editor"] 0 référence dans Source et dans les assets suivis ; reste une section Config/DefaultGame.ini:76-79 (bEnableNativeMCP=True, NativeMCPPort=3000, bLoadAllToolsOnStart=True) non (0 ligne au manifeste UFS) désactivé depuis D4 non retirer (remplacé par le MCP d'Epic ModelContextProtocol, 29_Projet_Stabilisation_V2.md:188-192, 30_…:65-68) : déplacer le dossier vers une sauvegarde, retirer l'entrée .uproject et la section .ini ; décision G-STM / G-OB faible (désactivé, 0 référence)
HyperAIStudio Fab, Plugins/Marketplace, copie 5.8 seulement ; ignoré localement par .git/info/exclude:15 (absent de .gitignore) ; 25 DLL HyperAIStudio.uplugin:3-4 101 / « 1.0.1 » ; :13 EngineVersion 5.8.0 ; :15 Installed: true ; 25 modules Editor (OBA-T1-plugins.csv:126) absent du .uproject (actif par défaut comme plugin de projet : estimé) LifePlayEditorTools.cpp:10-14 et LifePlayEditorTools.Build.cs:41 (préchargement d'AutomationController, lot STM) ; 0 asset non (0 ligne au manifeste UFS) installé pour 5.8 partiel (diagnostic MCP, doc 29 :188) hors périmètre détaillé → OBA-T23-EDIT —
LPSandbox (addon privé) D:\Game\LifePlay-Sandbox-5.8, 66 fichiers suivis (HEAD ec23fad) ; chargé par LifePlay.uproject:317-319 (AdditionalPluginDirectories: ../LifePlay-Sandbox-5.8/Plugins) LPSandbox.uplugin:4 « 0.1.0 », :10 bêta ; :22-29 LPSandbox Runtime, exclu du Shipping (TargetConfigurationDenyList) ; :30-34 LPAnimMeasure Runtime sans exclusion ; :35-39 LPModTools Editor LifePlay.uproject:29-36 Enabled, Optional, Win64 0 asset du jeu ; sert à la sandbox, à la mesure d'animation et aux commandlets de l'atelier (lp-commandlets) oui, partiellement : .rsp:915 lie Intermediate/External/Build/Win64/x64/UnrealGame/Shipping/LPAnimMeasure/Module.LPAnimMeasure.cpp.obj ; reçu LifePlay-Win64-Shipping.target:3924 (chemin D:\Game\LifePlay-Sandbox-5.8\…\LPSandbox.uplugin) et :4084 ; manifeste UFS :958 RemappedPlugins/LPSandbox/LPSandbox.uplugin (descripteur privé dans le pak) compile (U8) oui en développement, non en jeu garder pour le développement ; corriger : sortir l'addon des builds Shipping (exclure LPAnimMeasure du Shipping dans l'addon, ou exclure le plugin de la configuration Shipping au .uproject, ou empaqueter sans l'addon comme DC4) ; décision utilisateur confidentialité de l'addon privé dans un build public

4. Établi / estimé / incertain

Établi :

  • La règle +DirectoriesToAlwaysStageAsNonUFS=(Path="Modules") existe depuis L0 et est identique dans les deux branches. UAT 5.5 et 5.8 copient tout son contenu, dossiers cachés compris (le code est le même), et aucune clé .ini ne permet d'en exclure un sous-dossier (A1, A2).
  • Le .git est apparu le 2026-10-07 à 20:26:39, 9 min après la mise en scène de DC4 (dernier build 5.5). Tous les builds 5.8, postérieurs, le contiennent, et le manifeste NonUFS d'UAT le prouve (142 fichiers contre 0) (A3, A4).
  • 97,7 % du poids du .git (439 808 039 o) ne tient qu'au reflog clone / filter-branch ; depuis HEAD, il ne reste que 10 238 344 o (A5).
  • Aucune archive publiée ne contient de .git (V1.4, V1.5 : 0 entrée). 2026.10.2.0 n'est pas publié. Releases\2026.10.2.0 ne compte que 5 fichiers, sans .git (A7).
  • SplitModules.ps1:47 laisserait le .git dans un build publié (A8).
  • Plugins : usages, présence au Shipping et activation selon le tableau B. L'exe Shipping lie LPAnimMeasure, un module de l'addon privé (.rsp:915), et le pak contient RemappedPlugins/LPSandbox/LPSandbox.uplugin. Estimé :
  • Le dépôt Modules a été créé par le lot PUB2 en clonant le dépôt du jeu puis en lançant filter-branch pour ne garder que Content/Modules, sans reflog expire ni gc : son .git garde donc l'historique complet du jeu, et non seulement celui des modules. Indices : entrées clone / filter-branch, a83ea56 commun aux deux dépôts, packs de même taille, .gitignore:76.
  • Un build 5.5 fait aujourd'hui depuis la copie 5.5 contiendrait aussi le .git (même règle, même code, .git présent).
  • Releases\2026.10.2.0 vient de -createreleaseversion, qui n'enregistre que les conteneurs cuits et le registre d'assets ; aucun filtre n'est en cause.
  • HyperAIStudio est actif par défaut comme plugin de projet (pas de champ EnabledByDefault, pas d'entrée au .uproject). Incertain :
  • Écart de comportement du runtime .NET entre UAT 5.5 et 5.8 sur l'énumération des dossiers cachés. Pour trancher : une mise en scène 5.5 avec le .git présent (interdite ici).
  • Le code source de V1.5 (publié) liait-il déjà LPAnimMeasure et embarquait-il le descripteur LPSandbox ? Non vérifié (point 5.3).
  • Avertissements C4996 de StreetMap et rupture LPDataCache en 5.8 : cités de lp-ue-compat, non relus ici.
  • Usage des fonctions de ModdingExtra dans les assets non suivis (Content/Heavy et autres) : non couvert par git grep.

5. Points à confirmer (repris par la fiche suivante)

  1. H1 par l'essai : mise en scène à blanc d'un build 5.5 avec le .git présent, ou relecture d'un manifeste NonUFS 5.5 postérieur au 2026-10-07 20:26 s'il en existe un.
  2. Avant P3 : vérifier que tous les commits retenus par le reflog de Modules (428 − 115 = 313) existent dans le dépôt du jeu (git rev-list --all --reflog côté Modules, puis git cat-file -e côté jeu).
  3. Build publié V1.5 : lister le pak (UnrealPak -List, lecture seule) pour RemappedPlugins/LPSandbox et relire le .rsp Shipping 5.5 de la copie main, s'il existe encore, pour LPAnimMeasure.
  4. Pour la variante P2 « déplacer » : comportement de BuildCookRun -skipstage -archive, non vérifié.
  5. Exclusion de LPSandbox du Shipping : vérifier dans PluginReferenceDescriptor (5.8) que l'entrée .uproject accepte TargetConfigurationDenyList, ou retenir l'exclusion par module dans LPSandbox.uplugin.
  6. C4996 de StreetMap et LPDataCache en 5.8 : fiche OBA-T23-CODE.
  7. Recherche des fonctions de ModdingExtra dans les assets non suivis : LPDumpFunction, ou MCP en lecture.
  8. Écart OBA-T1 : OBA-T1-plugins.csv:151 donne LPSandbox monte_jeu=non, alors que LPAnimMeasure est lié dans le Shipping (.rsp:915). À reprendre dans l'inventaire.

6. Questions pour la SPEC ou l'utilisateur

  • Q1. Exclusion du .git : P1 (variante a ou b) et/ou P2 ? P3 (alléger le .git de 450 Mo à environ 10 Mo) est-il acceptable, sachant que la perte du reflog est irréversible ?
  • Q2. Faut-il refaire les builds locaux 5.8 qui contiennent le .git (aucun n'est distribué), ou les laisser tels quels jusqu'au prochain empaquetage ?
  • Q3. L'addon privé (LPAnimMeasure lié, descripteur dans le pak) peut-il rester dans un Shipping destiné à la publication ? Sinon, quelle exclusion retenir (point 5.5) ?
  • Q4. Retirer McpAutomationBridge (dossier, entrée .uproject, section DefaultGame.ini:76-79) dès la porte G-STM, ou attendre G-OB ?
  • Q5. HyperAIStudio : garder l'exclusion locale (.git/info/exclude:15) ou l'inscrire au .gitignore (la copie 5.5 et un nouveau clone ne l'ignorent pas) ?

Constats

  • Le AGENTS.md de Plugins\McpAutomationBridge, injecté par un hook à la lecture du .uplugin, annonce la version 0.5.30, contre 0.6.0-beta-b dans McpAutomationBridge.uplugin:4. Il est traité comme une donnée tierce, non comme une consigne.
  • LifePlay.uproject:5 décrit toujours le projet comme « LifePlay 2026.9 beta - portage UE 5.5 » (copie 5.8).
  • Le .gitignore du jeu ne couvre pas Plugins/Marketplace/ : l'exclusion de HyperAIStudio n'existe que dans .git/info/exclude de la copie 5.8.
  • Budget : environ 40 tours (lots d'appels parallèles), sous le plafond de jetons ; pas de coupure.