LifePlay-Revival/Docs/Migration/etat/REL/MAPDL1/MAPDL1-E3-VAL.md
2026-10-22 21:10:39 +02:00

23 KiB
Raw Blame History

Fiche MAPDL1-E3-VAL — Niveau N1 — Modèle prévu haiku | utilisé haiku (claude-haiku-5-5, déclaré par l'environnement ; non vérifié par claude -p) — Agent lp-validator — Skills lp-validate, sk-recount, sk-protocol, debug-verification

MAPDL1-E3-VAL : validation statique de MAPDL1-E1 (2026-10-22)

Hors gabarit : aucun. Gabarit VAL de D:\Game\LifePlay-Sandbox\Tools\claude\skills\lp-doc\gabarits.md suivi (sections 1 à 6).

Lecture seule : aucun build, aucun éditeur, aucun commandlet. Tools\Build.ps1 -FromLog non lancé : il écrit un résumé dans etat\ (lot MAPDL1-E2-VAL absent de Tools\EtatDir.ps1) ; le recomptage des journaux est fait par Grep (§ 3). LPTestStringCompat non lancé (commandlet interdit par la fiche). Seul ce livrable est écrit.

Verdict global : PASS-STATIC (aucun contrôle de la fiche E1 en échec ; points de jeu reportés ; réserves au § 5 et au § 6).

Heures des relevés : 2026-10-22, dernier relevé à 16:30:47 (horloge de la session). L'arbre est vivant : d'autres lots écrivent pendant la validation (§ 7).

1. Fiches amont relues

  • D:\Game\LifePlay-master 5.8\Docs\Migration\etat\REL\MAPDL1\MAPDL1-E1-FICHE.md : lue en entier.
  • ...\MAPDL1\MAPDL1-E1-IMPL.md : lue en entier (246 lignes, § 1 à 6 et Constats). Seule IMPL du lot à ce jour.
  • ...\MAPDL1\MAPDL1-E2-BUILD.md : lue en entier (gabarit BUILD suivi : § 1 à 7 et écarts).
  • ...\MAPDL1\MAPDL1-SPEC-05-v3.md : lue en entier (§ 1 : JSON format 2 ; § 2 à 7 pour le contexte).
  • ...\MAPDL1\MAPDL1-SPEC-05.md : lue l. 1-140 (§ 1 à 6 ; § 2 : C1 à C5).
  • ...\MAPDL1\MAPDL1-SPEC-05-v2.md : Grep du texte de licence (l. 99) et de S5-5 (l. 133).
  • Instantané : D:\Game\LifePlay_Backup_5.5\MAPDL1-E1\manifest.csv (lu en entier).
  • Non relus, hors périmètre de cette VAL : MAPDL1-E0-INV.md, MAPDL1-L1-CART-02.md, MAPDL1-L4-CART-01.md (références de la fiche), MAPDL1-E4-TESTS.md (présent à 16:28, non lu).

2. Points à confirmer des IMPL : un par ligne

Point (E1-IMPL § 5) Verdict Preuve
V-1 alias TFunction et fonction MODDINGEXTRA_API hors classe, acceptés par UHT PASS (compilation) Grep du journal éditeur Saved\Logs\portage\MAPDL1-E2_Build_20261022-161830.log : aucune ligne error ; [1/14] Compile [x64] ModdingExtraBPLibrary.cpp (l. 45). Journal jeu : [8/11] Compile [x64] ModdingExtraBPLibrary.cpp.
V-2 édition de liens LifePlay vers ModdingExtraSetFileListFilter PASS (édition de liens) ; chargement à l'exécution reporté (E4) Journal jeu l. 32 : Création de la bibliothèque ...\Binaries\Win64\LifePlay.lib ; E2-BUILD § 3 : UnrealEditor-ModdingExtra.dll liée côté éditeur.
V-3 compilation de LPCityMapsSubsystem.cpp (API listées) PASS (compilation) Journal éditeur l. 51 [6/14] Compile [x64] LPCityMapsSubsystem.cpp ; journal jeu l. 23 [2/11] ... ; aucune ligne d'erreur dans les deux (§ 3.8).
V-4 zéro avertissement nouveau ; pas de collision d'unity PASS 0 avertissement compilateur dans les deux journaux. Les 20 lignes Warning: Plugin 'HyperAIStudio' (journal éditeur l. 9-28) sont les connues de lp-build § 7. Journal éditeur l. 37 : Excluded from LifePlay unity file: ... LPCityMapsSubsystem.cpp (compilé hors unity).
V-5 journal au premier menu (CARTES, ETAT, LISTE, MENU tri) reporté (E4, jeu) Non vérifiable statiquement. Chaînes présentes : LPCityMapsSubsystem.cpp l. 414, 467, 513, 675.
V-6 Construct relancé après retrait, pas de clignotement reporté (E4, jeu) Non vérifiable statiquement (Blueprint City). Voir O2 (ticker de 0 s).
V-7 champ StreetMapName* lisible ; City, InstalledText, CityButton trouvés reporté (E4, jeu) Statique : ReadRowCity l. 161-202 (suffixe StreetMapName, repli FStrProperty) ; FindRowWidget l. 205-216.
V-8 Tokyo installé, gabarit « Not available », index d'essai « Download » reporté (E4, jeu) Voir O1 (entrées des villes servies par un pack non ajoutées).
V-9 clic téléchargeable : pas de MoveCity, ouverture du navigateur reporté (E4, jeu) Statique : ULPCityRowClick::OnClicked l. 235-241 ; OpenCityPage l. 751-768 (LaunchURL l. 767). Le blocage de MoveCity relève du Blueprint.
V-10 bandeau 10 s, une fois par ville, Z 1100, souris libre reporté (E4, jeu) Statique : BannerSeconds l. 53, BannerZOrder l. 54, BannerShown l. 794-801, HitTestInvisible l. 813.
V-11 Content/Data/LPCityMaps.json dans le pak reporté (cuisson) Statique : DefaultGame.ini ligne ajoutée (§ 3.4).
V-12 premier ResolveCityPath avant le montage des packs reporté (E4, jeu) Non vérifiable statiquement (un seul appelant Blueprint, non relu).
V-13 dépendance de commit avec STM1 (OnCityMapResolved, ResolveCityPath) PASS statique ; ordre de commit reporté au gardien Grep LPAssetRegistryHelpers.h : l. 70 static FString ResolveCityPath(...), l. 73 static FLPCityMapResolved& OnCityMapResolved(). Ces fichiers restent M (STM1).
E-1 ticker FTSTicker de 0 s (et non OnWorldPostActorTick) conforme à la fiche § 2.3 ; clignotement reporté (E4) Voir O2.
C-1 à C-15 (choix de l'IMPL) revus au § 4 C-14 est un écart mineur (espaces de fin de ligne).

3. Critères rejoués (commande → résultat)

3.1 Périmètre (contrôle 1) : OK

Commande : git -C "D:\Game\LifePlay-master 5.8" status --short (lecture seule). Relevé à 16:2x : 168 entrées (19 M, 149 ??, 0 autre). Le même décompte passé à 16:2x était de 167 (§ 7).

Fichiers E1 présents :

 M Config/DefaultGame.ini
 M Plugins/ModdingExtra/Source/ModdingExtra/Private/ModdingExtraBPLibrary.cpp
 M Plugins/ModdingExtra/Source/ModdingExtra/Public/ModdingExtraBPLibrary.h
 M Source/LifePlay/LifePlay.Build.cs
?? Content/Data/                       (contient uniquement LPCityMaps.json)
?? Source/LifePlay/LPCityMapsSubsystem.cpp
?? Source/LifePlay/LPCityMapsSubsystem.h

Tools/IndexCartes.ps1 n'apparaît pas : git check-ignore -v Tools/IndexCartes.ps1 → .gitignore:91:/Tools/ Tools/IndexCartes.ps1 (hors git, attendu).

Écart de forme, sans gravité : les trois fichiers neufs sont en ?? (non indexés) et non en A. Rien n'a été indexé ; c'est attendu avant le ticket du gardien.

Autres fichiers, listés sans jugement (lots STM1, BOSS, REL2, LOC1, AG, ST, REPO, MAPDL1 docs, commandlets LifePlayEditorTools) :

  • M hors E1 (15) : Docs/Migration/etat/BOSS/BOSS-ETAT.md, BOSS/BOSS-JOURNAL.md, REL/STM1/STM1-JOURNAL-BROUILLON.md, REL/STM1/STM1-TACHES.md, REPO/FILE.md, LifePlay.uproject, Source/LifePlay/LPAssetRegistryHelpers.cpp et .h, LPCityWaterMask.h, LPCityWaterSubsystem.cpp et .h, Source/LifePlayEditorTools/LPBuildCityWaterCommandlet.cpp et .h, LPImportCityOSMCommandlet.cpp, LifePlayEditorTools.Build.cs.
  • ?? hors E1 : 146 entrées, dont 116 sous Docs/Migration/etat/ (STM1, BOSS, REL2, LOC1, AG, ST, REPO, MAPDL1 docs), 29 sous Source/ (STM1 et commandlets), Docs/LP-PROJET.ini.

3.2 Blueprints (contrôle 2) : OK

  • git -C "..." status --short -- Content/UI Content/BPs : sortie vide.
  • Get-Item : Content\UI\City.uasset 08/10/2026 20:28:38 ; CityMenu.uasset 08/10/2026 20:28:38 ; Content\BPs\GI.uasset 14/10/2026 10:33:14.
  • Balayage de Content/UI et Content/BPs : 312 fichiers, 0 modifié après 2026-10-22 15:55.

3.3 Fichiers STM1 (contrôle 3) : OK (réserve documentaire)

Commande : Get-FileHash -Algorithm MD5 sur les 9 fichiers. Sortie (extrait) :

CC146CC6979ED4321413130DCD1B4417 LPCityWaterSubsystem.cpp
4A6C67116A76BFFB9D8D04E38A6C9AC5 LPCityWaterSubsystem.h
E5027FD7FD2B827831D52E8CE5727A36 LPCityWaterMask.h
F378333812EFD901C72F252131F28E47 LPCityNamesSubsystem.cpp
1063948323E856860350F143296D8611 LPCityNamesSubsystem.h
01CC49D85CA415B11A04D19E8EA23FBB LPCityHouses.h
B4FF95AE838F241DBBAB23C7DDAB4D5A LPCityLandmarks.h
7B44F5FA7A1CB33EA8E96C9ECC1C7BDE LPAssetRegistryHelpers.cpp
8E3B725A609CC8E5E23D2F0CEC309C1A LPAssetRegistryHelpers.h

Les 9 valeurs sont identiques à celles de MAPDL1-E1-IMPL.md § Constats 2 (9/9).

Réserve : le tableau « avant » de l'IMPL § 1 ne couvre que les 8 fichiers E1, pas les STM1. Pas de référence « avant » indépendante. Preuve indirecte : Get-Item donne des dates d'écriture 21/10/2026 entre 13:29 et 19:23, soit avant l'instantané E1 (22/10 15:56). E1 n'a donc pas écrit ces fichiers.

3.4 Config/DefaultGame.ini (contrôle 4) : OK

git diff -- Config/DefaultGame.ini : un seul ajout, après le contexte +DirectoriesToNeverCook=..., +DirectoriesToAlwaysStageAsNonUFS=(Path="Modules") :

+DirectoriesToAlwaysStageAsUFS=(Path="Data")

Hunk @@ -72,6 +72,7 @@ : 1 insertion, 0 suppression.

3.5 Diff ModdingExtra (contrôle 5) : OK, écart mineur C-14

Lu en entier, par hunks.

  • .h : hunk @@ -49,3 +49,8 @@, +5 hors de la classe : commentaire, alias FModdingExtraFileListFilter (TFunction), déclaration MODDINGEXTRA_API void ModdingExtraSetFileListFilter(...). Rien d'autre.
  • .cpp, +19 −2, trois hunks :
    • @@ -28,6 +28,15 @@ : static FModdingExtraFileListFilter GLPFileListFilter; et la définition de ModdingExtraSetFileListFilter (l. 31-38).
    • @@ -154,7 +163,9 @@ : const FString ExtRecu = Ext; (l. 167), placé avant la transformation de Ext en *.uasset (l. 178-185). La ligne vide à espaces (l. 166 d'origine) est remplacée.
    • @@ -221,7 +232,13 @@ : appel if (GLPFileListFilter) { GLPFileListFilter(RootFolderFullPath, ExtRecu, Files); } (l. 236-239), juste avant return true; (l. 241). La ligne return true; avec espaces de fin est normalisée.
  • Écart C-14 : deux lignes portant des espaces de fin sont modifiées. Ce n'est ni de la logique ni un crochet ; la fiche § 2.1 dit « Rien d'autre ne change ». À signaler (§ 6).
  • Aucune autre modification de logique. Le plugin ne dépend toujours pas du jeu.

3.6 Fiche § 2.2 à 2.4 (contrôle 6) : OK

Lecture de LPCityMapsSubsystem.cpp (842 l.) et .h (160 l.), en entier.

Exigence Preuve Verdict
Filtre limité à Heavy/StreetMap (casse ignorée, \ → /) et extension uasset FilterFileList l. 494-505 : NormalizeFolder l. 145-157 ; RemoveFromStart("."), comparaison uasset OK
Retire seulement les états non Installed l. 507-513 : RemoveAll(GetCityState(...) != Installed). Journal l. 513. OK
Installé : ni texte ni clic modifiés DecorateRows l. 692-696 : continue si Installed. SortRows ne réécrit que l'ordre (l. 657-670). OK (voir O2 pour la réinsertion)
GI.Cities non écrit Grep Cities (sortie) : seulement commentaires, BaseCities, ListName, variables locales Cities (l. 363-366) ; aucune écriture sur GameInstance OK
Ordre de lecture : Saved puis Content/Data l. 306-309 (Candidates), premier fichier présent retenu l. 310-317 OK
URL non HTTPS écartées IsHttps l. 107-110 ; filtrage l. 393-405 ; page non HTTPS vidée l. 406-410 OK
Bandeau seulement si demandé == résolu HandleCityMapResolved l. 770-804 : Resolved.Equals(Requested) l. 789 ; chemin /Game/Heavy/StreetMap/V.V seulement l. 772-786 ; Installed exclu l. 793-795 OK
Ticker et filtre retirés dans Deinitialize l. 264-287 : RemoveTicker l. 266-270 ; OnCityMapResolved().Remove l. 271-275 ; filtre vidé l. 276-281 (si propriétaire) OK

3.7 Fins de ligne (contrôle 7) : OK

Commande : git -C "..." ls-files --eol -- Config/DefaultGame.ini <3 autres M> :

i/lf    w/lf    attr/-text            	Config/DefaultGame.ini
i/lf    w/lf    attr/-text            	Plugins/ModdingExtra/Source/ModdingExtra/Private/ModdingExtraBPLibrary.cpp
i/lf    w/lf    attr/-text            	Plugins/ModdingExtra/Source/ModdingExtra/Public/ModdingExtraBPLibrary.h
i/lf    w/lf    attr/-text            	Source/LifePlay/LifePlay.Build.cs

Fichiers neufs, Tools\FileCheck.ps1 -Path @(...) (lecture d'octets) :

LF      0 160  0 -   8D48BB187947025902FF1EC266C94256        Source\LifePlay\LPCityMapsSubsystem.h
LF      0 842  0 -   79C7BBAF4FD72DA869A7AD0849D922F9        Source\LifePlay\LPCityMapsSubsystem.cpp
LF      0  15  0 -   308B46C40A43BC4180B66E46A07018DE        Content\Data\LPCityMaps.json
LF      0 194  0 -   30D9DFADB328AA71CCCE4610DEE6EDBF        Tools\IndexCartes.ps1
fichiers=4 LF=4 alertes=0 introuvables=0      (exit=0)

CR = 0 et pas de BOM sur les 4 fichiers neufs. Ce sont les tailles et les MD5 de l'IMPL § 1 « après » (8/8 identiques).

3.8 JSON livré (contrôle 8) : OK

Commande : Get-Content -Raw ... | Test-Json puis lecture des champs.

Test-Json: True
format=2
base=CentralLondon,00BathCC
villes=0
licences=osm,lifeplay_ancienne
osm.titre=Map data (c) OpenStreetMap contributors, ODbL 1.0
osm.fichier=Licenses/OpenStreetMap_Geodata_License.txt
lpa.fichier=Licenses/Vinfamy_License.txt
v2 longueur=333 ; json longueur=333
identique=True

Le titre lifeplay_ancienne est comparé à MAPDL1-SPEC-05-v2.md l. 99 (texte entre « et ») : identique, sensible à la casse, 333 caractères. S5-5 (SPEC v2 l. 133) reste « à valider par l'utilisateur » (§ 6).

Compilation de la syntaxe du JSON : 0 erreur (Test-Json).

3.9 Tools\IndexCartes.ps1 (contrôle 9) : OK

Commande : [System.Management.Automation.Language.Parser]::ParseFile(...) puis compte des octets :

erreurs de syntaxe: 0
octets>127: 0 ; CR: 0 ; taille: 10734

Essai à blanc : pwsh -NoProfile -File "...\Tools\IndexCartes.ps1" -Villes Manila -Hebergeur Forgejo -Owner exemple -Repo exemple -Tag t -ABlanc ; exit=$?. Sortie (extrait) :

packs retenus : 1 ; ecartes : 0 ; archives : D:\Game\LifePlay_Publication\Mods ; hebergeur : Forgejo
  "ville": "Manila", "version": "1.0.1", "jeu_min": "2026.10.2.2a", "jeu_max": "2026.12.99",
  "octets": 22075120,
  "sha256": "2ba28c4edfb98e7b0265be719e3a42489f0fd79b17268c6ee9f3fbe2dc08b4cf",
  "urls": [ "https://forgejo.edujiro5972.fr/exemple/exemple/releases/download/t/lpm_city_manila-1.0.1-for-LifePlay-2026.10.2.2a.zip" ]
a blanc : rien n'a ete ecrit
exit=0

SHA-256 de Manila = 2BA28C4E…B4CF en minuscules (2ba28c4edfb98e7b0265be719e3a42489f0fd79b17268c6ee9f3fbe2dc08b4cf). Critère atteint.

Non relu : PRODUCTION.csv (SPEC v1 § 2 C5 le cite comme source ; la fiche § 2.7 part des archives). La valeur octets 22075120 n'est donc pas recoupée par ce fichier.

3.10 Recomptage des journaux de build (sk-recount, sans recompiler)

Grep sur les deux journaux précis (pas sur le dossier portage, qui compte 704 fichiers) :

  • Éditeur MAPDL1-E2_Build_20261022-161830.log : 33 lignes error|warning|LPCityMapsSubsystem|ModdingExtraBPLibrary|Using Visual Studio|biblioth, dont 20 Warning: Plugin 'HyperAIStudio', 0 ligne error, 0 avertissement compilateur, 1 Using Visual Studio 14.50.35739 toolchain (...MSVC\14.50.35717).
  • Jeu MAPDL1-E2_Build_20261022-162140.log : 0 ligne error ni Warning, 1 ligne Using Visual Studio identique, [2/11] Compile ... LPCityMapsSubsystem.cpp, [8/11] Compile ... ModdingExtraBPLibrary.cpp, création de LifePlay.lib.

Concordance avec E2-BUILD § 4 : 0 erreur et 0 avertissement nouveau, confirmé.

Note : le total « 14 » (éditeur) et « 11 » (jeu) des étapes du journal diffère des « 9 unités » du résumé E2 ; le décompte des étapes [n/N] n'est pas celui des unités. Non résolu, sans incidence sur le verdict.

3.11 Contrôles hors fiche relevés

  • PubCheck.ps1 sur 11 fichiers (IMPL, E2, FICHE, les 4 fichiers E1, les 3 neufs, IndexCartes.ps1) : PubCheck : 0 constat(s), exit 0.
  • Chemins C:\Users : aucun dans ce livrable.

4. Diff lu en entier (fichiers, compte)

Fichier État Compte Lu
Plugins/.../Public/ModdingExtraBPLibrary.h M +5 −0 en entier
Plugins/.../Private/ModdingExtraBPLibrary.cpp M +19 −2 (3 hunks) en entier
Source/LifePlay/LifePlay.Build.cs M +4 −0 (ModdingExtra, Json, commentaire) en entier
Config/DefaultGame.ini M +1 −0 en entier
Source/LifePlay/LPCityMapsSubsystem.h ?? (neuf) 160 l. en entier
Source/LifePlay/LPCityMapsSubsystem.cpp ?? (neuf) 842 l. en entier
Content/Data/LPCityMaps.json ?? (neuf) 15 l. en entier
Tools/IndexCartes.ps1 ignoré (hors git) 194 l. en entier

Total des modifications E1 suivies : 4 fichiers, +29 −2 (IMPL : « 29 insertions, 2 deletions », cohérent avec les hunks). Total des fichiers neufs : 4 (3 dans git, 1 hors git).

Aucun Blueprint modifié (§ 3.2). Aucune modification de STM1 (§ 3.3). Aucun fichier de Mods\ touché (contrôle implicite : git status ne montre rien sous Mods/).

5. Verdict et contrôles de la fiche

# Contrôle (fiche § 3, lp-validate) Verdict Motif
1 Périmètre OK 4 M E1 et 3 neufs E1 + Tools hors git, exactement comme annoncé.
2 Aucun Blueprint modifié OK git status vide sous Content/UI et Content/BPs, 0 fichier écrit après 15:55 sur 312.
3 Fichiers STM1 inchangés OK (réserve) 9/9 MD5 identiques au relevé de l'IMPL ; référence « avant » absente du tableau IMPL § 1 ; dates 21/10 antérieures.
4 DefaultGame.ini : une ligne OK 1 insertion, +DirectoriesToAlwaysStageAsUFS=(Path="Data").
5 ModdingExtra : seulement le crochet OK, écart mineur Crochet conforme ; C-14 : 2 lignes à espaces de fin normalisées (non logique).
6 Fiche § 2.2 à 2.4 OK Huit exigences vérifiées ligne à ligne (§ 3.6).
7 Fins de ligne OK M : i/lf w/lf ×4 ; neufs : 0 CR, pas de BOM, LF ×4.
8 JSON livré OK Test-Json True ; format 2 ; base ; 2 licences ; villes vide ; titre identique au v2 § 4.
9 IndexCartes.ps1 OK 0 erreur de syntaxe ; 0 octet > 127 ; LF ; essai code 0 ; SHA-256 Manila en minuscules.

Verdict global : PASS-STATIC.

Recomptage (sk-recount) :

Élément Valeur du livrable (IMPL) Valeur recomptée Méthode Verdict
Fichiers M E1 4 4 git status --short, préfixe M confirmé
Fichiers neufs E1 3 (+ Tools) 3 ?? + Tools ignoré git status, check-ignore confirmé (??, pas A)
Lignes .h / .cpp / .cs / .ini +5 / +19 −2 / +4 / +1 +5 / +19 −2 / +4 / +1 lecture des hunks confirmé
Lignes neufs (h, cpp, json, ps1) 160 / 842 / 15 / 194 160 / 842 / 15 / 194 FileCheck.ps1 confirmé
MD5 après, 8 fichiers E1 8 valeurs 8 valeurs identiques FileCheck.ps1 (même outil : pas un recomptage indépendant) confirmé
MD5 STM1 9 valeurs (IMPL Constats 2) 9 identiques Get-FileHash confirmé (après) ; avant non vérifiable
MD5 avant, 4 M E1 IMPL § 1 = manifest.csv lecture du manifeste confirmé
Erreurs de compilation 0 0 Grep des deux journaux confirmé
Avertissements nouveaux 0 (20 connus) 0 compilateur, 20 UBT connus Grep confirmé
Blueprints modifiés 0 0 git status, Get-ChildItem confirmé
git status total non fourni 168 (16:2x), 167 (16:1x) git status --short écart de temps, voir § 7

Témoin en jeu : à créer (cas à demander à l'orchestrateur). MAPDL1-E4-TESTS.md existe (16:28, non relu) : peut être le lieu du cas.

6. Points à confirmer par l'utilisateur (cases)

  • E-1 : ticker FTSTicker de 0 s (fiche § 2.3, retenu) plutôt que OnWorldPostActorTick (SPEC v1 § 2 C3). À accepter ?
  • O1 : les entrées des villes servies par un pack ne sont pas ajoutées à la liste (SPEC v1 § 2 C2 dit « ajoute » ; la fiche dit seulement « retire »). À confirmer en jeu (V-8).
  • C-14 : deux lignes à espaces de fin normalisées dans ModdingExtraBPLibrary.cpp. À accepter ?
  • O5 : nom du paramètre d'hébergeur. SPEC v3 § 1 écrit -Principal ; la fiche et l'IMPL écrivent -Hebergeur et -Modele. Lequel garder ? Et -Miroir avec {tag} (exemple de SPEC v3 § 1) : le script ne remplace que {zip}, {tag} reste littéral dans l'URL.
  • V-13 : ordre de commit E1 et STM1 (LPAssetRegistryHelpers.* encore en M). Décision du gardien.
  • S5-5 : texte de licence des anciennes cartes (SPEC v2 § 4) validé ? Il est repris dans le JSON livré.
  • Écarts E2 (hors E1, relevés par BUILD) : (a) jeu compilé sans -NoUBA (lp-build § 2, U6) ; (b) résumés rangés dans etat\MAPDL1-E2\ au lieu de etat\REL\MAPDL1\ (EtatDir.ps1 ne connaît pas le lot). À trancher par l'orchestrateur.

7. Constats

  • Fichiers écrits : ce livrable seul, D:\Game\LifePlay-master 5.8\Docs\Migration\etat\REL\MAPDL1\MAPDL1-E3-VAL.md. Aucun fichier du projet modifié. Fichiers à commiter : aucun (la VAL ne commite pas).
  • Mesuré (établi) : toutes les sorties citées ci-dessus, relevées le 2026-10-22, dernier relevé 16:30:47.
  • Arbre vivant : entre le premier et le dernier relevé, git status passe de 167 à 168 entrées (?? 148 à 149). Entrée nouvelle non identifiée ; les fichiers modifiés depuis 16:00 (recent : Docs/.../BOSS-JOURNAL.md, Source/LifePlayEditorTools/LPBuildCityLandmarksCommandlet.cpp à 16:30:18, PROD1/..., MAPDL1-E4-TESTS.md à 16:28) relèvent d'autres lots. Aucun fichier E1 n'a bougé : MD5 après relevés en fin de validation = relevés de l'IMPL.
  • Estimé : cette VAL ne compte pas les fichiers modifiés par d'autres lots pendant la validation, faute de fiche dédiée.
  • Non mesuré : chargement dans le jeu, cuisson, comportement du menu, bandeau, clic, LPTestStringCompat (interdit ici), PRODUCTION.csv, MAPDL1-E0-INV.md.

Observations pour l'orchestrateur (non bloquantes, sources citées) :

  • O1 (MAPDL1-SPEC-05.md § 2 C2, « ajoute celles des villes servies par un pack ») : la fiche et l'IMPL ne font que retirer. Risque : une ville installée par pack sans gabarit dans Content\Heavy\StreetMap n'apparaîtrait pas. E0 indique que les 280 villes ont un gabarit, donc risque faible ; V-8 en jeu tranche.
  • O2 (SPEC v1 C3, OnWorldPostActorTick ; lp-city § 3, R12-14) : le code suit la fiche (FTSTicker). La réinsertion ClearChildren/AddChild (l. 660-669) touche aussi les lignes Installed : texte et clic non modifiés par le code, mais le widget est retiré puis réinséré (V-6).
  • O3 (SPEC v1 C1 : Config/LPCityMaps.json ; C5 : PRODUCTION.csv) : la fiche a choisi Content/Data/LPCityMaps.json et les archives. La fiche prime ; à noter dans la SPEC.
  • O4 (SPEC v1 C1 : GetDownloadInfo, ManifestUrl facultatif D8) : remplacés par GetDownloadBytes/GetDownloadUrls (fiche § 2.2) ; ManifestUrl non implémenté (hors fiche).
  • O5 (SPEC v3 § 1) : voir § 6.
  • O6 (IndexCartes.ps1 l. 183) : la sortie passe par -replace "rn", donc LF ; OK.

À verser : lp-validate § 2 — Tools\Build.ps1 -FromLog écrit un résumé dans etat\ ; pour un lot absent de Tools\EtatDir.ps1 (MAPDL1-E2-VAL), en VAL recompter par Grep sur le journal, sans lancer le script.

Tours : 9 / 25