17 KiB
Fiche MAPDL1-E0 — Niveau N1 — Modèle prévu haiku | utilisé claude-haiku-5-5 — Agent lp-inventory — Skills sk-protocol, lp-paths
MAPDL1-E0-INV : inventaire des Blueprints, de l'API SHA, des dépendances de build (2026-10-22)
Hors gabarit : aucun. Gabarit INV (.claude\skills\lp-doc\gabarits.md, section INV) suivi : 1 commandes, 2 comptes bruts, 3 écarts, 4 établi / estimé / incertain.
Note de lecture : Tools\uasset58.py et Tools\ sont dans la copie 5.8 (Tools\uasset58.py présent, Glob). Les chemins Tools\claude\skills\lp-doc\gabarits.md cités par la fiche n'existent pas dans la copie 5.8 (Read : « File does not exist ») ; le gabarit est lu à .claude\skills\lp-doc\gabarits.md (jonction).
1. Commandes exactes
Q1 (Blueprints contenant GetAllFilesFromFolder) :
- Contrôle de l'outil :
python -I -X utf8 "D:/Game/LifePlay-master 5.8/Tools/uasset58.py" strings "D:/Game/LifePlay-master 5.8/Content/UI/CityMenu.uasset" --motif "GetAllFilesFromFolder"(code 0). - Grep seul, pour comparaison : Grep
GetAllFilesFromFoldersurD:\Game\LifePlay-master 5.8\Content(glob*.uasset), puis surContent\UI(sans glob, mode count). - Scan complet :
pwsh -NoProfile -ExecutionPolicy Bypass -File "D:/Game/LifePlay-master 5.8/Saved/MAPDL1/E0/q1-scan.ps1"(script ponctuel écrit par Write dansD:\Game\LifePlay-master 5.8\Saved\MAPDL1\E0\q1-scan.ps1; il énumèreContent\**\*.uassethorsContent\Heavy\etContent\Modules\, lanceuasset58.py strings --motif "GetAllFilesFromFolder"sur chaque fichier, puisstrings --motif "Heavy/StreetMap|StreetMap"sur chaque hit). Sortie : tâche d'arrière-planbvsj17ox9, fichier<dossier de session>\tasks\bvsj17ox9.output(hors projet). - Pour chaque hit, recomptage : Grep
^/Game/Heavy/StreetMap/(mode count) sur ce fichier de sortie ; GrepHeavy/StreetMap(mode count) surContent\UI\CityMenu.uasset.
Q2 (Content\UI\City.uasset) :
python -I -X utf8 "D:/Game/LifePlay-master 5.8/Tools/uasset58.py" strings "D:/Game/LifePlay-master 5.8/Content/UI/City.uasset" --min 3 --motif "(Installed|Format|Loading)"(code 0)python -I -X utf8 "D:/Game/LifePlay-master 5.8/Tools/uasset58.py" locate "D:/Game/LifePlay-master 5.8/Content/UI/City.uasset" Installed "Not Installed"(code 0)
Q3 (moteur, Core Public) :
- Grep
SHA256(sensible à la casse), cheminD:\Game\Launcher\Engine\UE_5.8\Engine\Source\Runtime\Core\Public, mode content. - Grep
FSHA1|FIoHashBuilder|class CORE_API FSHA1|FSHA256Signature|FPlatformMisc\b(glob ciblé). - Grep
FSHA|SHA1|SHA512|HMAC|Sha1|Sha512|IncrementalSha|Update\(|Final\(sur Core\Public (limite 60 lignes ; bruit deAppendHash/FSHA1dansContainersetSerialization). - Grep
class FSHA256|FSHA256|struct FSHA256sur toutRuntime\Core. - Grep
^(struct|class) (CORE_API )?FGenericPlatformMiscsurGenericPlatform\GenericPlatformMisc.h; GrepFPlatformMisc;|struct FWindowsPlatformMisc|GetSHA256SignaturesurCore\Public\Windows. - Read
GenericPlatform\GenericPlatformMisc.hlignes 318-325 et 1398-1417 ; ReadMisc\SecureHash.hlignes 310-350 ; ReadIO\IoHash.hlignes 15-60.
Q4 (OpenSSL / libzip) :
- Read
D:\Game\Launcher\Engine\UE_5.8\Engine\Source\ThirdParty\OpenSSL\OpenSSL.Build.cset...\ThirdParty\libzip\libzip.Build.cs(entiers). - Grep
OpenSSL|libzipsurD:\Game\Launcher\Engine\UE_5.8\Engine\Source\Runtime(glob*.Build.cs, mode content, sans limite). - Grep
libzipsur le même chemin (glob*.Build.cs, mode count).
Q5 (D:\Game\LifePlay-master 5.8\Source\LifePlay\LifePlay.Build.cs) : Read entier (55 lignes).
2. Comptes bruts
Q1 (sorties brutes) :
- Contrôle de l'outil sur CityMenu :
exports 382 contigus=True noms=571 taille=459239/CallFunc_GetAllFilesFromFolder_Files/CallFunc_GetAllFilesFromFolder_ReturnValue/GetAllFilesFromFolder/EXIT=0. - Grep
GetAllFilesFromFoldersurContent(glob*.uasset) :No files found. SurContent\UI(count) :No matches found/Found 0 total occurrences across 0 files.Le Grep ne lit pas les.uassetici : il ne trouve pas le nom queuasset58.pytrouve dansCityMenu.uasset. Grep ne sert donc pas à ce comptage. - Scan (
q1-scan.ps1), lignes de tête et de synthèse, copiées telles quelles :fichiers_uasset_hors_Heavy_Modules=798 ... illisibles=210 hits_GetAllFilesFromFolder=6 - Les 210 illisibles (
ILLISIBLE code=2 …) sont tous sousContent\__ExternalActors__\(ThirdPersonMap, VehicleExampleMap, VehicleOffroadExampleMap) ouContent\__ExternalObjects__\(mêmes cartes). Comptage : Grep^ILLISIBLE code=2 Content\\[^_]sur le fichier de sortie =No matches found(0 hors__). - Hits (6), dans l'ordre du scan :
| # | Fichier (sous Content\) |
Chaînes StreetMap (strings --motif, code 0) |
Lecture |
|---|---|---|---|
| 1 | BPs\GI.uasset |
/Game/BPs/StreetMap_Static, puis 562 lignes ^/Game/Heavy/StreetMap/… (Grep count, fichier de sortie) dont le sous-dossier /Game/Heavy/StreetMap/Static/… |
Liste de cartes de villes (noms de cartes, pas de contenu de jeu relevé ici) |
| 2 | BPs\Room.uasset |
/Game/BPs/StreetMap_Static, /Script/StreetMapRuntime, StreetMap, StreetMapBuilding, StreetMapBuilding:Amenity, StreetMapBuilding:Building, StreetMapBuilding:BuildingName, StreetMapBuilding:BuildingPoints, StreetMapStatic, StreetMap_Static_C |
Aucune chaîne Heavy/StreetMap |
| 3 | UI\Builder.uasset |
aucune ligne (exports 831) | Motif absent |
| 4 | UI\CharGen.uasset |
aucune ligne (exports 3600) | Motif absent |
| 5 | UI\CityMenu.uasset |
/Game/BPs/StreetMap_Static, /Script/StreetMapRuntime, Heavy/StreetMap (1 ligne, Grep count = 2 lignes binaires), StreetMapBuilding, StreetMapStatic, StreetMap_Static_C, plus une phrase d'infobulle (« The OpenStreetMap data may have a lot of buildings… ») |
Attendu connu |
| 6 | UI\StatMenu.uasset |
aucune ligne (exports 318) | Motif absent |
Q2 (sorties brutes) :
exports 101 contigus=True noms=435 taille=251368
CallFunc_Format_ReturnValue
Format
FormatArgumentData
Installed
InstalledText
K2Node_FormatText
Loading, Please Wait ...
Not Installed
SetLoading
EXIT=0
locate :
exports 101 contigus=True noms=435 taille=251368
== Installed : 6
@136830 export #10 ExecuteUbergraph_City classe=Function +3640/6574
@139027 export #10 ExecuteUbergraph_City classe=Function +5837/6574
@164062 export #22 K2Node_CallFunction_0 classe=K2Node_CallFunction +1188/1238
@201100 export #54 K2Node_FormatText_0 classe=K2Node_FormatText +347/617
@242145 export #95 InstalledText classe=TextBlock +115/504
@243189 export #97 InstalledText classe=TextBlock +115/504
== Not Installed : 2
@242141 export #95 InstalledText classe=TextBlock +111/504
@243185 export #97 InstalledText classe=TextBlock +111/504
EXIT=0
Q3 (comptes) :
- Grep
SHA256(Core\Public) : 4 lignes, toutes dansGenericPlatform\GenericPlatformMisc.h(320, 322, 1405, 1414). - Grep
FSHA|SHA1|…|Final\((Core\Public) : sortie tronquée à 60 lignes ; visibles :Misc\SecureHash.h:313(class FSHA1),Misc\SecureHash.h:332/335/345/348(dans la lecture),Serialization\MemoryLayout.h:322(HashLayout(…, FSHAHash&)) ;Hash\xxhash.h:214-237(UpdatexxHash, non cryptographique) ;IO\IoHash.h:188(class FIoHashBuilder : public FBlake3). - Grep
class FSHA256|FSHA256|struct FSHA256(Runtime\Core) : 3 lignes :Core\Private\GenericPlatform\GenericPlatformMisc.cpp:429(FSHA256Signature::ToString),…cpp:2019(FGenericPlatformMisc::GetSHA256Signature),Core\Public\GenericPlatform\GenericPlatformMisc.h:322(définition de la structure). - Grep
^(struct|class) (CORE_API )?FGenericPlatformMisc: 1 ligne,GenericPlatformMisc.h:571(struct FGenericPlatformMisc). - Grep
FPlatformMisc;|struct FWindowsPlatformMisc|GetSHA256Signature(Core\Public\Windows) : 2 lignes,Windows\WindowsPlatformMisc.h:113(struct FWindowsPlatformMisc),Windows\WindowsPlatformMisc.h:414(typedef FWindowsPlatformMisc FPlatformMisc;). Aucune redéfinition deGetSHA256SignaturedansPublic\Windows.
Lectures (Read) :
GenericPlatformMisc.h:320-322:/* Holds a computed SHA256 hash. *//struct FSHA256Signature/uint8 Signature[32];.GenericPlatformMisc.h:1404-1414: doc « Generates the SHA256 signature of the given data » ; signature exacte, ligne 1414 :static CORE_API bool GetSHA256Signature(const void* Data, uint32 ByteSize, FSHA256Signature& OutSignature);Misc\SecureHash.h:313-348:class FSHA1(SHA-1),CORE_API void Reset();(329),CORE_API void Update(const uint8 *data, uint64 len);(332),template … void Update(const Type& InData)(338),CORE_API void Final();(345),FSHAHash Finalize()(348).IO\IoHash.h:17-25:FIoHash= BLAKE3-160 ; « use FIoHashBuilder to hash data in blocks with FIoHashBuilder::Update(Block) followed by FIoHashBuilder::Finalize() » ;IoHash.h:188class FIoHashBuilder : public FBlake3.
Q4 (comptes) :
OpenSSL.Build.cs: version1.1.1t(ligne 12). Win64 (lignes 33-54) :libssl.lib(ligne 51),libcrypto.lib(ligne 52),crypt32.libenPublicSystemLibraries(ligne 53). Chemins :Win64\VS<version>(42), configReleaseouDebug(17, 49).libzip.Build.cs: version1.9.2(ligne 8). Dépendances publiques :OpenSSL(ligne 14),zlib(ligne 15). Win64 :Win64\<WindowsLibDir>\Release\zip.lib(ligne 24). Mac (26-28) et Unix (30-33) hors Win64.- Grep
OpenSSL|libzip(Runtime,*.Build.cs) : 13 lignes, 9 fichiers :
Total : 13 lignes (sortie complète,Runtime\Experimental\IoStore\HttpClient\IoStoreHttpClient.Build.cs:12 PrivateDependencyModuleNames.Add("OpenSSL"); Runtime\TraceLog\TraceLog.Build.cs:28 PrivateDependencyModuleNames.Add("OpenSSL"); Runtime\Online\XMPP\XMPP.Build.cs:17,44,46 (bRequireOpenSSL ; AddEngineThirdPartyPrivateStaticDependencies(Target, "OpenSSL")) Runtime\Online\WebSocketServer\WebSocketServer.Build.cs:27 AddEngineThirdPartyPrivateStaticDependencies(… "OpenSSL", "libWebSockets", "zlib") Runtime\Online\WebSockets\WebSockets.Build.cs:118 AddEngineThirdPartyPrivateStaticDependencies(… "OpenSSL", "libWebSockets", "zlib") Runtime\RSA\RSA.Build.cs:15 PrivateDependencyModuleNames.Add("OpenSSL"); Runtime\Online\SSL\SSL.Build.cs:45 AddEngineThirdPartyPrivateStaticDependencies(Target, "OpenSSL"); Runtime\Online\HTTP\HTTP.Build.cs:88,183,186 (bPlatformRequiresOpenSSL ; AddEngineThirdPartyPrivateStaticDependencies(Target, "OpenSSL")) Runtime\Online\BuildPatchServices\BuildPatchServices.Build.cs:48,54 (commentaire « OpenSSL is needed on desktop platforms… » ; AddEngineThirdPartyPrivateStaticDependencies(Target, "OpenSSL"))head_limit0). - Grep
libzip(Runtime,*.Build.cs, mode count) :No matches found/Found 0 total occurrences across 0 files.→ 0 module Runtime dépend delibzipdans un*.Build.cs.
Q5 (lignes de LifePlay.Build.cs) :
- Dépendances publiques : ligne 17
Core,CoreUObject,Engine,InputCore,AssetRegistry; ligne 28NavigationSystem; ligne 45LPAnimCore. - Dépendances privées : ligne 20
ImageWrapper,ApplicationCore; ligne 23RHI; ligne 31EngineSettings; ligne 34Projects; ligne 38Slate,SlateCore,UMG; ligne 41Chaos. - Ligne 15 :
PublicIncludePaths.Add(ModuleDirectory)(pas une dépendance). Ligne 48 :Slate/SlateCoreen commentaire (inactif). HTTP: absent.Json(etJsonUtilities) : absent.Slate,SlateCore,UMG: présents, tous en privé (ligne 38).
3. Écarts au compte attendu
- Q1 : attendu connu
Content\UI\CityMenu.uasset: confirmé (hit 5). Écarts : 210 fichiers illisibles (code 2) sur 798, tous sous__ExternalActors__/__ExternalObjects__; ces fichiers ne sont donc pas vérifiés. Le Grep natif ne trouve pas le nom dans les.uasset(0 au lieu de 1) : écart d'outil, non de contenu. - Q1 : la fiche demande « tous les
.uasset» hors Heavy/Modules : 798 lus dont 588 lisibles. Le compte de 798 vient du script (Get-ChildItem -Recurse -Filter *.uasset), pas d'un Glob (le GlobContent/**/*.uassetinclut Heavy : 9074 au total, non filtré). - Q2 : la fiche attend « Installed » comme texte comparé au clic. Écart : la chaîne
Installedseule n'existe pas comme FText isolé dans la sortiestrings; les occurrenceslocatedeInstalledsont des noms (ExecuteUbergraph_City,K2Node_CallFunction_0,InstalledText) et une sous-chaîne deNot Installed(offset +115 = +111 + 4, export 95 et 97). - Q3 : aucune API SHA-256 incrémentale trouvée (écart à l'hypothèse de la fiche, qui la supposait possible).
- Q4 : aucun écart de compte ;
libzipn'a aucun dépendant Runtime. - Q5 : aucun écart.
4. Établi / estimé / incertain
Établi :
- Q1 :
GI.uasset,Room.uasset,UI\Builder.uasset,UI\CharGen.uasset,UI\CityMenu.uasset,UI\StatMenu.uassetcontiennentGetAllFilesFromFolder(6 hits sur 588 fichiers lisibles). Sources : scanq1-scan.ps1, sortiebvsj17ox9.output, lignes 214, 800, 813, 816, 819, 829. - Q1 :
Heavy/StreetMap(forme exacte) est présent dansCityMenu.uassetseulement parmi les 6 hits ;GI.uasseta/Game/Heavy/StreetMap/…(562 lignes),Room.uassetaStreetMap/StreetMapBuilding//Game/BPs/StreetMap_StaticsansHeavy/. - Q2 : textes FText présents :
Not Installed(export 95 et 97, TextBlockInstalledText, offset +111),Loading, Please Wait ....Format=K2Node_FormatText(export 54). - Q3 :
FSHA256Signature(struct,GenericPlatformMisc.h:322),GetSHA256Signatureone-shot (GenericPlatformMisc.h:1414),FPlatformMisc=FWindowsPlatformMisc(WindowsPlatformMisc.h:414). SHA-1 incrémental :FSHA1(SecureHash.h:313-348). BLAKE3 incrémental :FIoHashBuilder(IoHash.h:188). Pas de SHA-256 incrémental dansPublic\. - Q4 et Q5 : listes ci-dessus, lues dans les fichiers.
Estimé :
- Q1 : les 210 fichiers
__ExternalActors__/__ExternalObjects__sont des acteurs externes de cartes d'exemple (nom du dossier) ; leur contenu n'a pas été lu. - Q3 :
GetSHA256Signature(Core\Private.cpp:2019) est une implémentation générique ; son corps n'a pas été lu, donc la plateforme Windows sous-jacente (CNG ou OpenSSL) est inconnue. - Q2 : le texte comparé au clic est probablement
Not Installed/Installed, par la logique de l'ExecuteUbergraph_City; non établi.
Incertain :
- Q1 : absence de
GetAllFilesFromFolderdans les 210 fichiers illisibles : non vérifiée (essai qui trancherait : ouvriruasset58.pysur un de ces fichiers pour voir la cause du code 2, ou lire les.uassetexternes par un autre outil). - Q1 : les hits
GI.uassetetRoom.uassetsont dansContent\BPs\; leur rôle n'est pas lu (hors fiche). - Q2 : quel FText est comparé au clic (aucun nœud de comparaison n'a été décodé ; un
locatesurK2Node_pins ouEqualserait nécessaire). - Q3 :
Runtime\Core\Publicne contient pas de SHA-256 incrémental ; la recherche n'a pas couvertCore\Private(hors demande) ni les modulesDeveloper/; la sortieUpdate(/Final(a été tronquée à 60 lignes (ajoutshead_limit), donc un Update SHA-256 sous un autre nom est peu probable mais non exclu. - Q4 :
Runtime\**\*.Build.csseulement ; les.cppouDevelopernon couverts (demande : Runtime). - Q4 : lignes
XMPP,HTTP,WebSockets,BuildPatchServicesconditionnelles : les conditions ne sont pas relues (AddEngineThirdPartyPrivateStaticDependenciesne prouve que l'appel, pas la liaison effective).
Fichiers à commiter
- A
Docs/Migration/etat/REL/MAPDL1/MAPDL1-E0-INV.md(ce livrable ; dépôt jeu,etat/suivi en texte). - Hors git (ignoré par
.gitignore,Saved/) :Saved/MAPDL1/E0/q1-scan.ps1(script ponctuel, à garder dans le lot). - Aucun autre fichier écrit.
Constats
- Résultat : partiel (Q2 et Q3 établies ; Q1 établie pour 588 fichiers sur 798, 210 illisibles ; Q4 et Q5 établies).
- Grep (outil) ne cherche pas le nom de fonction dans les
.uasset: pour un recensement de Blueprints, utiliseruasset58.py strings --motif(écart constaté : 0 au Grep, 1 auuasset58.pysurCityMenu.uasset). - Chemin
Tools\claude\skills\lp-doc\gabarits.mdde la fiche : absent ; gabarit lu à.claude\skills\lp-doc\gabarits.md. - À verser : lp-paths § Pièges de poste — « Grep ne lit pas les
.uasset(0 hit sur CityMenu) ; passer parTools\uasset58.py» (skill à recevoir : lp-paths). Aucune autre ligne à verser. - Suite : orchestrateur doit décider si les 210
__ExternalActors__/__ExternalObjects__sont à lire avec un autre outil, état : non vérifiés.
Tours : 16 / 25 (décompte de l'agent, hors écriture du livrable ; FicheStats non relancé).